我想在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代码吗?
答案 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>
<% }%>