2014-04-04 28 views
0

我想从数据库中显示的一些细节,所以我试图把通过列表查询返回的结果,查看网页,但它显示detils这样的:如何在jjsp页面上显示来自ModelMap属性的数据?

如果我在数据库then.It 10个细节展示一个细节10倍。

视图页细节:

<c:choose> 
     <c:when test="${not empty dtoBean}"> 
      <c:forEach items="${dtoBean}" var="upComLeave"> 
       <tr> 
        <td><span>${upComLeave.employee_id}</span></td> 
        <td><span>${upComLeave.no_of_leave}</span></td> 
        <td><span>${upComLeave.fromDate} - ${upComLeave.toDate}</span></td> 
        <td><span>${upComLeave.leaveType}</span></td> 
        <td><span>${upComLeave.leavePeriod}</span></td> 
        <td><span>${upComLeave.appliedLeave}</span></td> 
        <td><span>${upComLeave.leaveStatus}</span></td> 
        <c:if test="${upComLeave.leaveStatus ne 'Approved' }"> //check status if accepted, don't render Accept button 
         <td><button id="btnAccept" name="action" type="submit" value="Accept${upComLeave.emp_id}" onclick="">Approve</button></td> 
        </c:if> 
        <c:if test="${upComLeave.leaveStatus ne 'rejected' }">//check status if accepted, don't render Reject button 
        <td><button id="btnReject" name="action" type="submit" value="Reject${upComLeave.emp_id}">Reject</button></td> 
        </c:if> 
        <c:if test="${upComLeave.leaveStatus eq 'cancel' }">//check status if cancel, render cancel button 
        <td><button id="btnCancel" name="action" type="submit" value="Cancel${upComLeave.emp_id}">Cancel</button></td> 
        </c:if> 
       </tr> 
      </c:forEach> 
     </c:when> 
     <c:otherwise> 
      upcomingLeavesList is empty or null.. 
     </c:otherwise> 
     </c:choose> 

控制器类:

@RequestMapping(value = "/upcomingLeaves", method = RequestMethod.GET) 
      public String showForm(@ModelAttribute("loginForm")EmpRegistrationForm profileForm, BindingResult result , HttpServletRequest request, HttpServletResponse response, ModelMap model){ 


      try{   
        HttpSession session=super.getSession(model); 
        CommonDTOBean dtoBean=(CommonDTOBean)session.getAttribute("dtoBean"); 
        List upcomingLeavesList=LeaveStatusWorker.upcomingLeaves(dtoBean); 
        session.setAttribute("upcomingLeavesList", upcomingLeavesList); 

model.addAttribute("dtoBean",dtoBean); 

        return GlobalConstants.UPCOMING_LEAVES; 
        }catch(Exception e){ 

        } 


      return "redirect: GlobalConstants.UPCOMING_LEAVES";  
      } 

DTO服务类具有下面的方法来从数据库获取的信息:

public static List<CommonDTOBean> upcomingLeaves(CommonDTOBean dtoBean1) throws SQLException{ 
    con=DBConnection.getConnection(); 
    query= "select e.emp_id,e.LeaveType,e.leavePeriod,e.fromdate,e.todate,e.leave_status ,er.no_of_leave,e.no_of_leaves from EMPLEAVE e,newemp_register er where e.emp_id=er.emp_id " ; 
    PreparedStatement pstmt=con.prepareStatement(query); 
    System.out.println(GlobalConstants.LEAVE_STATUS); 
    rs=pstmt.executeQuery(); 

    List<CommonDTOBean> list=new ArrayList<CommonDTOBean>(); 

    while(rs.next()){ 


     dtoBean1.setEmployee_id(rs.getInt(1)); 
     dtoBean1.setLeaveType(rs.getString(2)); 
     dtoBean1.setLeavePeriod(rs.getString(3)); 
     dtoBean1.setFromDate(rs.getString(4)); 
     dtoBean1.setToDate(rs.getString(5)); 
     dtoBean1.setLeaveStatus(rs.getString(6)); 
     dtoBean1.setNo_of_leave(rs.getString(7)); 
     dtoBean1.setAppliedLeave(rs.getString(8)); 

     list.add(dtoBean1); 

    } 

    return list; 
    } 

和窗体豆类有:

public class CommonDTOBean { 
private int employee_id; 
    private String empName; 
    private String email; 
    private String designation; 
    private String password; 
    private String DOJ; 
    private String empType; 
    private String leaveStatus; 
    .. 
    .. 
    .. 
// all setters and getters 
} 

是否正确或我做错了什么?

回答

0

在这里,您传递一个对象并为每个记录更新并添加到列表中。这就是为什么它显示相同的结果。取而代之的是这样的

public static List<CommonDTOBean> upcomingLeaves() throws SQLException{ 
    con=DBConnection.getConnection(); 
    query= "select e.emp_id,e.LeaveType,e.leavePeriod,e.fromdate,e.todate,e.leave_status ,er.no_of_leave,e.no_of_leaves from EMPLEAVE e,newemp_register er where e.emp_id=er.emp_id " ; 
    PreparedStatement pstmt=con.prepareStatement(query); 
    System.out.println(GlobalConstants.LEAVE_STATUS); 
    rs=pstmt.executeQuery(); 

    List<CommonDTOBean> list=new ArrayList<CommonDTOBean>(); 

    while(rs.next()){ 

     CommonDTOBean dtoBean1 = new CommonDTOBean(); 
     dtoBean1.setEmployee_id(rs.getInt(1)); 
     dtoBean1.setLeaveType(rs.getString(2)); 
     dtoBean1.setLeavePeriod(rs.getString(3)); 
     dtoBean1.setFromDate(rs.getString(4)); 
     dtoBean1.setToDate(rs.getString(5)); 
     dtoBean1.setLeaveStatus(rs.getString(6)); 
     dtoBean1.setNo_of_leave(rs.getString(7)); 
     dtoBean1.setAppliedLeave(rs.getString(8)); 

     list.add(dtoBean1); 

    } 

    return list; 
    } 

你应该有新的CommonDTOBean对象获取每个记录。

+0

使用HashMap而不是List更好吗? – user3448105

+0

谢谢你,它帮我解决了这个问题 – user3448105

+0

有什么办法可以防止每次都创建新的对象吗?因为它会消耗每个对象的额外内存吗? – user3448105

相关问题