[英]How to print session attributes in JSP with Struts 2
這是我所擁有的:
Java 類(添加用戶):
public String addUser() throws NoSuchAlgorithmException {
HttpSession currentSession = request.getSession();
User u = new User();
u.setUname(getUserName());
u.setPassword(StringHash(getUserPass()));
u.setUtype(getUserType());
plResponse = iUserDAO.addUser(u);
setActionMessage(plResponse.getMessage());
currentSession.setAttribute("actionMessage", this.actionMessage);
return SUCCESS;
}
Java 類(添加關聯):
public String saveAssoc() throws Exception {
HttpSession currentSession = request.getSession();
try {
plResponse = iUserDAO.saveUserAssoc(currentSession.getAttribute("selectedUser").toString(), countryId, langId);
refreshUserAssociations();
setActionMessage(plResponse.getMessage());
currentSession.setAttribute("actionMessage", this.actionMessage);
}
catch (Exception e) {
throw new Exception(e.getMessage());
}
return SUCCESS;
}
JSP(兩種情況相同):
<s:if test="actionMessage != null && actionMessage != ''">
<div class="successMessage">
<br/><s:property value="actionMessage"/>
</div>
<br />
</s:if>
我有兩種情況將返回消息傳遞到頁面。 添加用戶后,以及添加用戶關聯后。 在這兩種情況下,參數都正確傳遞給會話(我調試了代碼),但它僅在第一種情況下(添加用戶)顯示。 第二種情況假裝會話中沒有actionMessage
。
可能是什么原因?
實際上,第一種和第二種情況都沒有顯示來自會話的消息。 它在值堆棧中尋找一個變量。
在第一種情況下,您具有返回值的操作屬性 getter。 在第二種情況下它可能不是相同的值。
在動作類中使用會話的正確方法是實現SessionAware
,它通過servletConfig
攔截器servletConfig
映射注入到動作 bean 屬性。
然后使用該地圖而不是 http 會話。 請參閱我們如何訪問會話。
public String addUser() throws NoSuchAlgorithmException {
Map currentSession = ActionContext.getContext().getSession();
User u = new User();
u.setUname(getUserName());
u.setPassword(StringHash(getUserPass()));
u.setUtype(getUserType());
plResponse = iUserDAO.addUser(u);
setActionMessagee(plResponse.getMessage(currentSession.put("actionMessage",getActionMessagee()));
return SUCCESS;
}
在 JSP 中,您可以從上下文訪問會話對象。
<s:if test="#session.actionMessage != null && #session.actionMessage != ''">
<div class="successMessage">
<br/><s:property value="#session.actionMessage"/>
</div>
<br/>
</s:if>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.