如何将bean对象放入sessionMap,然后使用Struts 2属性标记在jsp页面上检索其属性

时间:2015-07-12 13:23:11

标签: java jsp struts2 ognl valuestack

在登录Action中我正在检查用户身份验证,如果验证了,我将用户bean放入sessionMap

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

现在登陆jsp时,尝试检索会话项:

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

显然这将返回Object类型,因为我以这种方式存储它,所以我如何键入caste到UserBean类。

我原本希望在谷歌上找到解决方案,但由于这似乎是一个基本的实现,因此无处可寻。因此,如果有任何其他方法可以使用Struts2实现此功能,请告诉我。

2 个答案:

答案 0 :(得分:1)

这对我来说很好......

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

这对我来说都很好......

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

我宣布了这样的事情......

请确保在property标记您在sessionMap中设置bean时使用的名称。

这应该可行......

答案 1 :(得分:0)

如果对象不是该类的实例,显然你不能将它强制转换为UserBean类。在value属性中,您放置了一个字符串"#session.userBean.name"。 Struts为OGNL表达式解析此字符串,如果它是一个返回值的有效表达式,它将用该值替换它。返回的类型为Object,但此类型由ValueStack实现确定。

然后,属性标记将此对象写入out。它使用toString()将对象转换为字符串。如果您的对象实现此方法,那么将写入此值。

看起来您的表达式返回Object,其实例类型为String,因此它已经实现了此方法。