Java-класс в JSP
Поэтому я не знаю, как правильно импортировать класс Java. Я работаю с Eclipse Tomcat 7 и LifeRay. в liferay это каталог с IMG-файлами, я открою каталог с Java. Это хорошо работает (локально) и я получаю массив с путями. поэтому я создам портлет в liferay в jsp и получу массив в jsp. есть идеи? мой JSP:
<%@ page import ="OpenDir" %>
<%@ page import="java.io.File"%>
<%=
OpenDir.Dir()
%>
моя ява:
package life_ray;
import java.io.File;
public class OpenDir {
public static void Dir() {
int i = 0;
File directory = new File(
"C:\\Users\\Public\\Pictures\\Sample Pictures\\");
File[] contents = directory.listFiles();
for (File f : contents) {
f.getAbsolutePath();
i++;
}
String[] name = new String[i];
i = 0;
for (File f : contents) {
name[i] = f.getAbsolutePath();
i++;
}
i = 0;
for (File f : contents) {
name[i] = f.getAbsolutePath();
System.out.println("<img src=\"" + name[i] + "\" alt=\"\">");
i++;
}
}
}
so here is my error:
Caused by: org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 14 in the generated java file
Only a type can be imported. life_ray.OpenDir resolves to a package
An error occurred at line: 7 in the jsp file: /view.jsp
OpenDir cannot be resolved
4: <body>
5:
6: <%=
7: OpenDir.Dir()
8: %>
9:
10:
3 ответа
Чтобы перейти к уже сделанным ответам, возможно, имеет смысл начать рефакторинг вашего кода:
Джава:
package life_ray;
import java.io.File;
import javax.servlet.jsp.JspWriter;
public class OpenDir {
public static File[] listSamplePictures() {
File f = new File("C:\\Users\\Public\\Pictures\\Sample Pictures\\");
return f.listFiles();
}
public static void printSamplePictures(JspWriter w) {
File[] files = listSamplePictures();
for (int i = 0; i < files.length; i++) {
w.println("<img src=\"" + files[i].getAbsolutePath() + "\" alt=\"\">");
}
}
}
JSP:
<%
java.io.File[] files = life_ray.OpenDir.listSamplePictures();
for (int i = 0; i < files.length; i++) {
out.println("<img src=\"" + files[i].getAbsolutePath() + "\" alt=\"\">");
}
%>
или же
<%
life_ray.OpenDir.printSamplePictures(out);
%>
System.out.println()
будет печатать сообщения в вашем стандартном выводе (это будет журнал сервера или консоль, с которой вы запустили сервер). Вы должны напечатать материал, используя HttpServletResponse.getWriter()
если вы хотите, чтобы это было показано на веб-странице.
Однако то, что вы показали, это действительно странный способ написания Java-приложений и использования JSP...
Ты класс OpenDir
находится в пакете с именем life_ray
, Так что вам нужно изменить свой импорт на
<%@ page import ="life_ray.OpenDir" %>
Я не рекомендовал бы подчеркивать в названиях пакетов все же.
Редактировать:
Кроме того, вы пытаетесь вывести значение Dir()
метод, который является пустым, так что вы не получите никакого вывода, кроме как в файле журнала. Как уже упоминалось в другом ответе, ваш шаблон - это странный способ написания веб-приложения.