2010-04-27 20 views
0

我開發有關GlassFish v3的,它使用JavaEE6和JSF2.0,等太陽-RI而壞的事情是,沒有變化/從太陽RI開關之外都可以應用(使用MyFaces或類似的東西)。現在java.util.Map與HtmlDataTable

,問題是,我想建立手工HtmlDatatable(在Java代碼中)。數據表應該代表一個java.util.Map其中第一列應顯示的關鍵和第二地圖的值。

我已經成功構建了一個java.util.List中的PanelGrid,並且每次使用UIComponent的「setExpressionValue」方法將UI綁定到基礎列表。

但現在,這並不與地圖工作。這裏是我的代碼片段:

public HtmlDataTable getEntityDetailsDataTable() { 
... 
Application app = FacesContext.getCurrentInstance().getApplication(); 
HtmlDataTable component = (HtmlDataTable)app.createComponent(HtmlDataTable.COMPONENT_TYPE); 
component.setValueExpression("value", ExpressionUtil.createValueExpression("#{entityTree.entity."+fieldName+".entrySet()}", Map.class)); 
component.setVar("param"); 
UIColumn column = new UIColumn(); 
UIOutput label1 = DynamicHtmlComponentCreator.createHtmlOutputText("#{param[key]}", String.class); 
column.getChildren().add(label1); 
UIOutput label2 = DynamicHtmlComponentCreator.createHtmlOutputText("#{param[value]}", String.class); 
column.getChildren().add(label2); 
component.getChildren().add(column); 
... 
return component; 
} 
component.getChildren().add(column); 
... 
return component; 
} 

那麼,進一步的問題是,這個代碼只打印出地圖的內容,另一頁上,我需要更新的HtmlInputText元素中顯示的值和全圖如果用戶點擊一個即「保存」按鈕。
因此,進一步的問題是,這個代碼只打印出地圖的內容,在另一個頁面上,我需要HtmlInputText元素中顯示的值,如果用戶點擊了「保存」按鈕,則更新整個地圖。

如果有一種解決方法,將地圖表示爲列表......請幫助我,因爲對於此(地圖爲2列表),我不知道底層地圖/數據庫模型如何再次更新。

希望有人能幫助我....

回答

1

UIData組件無法遍歷一個Set,因爲它不提供的方式獲得通過索引/組元素。當你在JSF頁面中直接編碼時,它也不起作用。由ListDataModel更換。

+0

現在,我實現了一個自定義的KeyValuePair類對象保持在列表中。查詢密鑰並不是那麼快,但目前它的工作。感謝BalusC! – gerry 2010-04-28 12:24:20

相關問題