2017-09-04 5 views
0

Ich kann nicht drucken oder Daten aus Arraylist von hashmap mit JSTL abrufen. Ich möchte Details wie bug_id, Erstellungsdatum, Zusammenfassung, Whiteboard jedes Bugs in Arraylist in einer Tabelle anzeigen. Im Folgenden sind JSP und Servlet-Code. Bitte schlagen Sie vor.Arraylist von hashmap mit JSTL nicht

home.jsp: -

<form action="IncomingBugs"> 
<table class="ui single line table"> 
<thead> 
<tr> 
    <th>Bug Id</th> 
    <th>Creation Date</th> 
    <th>Summary</th> 
    <th>Whiteboard</th> 
</tr> 
</thead> 
<tbody> 
    <c:forEach var="row" items="${list}"> 
    <tr> 
    <td><c:out value="${row.bug_id}"/></td> 
    <td><c:out value="${row.creation_ts}"/></td> 
    <td><c:out value="${row.short_desc}"/></td> 
    <td><c:out value="${row.status_whiteboard}"/></td> 
</tr> 
</c:forEach> 
</tbody> 
</table> 
</form> 

IncomingBugs.jsp: -

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
      OracleConnection oc=new OracleConnection(); 

    try { 
     ArrayList<HashMap<String, Object>> bugList=oc.getbugList(null); 

     ArrayList<HashMap<String, String>> blr=new ArrayList<HashMap<String, String>>(); 
     for (HashMap<String, Object> bugMap : bugList) 
     { 
      HashMap<String,String> bl=new HashMap<String, String>(); 
      String bugzilla_id = bugMap.get("bug_id").toString(); 
      String creation_ts = bugMap.get("creation_ts").toString(); 
      String short_desc = bugMap.get("short_desc").toString(); 
      String status_whiteboard=bugMap.get("status_whiteboard").toString(); 
      bl.put("bug_id", bugzilla_id); 
      bl.put("creation_ts", creation_ts); 
      bl.put("short_desc", short_desc); 
      bl.put("status_whiteboard", status_whiteboard); 
      blr.add(bl); 
     } 
     request.setAttribute("list",blr); 
     RequestDispatcher dispatcher = request.getRequestDispatcher("/home.jsp"); 
     dispatcher.forward(request, response); 

    } 

Im Folgenden finden Sie Java-Beispielcode von dem, was ich in der Tabelle drucken möchten: -

ArrayList<HashMap<String, Object>> bugList = (ArrayList<HashMap<String, Object>>)request.getAttribute("list"); 
for (HashMap<String, Object> bugMap : bugList) 
{   
    String bugzilla_id = bugMap.get("bug_id").toString(); 
    String creation_ts = bugMap.get("creation_ts").toString(); 
    String summary = bugMap.get("summary").toString(); 
    String status_whiteboard=bugMap.get("status_whiteboard").toString(); 
    out.println("<tr>"); 
    out.println("<td>"+bugzilla_id+"</td>"); 
    out.println("<td>"+creation_ts+"</td>"); 
    out.println("<td>"+summary+"</td>"); 
    out.println("<td>"+status_whiteboard+"</td>"); 
    out.println("</tr>"); 
} 
+0

Sie eine Fehlermeldung erhalten Sie? Oder was erwartest du und kannst mit diesem Code nicht kommen? * suggeriere fix * ist keine Frage. –

+0

Ich bekomme keinen Fehler. Ich möchte bug_id, creation_ts, summary, status_whiteboard in Tabelle drucken. Ich habe versucht, Java in Jsp aber immer noch nicht funktioniert https://stackoverflow.com/questions/46042030/http-status-500-unable-to-fetch-details-from-hashmap-to-jsp –

+0

nicht JSP EL Prüffelder? Es ist lange her, aber Sie legen ein Anfrage * Attribut * fest. –

Antwort

0

Versuchen Sie so

<td><c:out value="${row.get('bug_id')}"/></td> 
<td><c:out value="${row.get('creation_ts')}"/></td> 
<td><c:out value="${row.get('summary')}"/></td> 

Sie haben eine Liste von Karten. Im Wesentlichen enthält die Zeile also in jeder Iteration eine Map. Sie können die Notation row.get('key_name') verwenden, um den Wert für diesen Schlüssel aus der Karte abzurufen.

Und stellen Sie auch sicher, dass diese Taglib am oberen Rand der JSP-Seite als zweite Zeile hinzugefügt wird.

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

versuchte dies, aber es hat nicht funktioniert und keine Fehler generiert –

+0

Ok können Sie diese Zeile ändern ArrayList > bugList = oc.getbugList (null); to ArrayList > bugList = oc.getbugList (null); – muasif80

+0

Sind Sie sicher, dass Ihre Liste Daten enthält? – muasif80

0

es gelöst, indem Sie den Code von IncomingBugs.java zu jsp bewegen, aber ich bin immer noch herauszufinden, warum nicht in der Lage, dass die Arraylist nicht von Java übergeben wird Datei jsp? Können wir nicht auf diese Weise Servlet von jsp 'Form action = "IncomingBugs" beziehen?

Unten ist die fix: -

<% 
      OracleConnection oc=new OracleConnection();  
      try { 
       ArrayList<HashMap<String, Object>> bugList=oc.getbugList(null); 

       ArrayList<HashMap<String, String>> blr=new ArrayList<HashMap<String, String>>(); 
       for (HashMap<String, Object> bugMap : bugList) 
       { 
        HashMap<String,String> bl=new HashMap<String, String>(); 
        String bugzilla_id = bugMap.get("bug_id").toString(); 
        String creation_ts = bugMap.get("creation_ts").toString(); 
        String short_desc = bugMap.get("short_desc").toString(); 
        String status_whiteboard=bugMap.get("status_whiteboard").toString(); 
        bl.put("bug_id", bugzilla_id); 
        bl.put("creation_ts", creation_ts); 
        bl.put("short_desc", short_desc); 
        bl.put("status_whiteboard", status_whiteboard); 
        blr.add(bl); 

       } 
       request.setAttribute("list",blr); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      %> 


    <c:forEach items="${list}" var="maps"> 
    <tr> 
    <td>${maps['bug_id']} </td> 
    <td>${maps['creation_ts']} </td> 
    <td>${maps['short_desc']} </td> 
    <td>${maps['status_whiteboard']} </td> 
    </tr> 
    </c:forEach> 
Verwandte Themen