2017-12-01 14 views
0

これはbeanクラスproduct.javaの私の関数です データベースから特定の詳細を選択し、データベースからの値をハッシュマップに入れます。 HashMapはクラス製品の一種です。返されたhashmapを反復し、jspを使用してすべての値を取得する方法

public HashMap<String,Products> showProducts() 
{ 
    HttpServletRequest request = null; 
    PreparedStatement preparedStatement; 
    HashMap<String,Products>productMap=new HashMap<String,Products>(); 
    try 
    { 
     preparedStatement = con.prepareStatement("select * from productdetails where producttype='toy'"); 

     ResultSet resultSet=preparedStatement.executeQuery(); 
     Products toy=new Products(); 
     while(resultSet.next()){ 
      toy.setProductId(resultSet.getInt(1)); 
      toy.setProductName(resultSet.getString(2)); 
      toy.setProductPrice(resultSet.getInt(3)); 
      productMap.put("toy",toy); 

      request.setAttribute("productSessionMap",productMap); 
     } 
       } 

    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
    return productMap; 

} 

これは、JSPページ

  <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
    <%@page import="java.util.Set"%> 
    <%@page import="java.util.HashMap"%> 
      <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
     <html> 
     <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
</head> 

<body> 
    Welcome!!!! <c:out value="${sessionScope.loginBean.userName}"></c:out> 
    <jsp:useBean id="loginBean" class="com.training.entity.ShoppingCart" 
    scope="session"></jsp:useBean> 
    <jsp:setProperty property="*" name="loginBean"/> 

    <c:set var="status" value="${loginBean.showProducts()}"></c:set> 
    <c:set var="keys" value="${status.keySet()}"></c:set> 
    <c:out value="${status.toString()}"></c:out> <!-- This line displays last value of hashmap-!> 

<c:forEach var="type" items="${productSessionMap}"> 
<c:out value="${type[keys]}"></c:out> 


</c:forEach> 


    </body> 
    </html> 

である私は、スクリプトレットタグを使用してwithous JSPでハッシュマップ内の各値とキーを反復処理し、表示したいです。これで私を助けてください。

も、私はスクリプトレットタグを使用してみました..しかし、すべての項目が繰り返しで..

<% 
    ShoppingCart ob=new ShoppingCart(); 

    HashMap<Integer,Products>newproductMap=new HashMap<Integer,Products>(); 
    newproductMap=ob.showProducts(); 
    Set<Integer>set = newproductMap.keySet(); 
for(Integer ent:set){ 
String name=newproductMap.get(ent).getProductName().toString();%> 
    <%=name%> 
    <%-- <%String value = ent.getValue().toString();%> 
    <%=value%> 
    --%> 
<%}%> 

答えて

0

を繰り返し処理を行う場合、私はハッシュマップの最後の値を取得していますがのMap.Entryのistanceです。

この場合、type varはMap.Entryになります。

あなたが最初に続いて

while(resultSet.next()){ 
       toy.setProductId(resultSet.getInt(1)); 
       toy.setProductName(resultSet.getString(2)); 
       toy.setProductPrice(resultSet.getInt(3)); 
       productMap.put(""+resultSet.getInt(1),toy);//here assign a new unique key 
      } 
//this must be moved outside of the while loop 
request.setAttribute("productSessionMap",productMap); 

あなたは$ {} type.valueこの値の各属性を持つ各のMap.Entryの値にアクセスすることができ、それぞれの新しい製品に新しいキーを割り当てる必要があります(型製品)そのgetterメソッド つまり$ {} type.value.productName

<table> 
      <tbody> 
       <tr> 
        <th>Product Id</th> 
        <th>Product Name</th> 
        <th>Product Price</th> 
       </tr> 
       <c:forEach items="${requestScope.productSessionMap}" var="type"> 
        <tr> 
         <td> 
          <c:out value="${type.key}"></c:out><!-- this is the key you specified in the map i.e. 'productId' --> 
         </td> 
         <td> 
          <c:out value="${type.value.productName}"></c:out> 
         </td> 
         <td> 
          <c:out value="${type.value.productPrice}"></c:out> 
         </td> 
        </tr> 
       </c:forEach> 
      </tbody> 
     </table> 
+0

しかし、スクリプトレットタグを使用せずに、JSPでこれを行うにはどのような方法があるの呼び出しにアクセスすることができます。 –

+0

ハッシュマップに重複キーを使用しました。それを見つけてくれてありがとう。 foreach VAR = "製品" 項目= "$ <:のforeach VAR = "製品" 項目= "$ {productSessionMap}" C> \t PRODUCTIDは$ {product.key}

+0

この のようなものを試してみてください{product.value} "> \t \t \t \t <% \t \t製品P =(製品)pageContext.getAttribute( "P")。 <%= p.productPrice%> \t \t商品名は次のとおりです:context.getAttributeの "P"(「Pは何ですか<%= p.productName%> –

関連する問題