Java h:dataTable无法显示不同的行。它显示的是相同的行,甚至是传递给它的值列表
我有一个从数据库中提取数据的数据表。当我必须提取一行数据时,我的方法工作得很好。但是当我有很多行时,我的方法就不起作用了。它一次又一次地打印相同的行 以下是我的IssuanceBean.java代码: EmployeeDutySchedule只是充当某些字符串(如emp ID、first_name、last_name等)的getter和setter的中介 My Taskservices.java是执行查询的java文件,方法如下:Java h:dataTable无法显示不同的行。它显示的是相同的行,甚至是传递给它的值列表,java,sql,jsf-2,datatable,xhtml,Java,Sql,Jsf 2,Datatable,Xhtml,我有一个从数据库中提取数据的数据表。当我必须提取一行数据时,我的方法工作得很好。但是当我有很多行时,我的方法就不起作用了。它一次又一次地打印相同的行 以下是我的IssuanceBean.java代码: EmployeeDutySchedule只是充当某些字符串(如emp ID、first_name、last_name等)的getter和setter的中介 My Taskservices.java是执行查询的java文件,方法如下: public List<EmployeeDutyS
public List<EmployeeDutySchedule> IssuanceTask()
{
List<EmployeeDutySchedule> empDutyList=new ArrayList<EmployeeDutySchedule>();
EmployeeDutySchedule empDuty=new EmployeeDutySchedule();
ResultSet rs=null;
String query="Select employee_duty_schedule.emp_id, first_name, last_name, emp_designation, description, task_allocated_id \n" +
"From\n" +
" transport_department_schema.employee_duty_schedule, \n" +
"transport_department_schema.m_subtasks, transport_department_schema.employees_information WHERE\n" +
" employees_information.emp_id=employee_duty_schedule.emp_id AND\n" +
"employee_duty_schedule.task_allocated_id=m_subtasks.subtask_id\n" +
"AND employee_duty_schedule.task_allocated_id LIKE 'L001%'; ";
System.out.println(query);
rs=MyQueryExe.executeQuery(query);
System.out.println("rs "+rs);
try
{
while(rs.next())
{
empDuty.setEmpID(rs.getString("emp_id"));
empDuty.setFirstName(rs.getString("first_name"));
empDuty.setLastName(rs.getString("last_name"));
empDuty.setSubTaskID(rs.getString("emp_id"));
empDuty.setTaskDescription(rs.getString("emp_id"));
empDuty.setDesignation(rs.getString("emp_designation"));
empDutyList.add(empDuty);
System.out.println("size of list "+empDutyList.size());
}
}
catch(SQLException e)
{
e.getStackTrace();
}
return empDutyList;
}
我已经检查了数据库上的查询,它运行得很好
现在,我的xhtml数据表:
我正在显示[在db中运行查询后]所需的数据表的屏幕截图:
!![图片][1]:
现在我展示的是我得到的:
!![图片一][2]:
我无法理解如何打印正确的行 您必须将EmployeeDutySchedule empDuty=新EmployeeDutySchedule;进入whilers.next{…}部分。使用当前代码,您将更新相同的对象属性,并继续添加相同的对象。为结果集中的每一行创建新实例
public List<EmployeeDutySchedule> IssuanceTask()
{
List<EmployeeDutySchedule> empDutyList=new ArrayList<EmployeeDutySchedule>();
EmployeeDutySchedule empDuty=new EmployeeDutySchedule();
ResultSet rs=null;
String query="Select employee_duty_schedule.emp_id, first_name, last_name, emp_designation, description, task_allocated_id \n" +
"From\n" +
" transport_department_schema.employee_duty_schedule, \n" +
"transport_department_schema.m_subtasks, transport_department_schema.employees_information WHERE\n" +
" employees_information.emp_id=employee_duty_schedule.emp_id AND\n" +
"employee_duty_schedule.task_allocated_id=m_subtasks.subtask_id\n" +
"AND employee_duty_schedule.task_allocated_id LIKE 'L001%'; ";
System.out.println(query);
rs=MyQueryExe.executeQuery(query);
System.out.println("rs "+rs);
try
{
while(rs.next())
{
empDuty.setEmpID(rs.getString("emp_id"));
empDuty.setFirstName(rs.getString("first_name"));
empDuty.setLastName(rs.getString("last_name"));
empDuty.setSubTaskID(rs.getString("emp_id"));
empDuty.setTaskDescription(rs.getString("emp_id"));
empDuty.setDesignation(rs.getString("emp_designation"));
empDutyList.add(empDuty);
System.out.println("size of list "+empDutyList.size());
}
}
catch(SQLException e)
{
e.getStackTrace();
}
return empDutyList;
}
<h:dataTable value="#{issuanceBean.issuanceList}" var="u" rendered='true'
styleClass="infoTable" headerClass="dataTableHeader" rowClasses="dataTableRow">
<h:column>
<f:facet name="header">
Task ID
</f:facet>
#{u.subTaskID}
</h:column>
<h:column>
<f:facet name="header">
Task Description
</f:facet>
#{u.taskDescription}
</h:column>
<h:column>
<f:facet name="header">
Employee ID
</f:facet>
#{u.empID}
</h:column>
<h:column>
<f:facet name="header">
First Name
</f:facet>
#{u.firstName}
</h:column>
<h:column>
<f:facet name="header">
Last Name
</f:facet>
#{u.lastName}
</h:column>
<h:column>
<f:facet name="header">
Designation
</f:facet>
#{u.designation}
</h:column>
</h:dataTable>