我在同一页面上的几个h:dataTables中渲染一个包含自定义对象(POJO)的ArrayList(menu.specifications)。每个h:dataTable包含ArrayList的不同范围的元素。一列包含h:inputText标记。
用户输入并提交后,只更新最后一个dataTable的inputText标签。其他 保持不变。
以下是相关代码:
<h:form>
<ui:repeat value="#{menu.groupTitles}" var="element" varStatus="loop">
<h:dataTable rendered="#{menu.points[loop.index].y>0}" value="#{menu.specifications}"
first="#{menu.points[loop.index].x}" rows="#{menu.points[loop.index].y}" var="rowVar" border="1">
<h:inputText value="#{rowVar.pvalue}" id="pvalue"/>
我也尝试了这个:
<h:inputText value="#{menu.specifications[rowVar.index].pvalue}" id="pvalue"/>
参考文献说明:
menu.points[loop.index].x
=要在dataTable中显示的ArrayList的第一个元素menu.points[loop.index].y
=要在dataTable中显示的元素数量menu.groupTitles
=不同dataTables的标题答案 0 :(得分:2)
这似乎是由ui:repeat
标记生成的所有具有相同ID的dataTables的问题。另见Mojarra JIRA的issue。但是,我还没有解决方案。它似乎从JSF 1.2天开始存在,因为从JBoss 4.2.2切换到4.3.3时首先出现了问题,其中包括JSF 1.2版本的升级。