【发布时间】:2017-09-27 07:06:24
【问题描述】:
我将一组bean 从servlet 传递到jsp。我还想为每个 bean 发送状态“onHand”。我正在使用 arrayList 作为状态。
在 Servlet 中:
import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import pckg.ProductBean;
public class GetProducts extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
PrintWriter out = response.getWriter();
Vector<String[]> v = DBHelper.runQuery("SELECT * FROM SKU;");
ProductBean [] beans = new ProductBean[v.size()];
ArrayList<String> onHand=new ArrayList<String>();
//onHand.add("a");
for(int i=0; i < v.size(); i++) {
String [] tmp = v.elementAt(i);
Vector<String[]> on = DBHelper.runQuery("SELECT on_hand_quantity FROM on_hand where sku='"+tmp[0]+"' ;");
if((on.size())>0){
String [] tmp1 = on.elementAt(0);
if(Integer.parseInt(tmp1[0])>0){
onHand.add("InStock");}
else if(Integer.parseInt(tmp1[0])==0){
onHand.add("MoreOnTheWay");
}
}
beans[i] = new ProductBean(tmp[0],tmp[1],tmp[2],tmp[3],tmp[4],
tmp[5],tmp[8],Double.parseDouble(tmp[6]),Double.parseDouble(tmp[7]));
}
request.setAttribute("p_beans",beans);
request.setAttribute("onHand",onHand);
String toDo = "/WEB-INF/jsp/cameraList.jsp";
RequestDispatcher dispatcher = request.getServletContext().getRequestDispatcher(toDo);
dispatcher.forward(request, response);
}
}
在 JSP 页面中:
<%@ page import = "java.util.*"%>
<%@ page import="java.io.*" %>
<%@ page import="java.net.*" %>
<%@page import="java.util.ArrayList" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
<link rel="stylesheet" href="../css/cameraList.css" type="text/css"></link>
<script src="../script/jquery.js"></script>
<script src="../script/cameraList.js"></script>
</head>
<body>
<div id="main">
<% ArrayList<String> onHand=(ArrayList<String>) request.getAttribute("onHand");%>
<c:forEach items="${p_beans}" var="item">
<table >
<tr><td rowspan=5><img id="image" src="upload_dir/${item.image}" style="height:350px; width:350px; background-color:yellow";></td>
<td><b> ${item.vendor} ${item.model} ${item.category}</b></td></tr>
<tr><td width=45%> Price:$${item.retail}</td><td>Status:</td></tr>
<c:url value="/servlet/GetProductDetails?" var="myURL">
<c:param name="sku" value="${item.sku}" />
</c:url>
<tr><td><a href="${myURL}" >Get Details</a></td>
<c:url value="/servlet/OrderPage" var="cartURL">
<c:param name="itemID" value="${item.sku}" />
</c:url>
<td><a href="${cartURL}">Add To Cart</a></td></tr>
</table>
</c:forEach>
</div>
</body>
</html>
我在服务器中收到以下错误: 在第 44 行处理 JSP 页面 /WEB-INF/jsp/cameraList.jsp 时发生异常:
41: <body>
42:
43: <div id="main">
44: <% ArrayList<String> onHand=(ArrayList<String>) request.getAttribute("onHand");%>
45: <c:forEach items="${p_beans}" var="item">
46:
47: <table >
【问题讨论】:
-
假设您在控制器中传递一个字符串属性,并在 JSP 中期望一个
(ArrayList<String>。 -
尝试这样做。
<% ArrayList<String> onHand=(ArrayList<String>) request.getAttribute("onHand");%> -
处理 JSP 页面 /WEB-INF/jsp/cameraList.jsp 在第 44 行发生异常:41: 42:43:44: onHand=(ArrayList
) request.getAttribute("onHand");%> 45: 46: 47:)
标签: java jsp servlets arraylist packages