【发布时间】:2014-09-12 10:43:07
【问题描述】:
我想访问 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 标签 中访问这些值。尝试在 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();
输出是“lk.company.app.webapp.beans.CartBean@1608fae”。
谁能提供与上述 JSTL 等效的 JSP 代码?
【问题讨论】:
-
你还在用c标签吗?即使您删除了标签 java.sun.com/jsp/jstl/core" %>,您的 jsp 文件中是否还有在 scriptlet 中移回不是一个好的设计。