我正在尝试使用从p:dataTable
内的组件触发的Ajax更新来更新表的页脚。但无论我如何在p:ajax
标签中编写我的ID引用,我似乎无法使它们正确。
这是一个例子:
<h:form id="formId">
<p:dataTable id="tableId" var="row" value="#{testBean.dataRows}" rowIndexVar="rowIx">
<p:column>
<h:outputText value="#{row}"/>
<p:inputText id="innerInputId" value="#{testBean.str}">
<p:ajax event="keyup" update="tableId:footerId"/>
<p:ajax event="keyup" update=":formId:tableId:footerId"/>
<p:ajax event="keyup" update="@form:tableId:footerId"/>
</p:inputText>
<f:facet name="footer">
<h:outputText id="footerId" value="#{testBean.str}"/>
</f:facet>
</p:column>
</p:dataTable>
<p:inputText id="outerInputId" value="#{testBean.str}">
<p:ajax event="keyup" update="tableId:footerId"/>
</p:inputText>
</h:form>
在生成的HTML中,我可以看到页脚中的outputText
获取了ID formId:tableId:footerId
。
来自outerInputId
的引用很好。
innerInputId
的所有引用我希望能够发挥作用,但事实并非如此。在生成的HTML中,我可以看到它们被翻译为formId:tableId:0:footerId
形式。如果页脚位于当前行的命名容器内,这是有意义的,但它不是我从其ID中看到的。
或者这是预期的行为,在这种情况下为什么?
我想这样做以显示页脚中列中所有单元格的总和。
相关软件:PrimeFaces 5.1,Mojarra 2.2.7,GlassFish 4.1