2017-09-04 7 views
0

jstlを使用してハッシュマップのarraylistからデータを印刷または取得できません。 bug_id、作成日、要約、arraylistに存在する各バグのホワイトボードなどの詳細をテーブルに表示したい。以下はJSPとサーブレットのコードです。修正を提案してください。JSTLでハッシュマップのarraylistを繰り返すことができません

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); 

    } 

は、私が表に印刷したいもののJavaサンプル・コードである: -

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

エラーメッセージが表示されますか?あるいは、このコードでは何が期待できますか? *修正*は質問ではありません。 –

+0

私は何の誤りもありません。私は、bug_id、creation_ts、summary、status_whiteboardを表に出力したい。私はJSPでJavaを使用しようとしましたが、まだ動作していませんhttps://stackoverflow.com/questions/46042030/http-status-500-unable-to-fetch-details-from-hashmap-to-jsp –

+0

JSP ELチェックスコープ?それは長い時間がかかりましたが、あなたはリクエスト属性*を設定しています。 –

答えて

0

このようにしてみてください

<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> 

マップの一覧があります。したがって本質的に行には各繰り返しでマップが保持されます。 row.get('key_name')という表記を使用して、そのキーに対する値をマップから取得できます。

また、このtaglibがjspページの上部に2行目として追加されていることを確認してください。

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

これを試しましたが、動作せずエラーも発生していません –

+0

この行は変更できますか?ArrayList > bugList = oc.getbugList(null); to ArrayList >バグリスト= oc.getbugList(null); – muasif80

+0

リストにデータがありますか? – muasif80

0

は、JSPにIncomingBugs.javaのコードを移動して、それを解決しましたが、私はまだ、なぜArrayListには、JSPファイルにJavaから渡されていないことを把握することはできませんよ? このようにjspのフォームaction = "IncomingBugs"からサーブレットを参照することはできませんか?以下は

修正です: -

<% 
      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> 
関連する問題