0

我正在一个管理站点上工作,用户可以在其中查看从数据库中以 jsp 形式显示的员工列表。该项目使用 java 类和 servlet。表单中包含员工详细信息以及一个将值设置为employeeID(数据库中的主键)的复选框。

 <input type="checkbox" value="${employee.empID}" name="empArray">

假设我选择了 8 名员工,我可以将他们的值传回 servlet 并将它们存储在数组列表中并打印出来。我现在正在努力实现的是使用数组列表中的 empID 来访问它们在数据库中的匹配值,这样我就可以根据存储在数组列表中的 id 创建一个员工表。

换句话说,如果 String[] empArray 包含员工 ID 的“5,7,9,20 ...等”,我希望能够在新表中显示他们的详细信息,以便导出报告数据。任何人都可以建议我解决这个问题的最佳方法吗?

下面是servlet代码

                 String[] employeeArray ;

                employeeArray  = request.getParameterValues("empArray"); 
                 if (employeeArray != null && employeeArray.length != 0)  

             {
                 System.out.println("You have selected: ");
                  String empID="";
                   for (int i = 0; i < employeeArray.length; i++) 
             {
                 empID+=employeeArray[i]+"\n";
             }
              System.out.println(empID);
              session.setAttribute("employeeArray",  empID);

             }
4

1 回答 1

0

您的代码(格式化)是:

String[] employeeArray ;
employeeArray  = request.getParameterValues("empArray"); 

if (employeeArray != null && employeeArray.length != 0){
    System.out.println("You have selected: ");
    String empID="";

    for (int i = 0; i < employeeArray.length; i++) {
        empID+=employeeArray[i]+"\n";
    }

    System.out.println(empID);
    session.setAttribute("employeeArray",  empID);

}

您添加到会话的值不是数组,而是字符串

我在下面编辑了您的代码。我尝试使用更好的名称,并假设您有一个代表 Employee 的类和一个查找数据库数据的服务。

...
EmployeeService service; // initialised else where
...

List<Employee> employees = new ArrayList<Employee>();
String[] employeeIds ;
employeeIds  = request.getParameterValues("empArray"); 

if (employeeIds != null && employeeIds.length != 0){
    String empID="";

    Employee employee;

    for (int i = 0; i < employeeIds.length; i++) {
        employee = service.find(employeeIds[i]); // get from database
        if(employee != null){
            employees.add(employee);
        }
    }

    session.setAttribute("employees",  employees);

}
于 2013-03-04T01:53:39.347 回答