如何将 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 时使用的名称相同....
这应该可以工作....
在登录中 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 时使用的名称相同....
这应该可以工作....