Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有HtmlDataTable的java.util.Map_Java_Jsf_Datatable_Map_Jsf 2 - Fatal编程技术网

带有HtmlDataTable的java.util.Map

带有HtmlDataTable的java.util.Map,java,jsf,datatable,map,jsf-2,Java,Jsf,Datatable,Map,Jsf 2,我正在GlassFish v3上开发一个应用程序,它使用JavaEE6的Suns RI和JSF2.0等。坏的是,不能对Suns RI进行任何更改/切换(使用MyFaces或类似的东西) 现在,问题是,我想手工构建HtmlDatatable(用Java代码)。datatable应该表示一个java.util.Map,其中第一列应该显示映射的键,第二列应该显示映射的值 我已经成功地从java.util.List构建了一个PanelGrid,每次都使用UIComponent的“setExpressio

我正在GlassFish v3上开发一个应用程序,它使用JavaEE6的Suns RI和JSF2.0等。坏的是,不能对Suns RI进行任何更改/切换(使用MyFaces或类似的东西)

现在,问题是,我想手工构建HtmlDatatable(用Java代码)。datatable应该表示一个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个列表),我不知道如何再次更新基础地图/数据库模型


希望有人能帮助我

UIData组件无法在上迭代,因为它不提供按索引获取/设置元素的方法。如果直接在JSF页面中编码,它也不会工作。用or替换它

现在,我实现了一个自定义的KeyValuePair类,对象保存在列表中。键的查询没有那么快,但目前它还可以工作。谢谢你,巴卢斯克!