【问题标题】:JSF & Hashmap: access value propertiesJSF & Hashmap:访问值属性
【发布时间】:2012-07-25 14:12:23
【问题描述】:

我有一个 Hashmap 定义:

Map<String, Person> map = new HashMap<String, Person>();

它被一些数据填充。这是在 EJB bean 中。

在 JSF 中,我想以某种方式访问​​ Person 类的属性:

#{bean.map['key'].username}

但是 JSF 不允许我这样做。

例如,如果我将 Person 替换为 String,它就可以工作。

有什么帮助吗?

【问题讨论】:

  • PersongetUsername() 吸气剂吗?
  • 如何覆盖 Person 的 toString() ?
  • 它是否可以使用替代符号,例如 #{bean.map.key.username} - btw 哪个版本的 JSF?
  • 是的,它有吸气剂。覆盖并不能解决我的问题,因为 Person 是复杂对象并且有多个字段,我也需要访问其他字段。 JSF 版本是 2.0。
  • 错误信息到底是什么?你在桌子上用它吗?

标签: jsf jakarta-ee


【解决方案1】:

一个解决方案可能是编写您自己的自定义 EL 函数:

public static Object getMapValue(Map map, Object key) {
    return map.get(key);
}

然后你可以这样访问它:

#{fn:getMapValue(bean.map, 'key').username}

如果您不熟悉自定义 el 函数,请查看:Facelets EL Functions can save your day

【讨论】:

    【解决方案2】:

    在Bean中写一个函数

    public Person getMapValue(String key)
    {
            return map.get(key);
    }
    

    然后你可以这样访问它:

    #{bean.getMapValue('key').username}
    

    【讨论】:

      猜你喜欢
      • 2013-01-19
      • 2015-05-20
      • 1970-01-01
      • 1970-01-01
      • 2012-06-19
      • 2018-07-24
      • 2012-12-07
      • 2014-12-11
      • 2014-05-11
      相关资源
      最近更新 更多