1

在登录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类中。

我期待在 Google 上得到解决方案,但由于这似乎是一个基本的实现,所以无处可寻。所以请让我知道是否有任何其他方法可以使用 Struts2 实现此功能。

4

2 回答 2

1

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

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

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

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

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

只需确保在property标签中与您在设置 bean 时使用的名称相同sessionMap......

这应该可以工作....

于 2015-12-28T18:07:34.893 回答
0

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

然后属性标签将此对象写入out. 它用于toString()将对象转换为字符串。如果你的对象实现了这个方法,那么这个值就会被写入。

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

于 2015-07-12T16:03:58.287 回答