访问JSP标记内的会话数组变量

时间:2014-09-12 10:43:08

标签: java jsp session jstl

我想在JSP标记中访问JSP会话数组值。我可以使用以下代码在JSTL标签内进行。

<c:forEach var="cartItem" items="${cart.cartItems}"
           varStatus="counter">


    <div class="each_amt_shwtot">
        <div class="eachamtshw_nametot" align="left"><h4>${cartItem.partNumber}</h4></div>
        <div class="eachamtshw_qty"><h4>${cartItem.quantity}</h4></div>
        <div class="eachamtshw_price"><h4>${cartItem.unitCost} LKR</h4></div>

    </div>

</c:forEach>

但是我想在JSP标记&lt; %%&gt;中访问这些值。我在JSP标记中尝试使用上面的代码时出错。

更新

不幸的是,提供的答案并不奏效。

List<CartItem> or Array[] carItems did not work. 

以下是CartBean文件

package lk.company.app.webapp.beans;

import java.util.ArrayList;

public class CartBean {
 private ArrayList alCartItems = new ArrayList();
 private double dblOrderTotal ;


 public void updateCartItem(String strItemIndex, String strQuantity) {
  double dblTotalCost = 0.0;
  double dblUnitCost = 0.0;
  int iQuantity = 0;
  int iItemIndex = 0;
  CartItemBean cartItem = null;
  try {
   iItemIndex = Integer.parseInt(strItemIndex);
   iQuantity = Integer.parseInt(strQuantity);
   if(iQuantity>0) {
    cartItem = (CartItemBean)alCartItems.get(iItemIndex-1);
    dblUnitCost = cartItem.getUnitCost();
    dblTotalCost = dblUnitCost*iQuantity;
    cartItem.setQuantity(iQuantity);
    cartItem.setTotalCost(dblTotalCost);
    calculateOrderTotal();
   }
  } catch (NumberFormatException nfe) {
   System.out.println("Error while updating cart: "+nfe.getMessage());
   nfe.printStackTrace();
  }

 }

 public void addCartItem(String strModelNo, String strDescription,
String strUnitCost, String strQuantity) {
  double dblTotalCost = 0.0;
  double dblUnitCost = 0.0;
  int iQuantity = 0;
  CartItemBean cartItem = new CartItemBean();
  try {
   dblUnitCost = Double.parseDouble(strUnitCost);
   iQuantity = Integer.parseInt(strQuantity);
   if(iQuantity>0) {
    dblTotalCost = dblUnitCost*iQuantity;
    cartItem.setPartNumber(strModelNo);
    cartItem.setModelDescription(strDescription);
    cartItem.setUnitCost(dblUnitCost);
    cartItem.setQuantity(iQuantity);
    cartItem.setTotalCost(dblTotalCost);
    alCartItems.add(cartItem);
    calculateOrderTotal();
   }

  } catch (NumberFormatException nfe) {
   System.out.println("Error while parsing from String to primitive types: "+nfe.getMessage());
   nfe.printStackTrace();
  }
 }

 public void addCartItem(CartItemBean cartItem) {
  alCartItems.add(cartItem);
 }

 public CartItemBean getCartItem(int iItemIndex) {
  CartItemBean cartItem = null;
  if(alCartItems.size()>iItemIndex) {
   cartItem = (CartItemBean) alCartItems.get(iItemIndex);
  }
  return cartItem;
 }

 public ArrayList getCartItems() {
  return alCartItems;
 }
 public void setCartItems(ArrayList alCartItems) {
  this.alCartItems = alCartItems;
 }
 public double getOrderTotal() {
  return dblOrderTotal;
 }
 public void setOrderTotal(double dblOrderTotal) {
  this.dblOrderTotal = dblOrderTotal;
 }

 protected void calculateOrderTotal() {
  double dblTotal = 0;
  for(int counter=0;counter<alCartItems.size();counter++) {
   CartItemBean cartItem = (CartItemBean) alCartItems.get(counter);
   dblTotal+=cartItem.getTotalCost();

  }
  setOrderTotal(dblTotal);
 }

}

但我可以使用JSTl代码打印该值,而不是在JSP标记内打印。

<div class="eachamtshw_price"><h10>${cart.orderTotal} LKR</h10></div>

我得到意想不到的结果, 当我使用以下代码时

String group=session.getAttribute("cart").toString();

输出是&#34; lk.company.app.webapp.beans.CartBean@1608fae &#34;。

任何人都可以为上述JSTL提供等效的JSP代码吗?

2 个答案:

答案 0 :(得分:0)

<%
   List<CartItem> cartItemsList = (List<CartItem>) session.getAttribute("cart");

    for(CartItem cartItem : cartItemsList) { %>
      <div class="each_amt_shwtot">
        <div class="eachamtshw_nametot" align="left"><h4><%=cartItem.getPartNumber()%></h4></div>
        <div class="eachamtshw_qty"><h4><%=cartItem.getQquantity()%></h4></div>
        <div class="eachamtshw_price"><h4><%=cartItem.getUnitCost()%> LKR</h4></div>
      </div>
  <%  }   %>

可能您可以相应地修改此代码,但我假设您已在会话中存储了CartItem列表,因此使用上面的代码您可以获取购物车项目列表并对其进行迭代

答案 1 :(得分:0)

Array[] carItems = (Array[])session.getAttribute("cart");


 for(CarItem caritem: carItems){

 %>
 <div class="each_amt_shwtot">
        <div class="eachamtshw_nametot" align="left"><h4><%= caritem.getPartNumber() %></h4></div>
        <div class="eachamtshw_qty"><h4><%= caritem.getQuantity() %></h4></div>
        <div class="eachamtshw_price"><h4><%= caritem.getUnitCost() %> LKR</h4></div>

    </div>

 <% }%>