2014-09-25 140 views
0

我想将我创建的ArrayList传递给JSP页面,但我尝试执行此操作时遇到困难。这是我到目前为止。在JSP上使用Java中的ArrayList页面

的Java类:

public class Main { 

    private ArrayList<Employee> employees = new ArrayList<Employee>(); 

    public Main(){ 
     try{ 
      BufferedReader br = new BufferedReader(new FileReader("lang.txt")); 
      String line; 
      String[] employee; 
      Employee employeeObject; 
      br.readLine(); 
      while ((line = br.readLine()) != null) { 
       employee = line.split(","); 
       employeeObject = new Employee (employee[0], employee[1], employee[2], employee[3], employee[4], employee[5], employee[6]); 
       employees.add(employeeObject);    
      } 
      br.close(); 
     } 
     catch(IOException e){ 

     } 
    } 

    /** 
    * @return the employees 
    */ 
    public ArrayList<Employee> getEmployees() { 
     return employees; 
    } 

    /** 
    * @param employees the employees to set 
    */ 
    public void setEmployees(ArrayList<Employee> employees) { 
     this.employees = employees; 
    } 

} 

JSP页面:

<%@page import="lab3final.beans.Employee"%> 
<%@page import="java.util.ArrayList"%> 
<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<jsp:useBean id="employee" scope="session" class="lab3final.beans.Main"/> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Table Data</title> 
    </head> 
    <body> 

     <h1>Data in text file in table format</h1><br> 
     <c:forEach items="${employee.employees}" var="item"> 
      ${item}<br/> 
     </c:forEach> 
    </body> 
</html> 

这将是巨大的,如果有人可以给我什么,我做错了一些想法。我无法读取我在JSP页面上创建的ArrayList。

更新:我发现问题是我必须给我的文本文件lang.txt的完整路径,否则它将搜索该文件在其他不是我的主项目目录的其他目录中。我猜这是在我尝试在类的构造函数中使用FileReader读取文件时搜索文件的默认位置。

现在我可以打印出所有使用${employee.employees}的员工,它将使用我在员工类中定义的toString()方法打印出所有员工。我仍然试图弄清楚如何在JSP中使用循环函数,这样我就可以遍历每个员工。

+0

列表中没有任何内容?你可以在你尝试循环之前通过放置''来确认吗? – Makoto 2014-09-25 21:05:35

+0

什么是java类和jsp之间的“链接”? Struts2的?什么?怎么样?它在哪里部署? – eduyayo 2014-09-25 21:07:29

+1

尝试发布[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。请仔细阅读http://stackoverflow.com/tour和http://stackoverflow.com/help/on-topic – ericbn 2014-09-25 21:08:34

回答

0

我想出了问题所在。这是我的一个愚蠢的错误。我忘了添加在JSP页面的顶部这一行:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 

这就是为什么forEach循环没有工作。一旦我将该行添加到页面顶部,该循环就可以很好地工作,并且可以遍历每个员工对象。谢谢你们的帮助!

0

在您的jsp页面中调用您的员工类的每个变量。确保你的员工对象具有所有必要的吸气和吸气器。 $ {item.variable1},$ {item.variable2}

+0

我的构造函数被调用,否则我会在我的JSP页面上看到任何空列表。但在这种情况下,当我打印'$ {employee.employees}'时,我得到了所有员工的列表。我只需要弄清楚如何遍历每个员工,这样我就可以在JSP页面上以表格格式正确打印出来。 – 2014-09-25 22:38:13

+0

检查编辑。这应该工作。 – shinjw 2014-09-25 22:44:47

+0

我的员工类拥有所有的获取者和设置者。例如,一个变量被称为“first”,它具有和设置它的方法以及它的get方法。但是,我无法访问JSP页面上的“第一个”变量。 – 2014-09-25 23:08:42