我開發有關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列表),我不知道底層地圖/數據庫模型如何再次更新。
希望有人能幫助我....
現在,我實現了一個自定義的KeyValuePair類對象保持在列表中。查詢密鑰並不是那麼快,但目前它的工作。感謝BalusC! – gerry 2010-04-28 12:24:20