0

所以我不知道如何正确导入 java 类。我正在使用eclipse tomcat 7和liferay。在 liferay 中是一个包含 img 文件的目录,我将使用 java 打开该目录。这很好用(本地),我得到一个带有路径的数组。所以我将在 jsp 中的 liferay 中创建一个 portlet,并在 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: 
4

3 回答 3

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);
%>
于 2013-04-03T11:34:09.027 回答
2

System.out.println()将在您的标准输出中打印消息(这将是服务器日志或您启动服务器的控制台)。HttpServletResponse.getWriter()如果您希望在网页中显示,您需要使用打印的东西。

但是,您所展示的是一种非常奇怪的方式来编写 Java Web 应用程序并使用 JSP...

于 2013-04-03T11:28:00.937 回答
1

你的类OpenDir驻留在一个名为life_ray. 因此,您需要将导入更改为

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

不过,我不建议在包名称中使用下划线。

编辑:

此外,您正在尝试输出该Dir()方法的值,该值是无效的,因此除了在日志文件中之外,您不会得到任何输出。正如另一个答案中提到的,您的模式是编写 Web 应用程序的一种奇怪方式。

于 2013-04-03T11:26:12.733 回答