h:dataTable嵌套在ui:repeat中,更新inputText值不起作用

时间:2011-05-04 20:29:58

标签: jsf-2

我在同一页面上的几个h:dataTables中渲染一个包含自定义对象(PO​​JO)的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的标题

1 个答案:

答案 0 :(得分:2)

这似乎是由ui:repeat标记生成的所有具有相同ID的dataTables的问题。另见Mojarra JIRA的issue。但是,我还没有解决方案。它似乎从JSF 1.2天开始存在,因为从JBoss 4.2.2切换到4.3.3时首先出现了问题,其中包括JSF 1.2版本的升级。