2015-07-12 45 views
1

在登錄Action我正在檢查用戶身份驗證,如果驗證,我將用戶bean放入sessionMap如何將bean對象放入sessionMap中,然後使用Struts 2屬性標記在jsp頁面上檢索其屬性

public String execute() 
{ 
    if(userValid) 
     sessionMap.put("userBean", userBean); //userBean retrieved from DB 
} 

現在就登陸JSP,當試圖檢索會話項目:

<s:property value="#session.userBean.name" /> 

顯然,這將返回一個Object類型,因爲我存儲這樣的說法,所以我怎麼能輸入種姓這到UserBean班。

我期待在Google上得到這個解決方案,但是發現它並沒有,因爲這似乎是一個基本的實現。所以,請讓我知道是否有其他方式使用Struts2來實現此功能。

+1

什麼讓你覺得你需要投什麼? –

+0

userBean在SessionMap中以對象類型的形式存儲,如果檢索時的userBean爲Object類型,我將如何檢索userBean.name。 –

+0

無論如何,如果你可以建議任何其他方式來做到這一點,你是最受歡迎的。 謝謝 –

回答

0

顯然,如果對象不是該類的實例,則不能將其轉換爲UserBean類。在值屬性中,您已經輸入了一個字符串"#session.userBean.name"。 Struts爲OGNL表達式解析這個字符串,如果它是一個返回值的有效表達式,它將用該值替換它。返回的類型是Object,但此類型由ValueStack實現確定。

然後屬性標籤將此對象寫入out。它使用toString()將對象轉換爲字符串。如果你的對象實現了這個方法,那麼這個值將被寫入。

看起來你的表情看起來像Object,它的實例類型爲String,所以它已經實現了這個方法。

1

這工作得很好,我...

<sp:property value="#session.usertype"/> 
<sp:property value="#session.bean.loginID"/> 

這兩個工作得很好,我...

sessionMap.put("bean", loginBean); 
sessionMap.put("usertype", loginBean.getUserType()); 

我像這樣聲明....

只是要確保在property標記您使用同一名稱,同時設置在sessionMap豆....

這應該可能工作....

相關問題