2017-12-01 23 views
0

이것은 bean 클래스의 my function입니다. 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에서 해시 맵의 각 값과 키를 표시 할 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> 

입니다. 이걸 도와주세요.

심지어 내가 scriplet 태그를 사용하여 시도 ... 그러나 반복 할 때 난 단지 반복의 모든 항목의 Map.Entry의 istance입니다

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

.. 해시 맵의 마지막 값을 얻고있다.

이 경우 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

그러나 scriplet 태그를 사용하지 않고 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 "); \t \t퍼센트> \t \t productPrice 인 <% = p.productPrice %> \t \t 제품명 인 <% = p.productName %> "P"는 context.getAttribute이 무엇 –