2013-12-26 2 views
2

Я попытался создать веб-приложение в MVC шаблон для отображения данных из БДArrayList перебирает те же данные

JSP:

<c:forEach var="pro" items="${list}"> 
      <tr> 
      <td><c:out value="${pro.reqno}"></c:out></td> 
      <td><c:out value="${pro.leave_Type}"></c:out></td> 
      <td><c:out value="${pro.no_of_days}"></c:out></td> 
      <td><c:out value="${pro.status}"></c:out></td> 
      <td><c:out value="${pro.balanceUnits}"></c:out></td> 
      <td><c:out value="${pro.totalUnits}"></c:out></td> 
      </tr> 
    </c:forEach> 

Servlet:

  ArrayList temp = summary.getSummary(objUsr); 
      request.setAttribute("list", temp); 
      RequestDispatcher rd = request.getRequestDispatcher("JSP/login-success.jsp"); 

DAO класс :

public ArrayList<LeaveSummary> getSummary(LeaveSummary objUsr) throws SQLException { 
    PreparedStatement stmt = null; 
    ArrayList<LeaveSummary> rowArray = new ArrayList<LeaveSummary>(); 
    ResultSet rs = null; 
    try { 
     LeaveSummary getValuesFromDb = new LeaveSummary(); 
     Connection con = ConnectionProvider.getCon(); 
     stmt = con.prepareStatement("SELECT * FROM create_request where username=?"); 
     stmt.setString(1, objUsr.getUser_name()); 
     rs = stmt.executeQuery(); 
     while (rs.next()) { 
      getValuesFromDb.setReqno(rs.getInt(1)); 
      getValuesFromDb.setUser_name(rs.getString(2)); 
      getValuesFromDb.setNo_of_days(rs.getInt(4)); 
      getValuesFromDb.setLeave_Type(rs.getString(3)); 
      getValuesFromDb.setStatus(rs.getString(6)); 
      getValuesFromDb.setTotalUnits(rs.getInt(7)); 
      getValuesFromDb.setBalanceUnits(rs.getInt(8)); 
      rowArray.add(getValuesFromDb); 
     } 
    } 
    catch(Exception e) 
      { 
     e.printStackTrace(); 
    } 

таблицы БД:


1 san     Casual      1 sicks    pending             10          9 
2 san     Others      2 Functional   pending             10          8 

Но он печатает вторую строку отдельно (то есть), который недавно добавил строку, Как я могу напечатать обе строки из моей таблицы

ответ

4

Создать новый экземпляр

LeaveSummary getValuesFromDb = new LeaveSummary(); 

в вашем цикле while. Вы не создаете новый экземпляр LeaveSummary для каждой записи в вашей базе данных. Так же один и тот же объект переписывается каждый раз, когда вы зацикливаете свой набор результатов. поэтому эта последняя запись существует только в списке.

+0

Благодаря она работала :) –

+0

вы Welcom :) – Keerthivasan

+0

мне нужно разъяснить с другим сценарием в одном приложении. можно продолжить это в чате –

2

Проблема заключается в том, чтобы модифицировать один и тот же объект и добавить его в список. Создайте новый объект внутри цикла while.

LeaveSummary getValuesFromDb = new LeaveSummary(); 
    Connection con = ConnectionProvider.getCon(); 
    stmt = con.prepareStatement("SELECT * FROM create_request where username=?"); 
    stmt.setString(1, objUsr.getUser_name()); 
    rs = stmt.executeQuery(); 
    while (rs.next()) { 
     //Add this line 
     getValuesFromDb = new LeaveSummary(); 
     getValuesFromDb.setReqno(rs.getInt(1)); 
     getValuesFromDb.setUser_name(rs.getString(2)); 
     getValuesFromDb.setNo_of_days(rs.getInt(4)); 
     getValuesFromDb.setLeave_Type(rs.getString(3)); 
     getValuesFromDb.setStatus(rs.getString(6)); 
     getValuesFromDb.setTotalUnits(rs.getInt(7)); 
     getValuesFromDb.setBalanceUnits(rs.getInt(8)); 
     rowArray.add(getValuesFromDb); 
    } 
1

Попробуйте этот код

LeaveSummary getValuesFromDb = new LeaveSummary(); 
    Connection con = ConnectionProvider.getCon(); 
    stmt = con.prepareStatement("SELECT * FROM create_request where username=?"); 
    stmt.setString(1, objUsr.getUser_name()); 
    rs = stmt.executeQuery(); 
    while (rs.next()) { 

     getValuesFromDb = new LeaveSummary(); 
     getValuesFromDb.setReqno(rs.getInt(1)); 
     getValuesFromDb.setUser_name(rs.getString(2)); 
     getValuesFromDb.setNo_of_days(rs.getInt(4)); 
     getValuesFromDb.setLeave_Type(rs.getString(3)); 
     getValuesFromDb.setStatus(rs.getString(6)); 
     getValuesFromDb.setTotalUnits(rs.getInt(7)); 
     getValuesFromDb.setBalanceUnits(rs.getInt(8)); 
     rowArray.add(getValuesFromDb); 
    } 
Смежные вопросы