我正在 GlassFish v3 上开发一个应用程序,它使用 JavaEE6 的 Suns-RI 和 JSF2.0 等。糟糕的是,不能对 Suns RI 进行任何更改/切换(使用 MyFaces 或类似的东西) .
现在,问题是,我想手动构建 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 个列表)我不知道如何再次更新基础地图/数据库模型。
希望有人可以帮助我....