2014-09-27 29 views
1

我在struts 2中有一個簡單的應用程序,允許用戶輸入名稱並提交。在服務器端的struts 2動作類中創建一個新的會話並存儲用戶名在會話中。在user.jsp我試圖顯示存儲在會話中的值,但它沒有顯示任何內容。在jsp struts 2中不顯示會話值

index.jsp的的代碼如下

<body> 
<form action="welcomeUser.action"> 
    <input type="text" name="user"> 
    <input type="submit" value="Submit"> 
</form> 
</body> 

給出struts.xml中下面的代碼

<action name="welcomeUser" class="hart.test.Welcome"> 
        <result name="success">user.jsp </result> 
</action> 

給出在hart.test.Welcome下面的代碼

給出
public class Welcome extends ActionSupport 
{ 
    private String user; 
    public String getUser() { 
     return user; 
    } 
    public void setUser(String user) { 
     this.user = user; 
    } 
    public String execute() 
    { 
     HttpServletRequest request = ServletActionContext.getRequest(); 
     HttpSession session=request.getSession(); 
     //Checking session is new and creating a session 
     if (session.isNew() == false) { 
      session.invalidate(); 
      session = request.getSession(true); 
      } 
     session.setAttribute("user1", user); 

     return SUCCESS; 
    } 
} 

User.jsp中的代碼在下面給出

<body> 
    Welcomeee <s:property value="%{#session.user1}"/> 
</body> 

的問題是,它僅顯示「Welcomeee'.Can誰能告訴它的原因

+0

當我使用在User.jsp JSP表達標記(<(%)= session.getAttribute(「用戶1」)來顯示存儲在會話中的值,則發現但是使用struts 2標籤卻沒有顯示任何人請給出建議的原因 – Kiranmuralee 2014-09-27 12:36:30

+1

有時評估一個表達式似乎很明顯,但同樣的表達式可能無法正常工作,因爲它沒有任何顯示內容 – 2014-09-28 14:04:17

回答

-1

Struts2使用會話映射,它是底層HttpSession的一個包裝。使用通過實施SessionAware接口,like described in this answer

public class Welcome extends ActionSupport implements SessionAware { 

    private Map<String,Object> session;  
    public void setSession(Map<String,Object> session) { 
     this.session = session; 
    } 

    private String user; 
    public String getUser() { 
     return user; 
    } 
    public void setUser(String user) { 
     this.user = user; 
    } 

    public String execute() { 
     session.put("user1", user);  
     return SUCCESS; 
    } 
} 
+0

謝謝..明白....這一個幫助。 – Kiranmuralee 2014-09-28 12:33:31

+0

在我原來的代碼,如果我想顯示存儲在會話中的值,那麼我應該聲明sessio在執行方法之外的變量(使用getter和setter)和user.JSP我應該編寫Welcomeee 。米錯了 – Kiranmuralee 2014-09-28 17:16:22

0

添加Struts 2的標籤庫的定義:<%@ taglib prefix="s" uri="/struts-tags" %>在日User.jsp文件的開頭。

+0

是的,我已經把<%@ taglib prefix =「s」uri =「/ struts-tags」%>。但是仍然沒有獲得價值 – Kiranmuralee 2014-09-28 12:05:58