繁体   English   中英

如何从JSP页面检索会话中放置的数组?

[英]How can I retrieve an array put in session from a JSP page?

我有以下问题。

在实现HttpServlet接口的自定义servlet的service()方法中,我将自定义对象数组以这种方式放入会话中:

// The collection that have to be shown in a table inside the JSP view:
SalDettaglio[] salDettaglio = this.getSalDettaglioList();

HttpSession session = req.getSession(false);
session.setAttribute("salDettaglio", salDettaglio);

然后,我想将此数组salDettaglio检索到我的JSP页面中。 所以我正在尝试做这样的事情:

<%@ page import="com.myproject.xmlns.EDILM.SalReport.SalDettaglio" %>
<!-- showSalwf.jsp -->
<html>
<head>
</head>
<body>

<%
    out.println("TEST SALWF");

    SalDettaglio[] salDettaglio = request.getParameter("salDettaglio");

%>

</body>
</html>

问题是此行发生错误:

SalDettaglio[] salDettaglio = request.getParameter("salDettaglio");

IDE对我说:

不兼容的类型。 必需:com.myproject.xmlns.EDILM.SalReport.SalDettaglio []找到:java.lang.String

为什么? 我该如何解决这个问题?

您已将object存储在session ,但是您正在从request中访问它

HttpSession session = req.getSession(false);
SalDettaglio[]= (SalDettaglio) session.getAttribute("salDettaglio");

另外,您需要使用request#getAttribute 请参见getAttribute()和getParameter()之间的区别

另一方面,您可以使用简单的EL表达式来访问requestsession范围中的元素,

 ${sessionScope.salDettaglio}

在过去的几十年中,使用scriptlet被认为是不好的做法。 看一下如何避免JSP文件中的Java代码?

您可以使用EL,这是JSP中的首选。

<c:out value="${sessionScope.salDettaglio}"/>

或者,如果名称值是HTML安全的,则可以使用

${sessionScope.salDettaglio}

确保JSP是允许访问会话。

<%@ page session="true" %>

要使用核心JSTL,请确保包含以下代码。

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

您需要使用像:

(SalDettaglio[]) request.getSession(false).getAttribute("salDettaglio");

或者您可以直接使用类似以下的内容:

<h4>${salDettaglio}</h4> <!-- if its a string say for example -->

或者,您甚至可以使用core out的EL进行打印,例如:

<c:out value="${sessionScope.salDettaglio}"/> <!-- which again would be useless as its an array -->

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM