2012-07-25 57 views
-1

我有定義一個HashMap:JSF和哈希映射:訪問值屬性

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

和它的一些數據填充。這是在EJB bean中。

在JSF中,我想訪問Person類的屬性在某種程度上喜歡:

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

但JSF不允許我這樣做。

如果我用字符串取代Person,例如它可以工作。

任何幫助?

+0

是否'Person'有'getUsername()'吸氣劑? – beny23 2012-07-25 14:16:56

+0

如何重寫toString()爲'Person'? – Daniel 2012-07-25 14:17:23

+1

它是否可以使用另一種表示法,如'#{bean.map.key.username}' - btw JSF的哪個版本? – kostja 2012-07-25 14:17:47

回答

-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

-1

在Bean中寫入函數

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

然後你就可以像這樣訪問:

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