带有HtmlDataTable的java.util.Map
我正在GlassFish v3上开发一个应用程序,它使用JavaEE6的Suns RI和JSF2.0等。坏的是,不能对Suns RI进行任何更改/切换(使用MyFaces或类似的东西) 现在,问题是,我想手工构建HtmlDatatable(用Java代码)。datatable应该表示一个java.util.Map,其中第一列应该显示映射的键,第二列应该显示映射的值 我已经成功地从java.util.List构建了一个PanelGrid,每次都使用UIComponent的“setExpressionValue”方法将UI绑定到基础列表 但是现在,这不适用于地图。以下是我的代码片段:带有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
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类,对象保存在列表中。键的查询没有那么快,但目前它还可以工作。谢谢你,巴卢斯克!