![](/img/trans.png)
[英]How can I put a bean object to sessionMap, and then retrieve its properties on jsp page using Struts 2 property tag
[英]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
表达式来访问request
和session
范围中的元素,
${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.