java - 将数组与 bean 一起从 servlet 传递到 jsp

标签 java jsp servlets arraylist package

我将一组 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>

我在服务器中收到以下错误: 处理 JSP 页面/WEB-INF/jsp/cameraList.jsp 第 44 行时发生异常:

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 >

最佳答案

request.getParameter() 总是返回一个字符串,它基本上用于从用户提交的表单中获取数据或从查询字符串中获取数据。 因为您正在调用 getParameter() ,所以它将返回 String,因此您会收到该异常。

根据您的问题,因为您将 onHand 字段的值设置为请求中的属性,所以您应该在 JSP 中调用 getAttribute() 方法。 getAttribute() 的返回类型是 Object。

关于java - 将数组与 bean 一起从 servlet 传递到 jsp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43692466/

相关文章:

java - 在给定数组中的单元格的情况下设置二维数组中的行、列和对角线元素的函数

javascript - 使用 Jquery 使嵌套 forEach 循环下的每个部分可折叠

java - 为什么 fn 是 :escapeXml() adding square brackets to String

java - Spring Controller 获取空对象

java - 冲突的 JAR : shouldn't WEB-INF/lib take precedence over all others places?

java 小服务程序 : get image from url and display it

servlets - 如何在Grails中以字符串形式获取真实路径

java - 被 Java 泛型类困住了

Java Rest Api 返回 404

java - 通过 moxy 在字段名称中使用斜杠将 POJO 转换为 JSON