[英]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.