在登录Action
中,我正在检查用户身份验证,如果验证通过,则将用户bean放入sessionMap
中:
public String execute()
{
if(userValid)
sessionMap.put("userBean", userBean); //userBean retrieved from DB
}
现在,在着陆jsp上,当尝试检索会话项时:
<s:property value="#session.userBean.name" />
显然,这将返回一个
Object
类型,因为我以这种方式存储它,所以我该如何将等级将此类型键入UserBean
类。我原本希望在Google上获得针对此问题的解决方案,但由于这似乎是基本的实现,因此无处可寻。因此,请告诉我是否还有其他方法可以使用Struts2来实现此功能。
最佳答案
显然,如果对象不是该类的实例,则不能将其强制转换为UserBean
类。在value属性中,您输入了字符串"#session.userBean.name"
。 Struts将此字符串解析为OGNL表达式,如果它是一个有效的返回值的表达式,它将用该值替换它。返回的类型为Object
,但是此类型由ValueStack
实现确定。
然后,属性标签将此对象写入out
。它使用toString()
将对象转换为字符串。而且,如果您的对象实现此方法,则将写入此值。
看起来您的表达式返回了Object
,其实例类型为String
,因此它已经实现了此方法。