如何使用动态名称访问会话属性?

时间:2011-07-22 20:53:42

标签: java jstl el

这是我试图通过使用JSTL / EL动态构造属性名称来引用会话bean的问题的一个非常简化的示例。会话属性的名称是“userBean”,其属性“name”具有相应的getter / setter。

This works<br>
User: ${userBean.name}<br>

<c:set var="userBeanName">${userBean}.name</c:set><br>

This does not work<br>
User:  ${userBeanName}<br>

结果是:

  

这适用于   用户:ACOSTA SALES COMPANY

     

这不起作用   用户:000101.name

第二个是调用userBean类的toString()方法并连接+“。name”。

肯定有一个非常简单的答案;但是,凭借我有限的知识,我无法弄明白。

1 个答案:

答案 0 :(得分:4)

代码示例令人困惑,与标题和第1段中所述的问题无关。所以,我将忽略代码示例,只回答标题:

  

如何使用动态名称访问会话属性?

您可以使用${sessionScope}来获取所有会话属性的映射。您可以使用括号表示法将变量计算为属性名称${sessionScope[attributeName]}

所以,这应该做:

<c:set var="attributeName" value="userBean" />

User name: ${sessionScope[attributeName].name}