在登录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实现此功能,请告诉我。
答案 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
,因此它已经实现了此方法。