2013-04-03 4 views
0

, поэтому я не знаю, как правильно импортировать класс java. Im работает с eclipse tomcat 7 и liferay. в liferay - это каталог с файлами img, я открою каталог с java. thats работает отлично (локально), я получаю массив с путями. поэтому я создам портлет в liferay в jsp и получаю массив в jsp. есть идеи? мой JSP:Java класс в jsp

<%@ page import ="OpenDir" %> 
<%@ page import="java.io.File"%> 

<%= 
    OpenDir.Dir() 
%> 

мой Java:

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: 
+0

при импорте OpenDir попробуйте передать полностью квалифицированное имя класса в верхнем ввозе – AurA

ответ

2

Ехать с ответами уже сделали, возможно, имеет смысл начать реорганизовать код:

Java:

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); 
%> 
+0

wow хорошо этот форум очень быстро я думаю: D. Спасибо за это.Поэтому в моем первом коде java я получаю вывод в консоли всех файлов в каталоге с моим html-кодом спереди и сзади прошлого. я буду использовать это для импорта в любом случае в моем view.jsp, где больше html-кода, и поэтому я покажу фотографии в каталоге. – GoE

+0

Да, вам нужно использовать неявную переменную 'out' в JSP, чтобы заставить Java вносить вклад в вывод JSP. На этой странице отображаются неявные переменные - http://www.tutorialspoint.com/jsp/jsp_implicit_objects.htm –

+0

в вашем коде w.println неверно. eclipse показывает ошибку: метод println (string) не определен для типа Writer. – GoE

1

Вы класс OpenDir находится в пакете с именем life_ray. Поэтому вам необходимо изменить ваш импорт на

<%@ page import ="life_ray.OpenDir" %> 

Я бы не рекомендовал подчеркивать имена пакетов.

Edit:

Кроме того, вы пытаетесь вывести значение Dir() метода, который является недействительным, так что вы не получите никакого вывода кроме того, в файле журнала. Как уже упоминалось в другом ответе, ваш шаблон - это странный способ написания веб-приложения.

+0

, поэтому я исправил его, но я не работаю. – GoE

+0

Это поможет, если вы включите дополнительную информацию о своей ошибке. – NilsH

+0

Знаете ли вы, где находятся файлы? портлеты находятся на веб-сервере tomcat. мой java-файл на самом деле в моем рабочем потоке на локальном c: \ я опубликую ошибку. – GoE

2

System.out.println() будет печатать сообщения в вашем stdout (это будет журнал сервера или консоль, с которой вы начали свой сервер). Вам нужно распечатать материал, используя HttpServletResponse.getWriter(), если вы хотите, чтобы это отображалось на веб-странице.

Однако то, что вы показали это действительно странно способ написания Java веб-приложения и использовать JSP ...

+0

Конечно, вы заметите выше, как только вы правильно импортируете свой класс, как показано @NilsH. –

Смежные вопросы