java.util.Map 与 HtmlDataTable

标签 java jsf datatable dictionary jsf-2

我正在 GlassFish v3 上开发一个应用程序,它使用 JavaEE6 的 Suns-RI 和 JSF2.0 等。不好的是,无法对 Suns RI 进行任何更改/切换(使用 MyFaces 或其他东西)像那样)。

现在的问题是,我想手动构建 HtmlDatatable(在 Java 代码中)。数据表应表示一个 java.util.Map,其中第一列应显示映射的键,第二列应显示映射的值。

我已经从 java.util.List 成功构建了一个 PanelGrid,并且每次都使用 UIComponent 的“setExpressionValue”方法将 UI 绑定(bind)到底层列表。

但现在,这不适用于 map 。这是我的代码片段:

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;
}

因此,进一步的问题是,此代码仅打印出 map 的内容,在另一个页面上,我需要 HtmlInputText 元素中显示的值,并且如果用户单击“保存”按钮,则更新整个 map 。< br/> 因此,进一步的问题是,此代码仅打印出 map 的内容,在另一个页面上,我需要 HtmlInputText 元素中显示的值,并且如果用户单击“保存”按钮,则更新整个 map 。

如果有解决方法,将 map 表示为列表...请帮助我,因为对于此( map 为 2 个列表),我不知道如何再次更新底层 map /数据库模型。

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

最佳答案

UIData 组件无法迭代 Set因为它不提供通过索引获取/设置元素的方法。当您直接在 JSF 页面中对其进行编码时,它也不起作用。将其替换为 ListDataModel

关于java.util.Map 与 HtmlDataTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2720457/

相关文章:

java - 使用服务器端数据动态构建jquery数据表

java - 使用 Java 代理自动化 JNLP 应用程序

java - 创建 servlet 时出现非 java 源文件夹错误

HtmlDataTable(richfaces)渲染上的javascript函数

r - styleColorBar : have the size of the color bar be proportional to absolute values of a column

javascript - 数据表行单击事件不起作用

java - 如何将增量值分配给 Java 8 中的列表

java - 尝试用 Java 捕获文件 i/o 的逻辑错误

jsf - 了解JSF2中的Flash作用域

jsf - NetBeans - Web 应用程序 - 网页子文件夹