我有定義一個HashMap:JSF和哈希映射:訪問值屬性
Map<String, Person> map = new HashMap<String, Person>();
和它的一些數據填充。這是在EJB bean中。
在JSF中,我想訪問Person類的屬性在某種程度上喜歡:
#{bean.map['key'].username}
但JSF不允許我這樣做。
如果我用字符串取代Person,例如它可以工作。
任何幫助?
我有定義一個HashMap:JSF和哈希映射:訪問值屬性
Map<String, Person> map = new HashMap<String, Person>();
和它的一些數據填充。這是在EJB bean中。
在JSF中,我想訪問Person類的屬性在某種程度上喜歡:
#{bean.map['key'].username}
但JSF不允許我這樣做。
如果我用字符串取代Person,例如它可以工作。
任何幫助?
一個解決方案可以撰寫自己的自定義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
在Bean中寫入函數
public Person getMapValue(String key)
{
return map.get(key);
}
然後你就可以像這樣訪問:
#{bean.getMapValue('key').username}
是否'Person'有'getUsername()'吸氣劑? – beny23 2012-07-25 14:16:56
如何重寫toString()爲'Person'? – Daniel 2012-07-25 14:17:23
它是否可以使用另一種表示法,如'#{bean.map.key.username}' - btw JSF的哪個版本? – kostja 2012-07-25 14:17:47