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

How can I put a bean object to sessionMap, and then retrieve its properties on jsp page using Struts 2 property tag

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

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

现在正在着陆 jsp,当尝试检索会话项目时:

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

显然这会是 return 一个 Object 类型,因为我是这样存储它的,所以我怎样才能将它类型转换为 UserBean class。

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

实现此功能

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

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

看起来你的表达式 returns 是一个 Object,它的实例类型是 String,所以它已经实现了这个方法。

这对我来说很好...

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

这对我来说都很好...

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

我声明了这样的东西....

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

这应该可以工作....