这是我拥有的表格的可视化效果:
现在,我可以只更新父表。 但是,每当接收焦点的输入是更新目标的一部分时,焦点就会丢失,并且我必须遵守极其严格的无障碍规则,使此表格在键盘上友好(输入数字,制表符,输入数字,制表符等)。 我已经尝试过:
- update =“:outputTotal”(出现异常无法找到具有标识符...的组件) - update ="myTable:0:outputTota"(相同异常) - update ="myTable:outputTotal"(未更新,总数保持为零) - 将文本包装在面板组中并更新该组(未更新)
(PrimeFaces 3.5.0与MyFaces未知版本)
+---------+------------+-------------------+ | Header1 | Header2 | Header3 | +---------+------------+-------------------+ | Row A | Input A | 计算出的输出结果 A | | Row B | Input B | 计算出的输出结果 B | | 等等.. | 等等.. | 等等.. | +---------+------------+-------------------+ | 总计: 计算出的总输出结果 | +------------------------------------------+以下是简化的代码:
<p:dataTable id="myTable" value="#{myBean.someList}"
var="currentItem">
<p:column headerText="Header1">
<h:outputText value="#{currentItem.name}" />
</p:column>
<p:column headerText="Header2">
<pe:inputNumber value="#{currentItem.inputVal}">
<p:ajax event="change" listener="#{myBean.changeListener}"
update="outputVal outputTotal" />
</pe:inputNumber>
</p:column>
<p:column headerText="Header3">
<h:outputText id="outputVal" value="#{currentItem.outputVal}" />
</p:column>
<f:facet name="footer">
Total:
<h:outputText id="outputTotal" value="#{myBean.total}" />
</f:facet>
</p:dataTable>
myBean.someList
是一个具有一个字符串和两个整数的ArrayList<SomeOtherBean>
,只有getter和setter方法。 myBean.changeListener
用于计算给定行的第二个整数以及所有行的总计。当我在其中一个输入框中输入并失去焦点时,侦听器会被调用并进行计算,但在屏幕上,第三列中的值会更改,但总数仍然为零。我相当确定这与PrimeFaces将每个输入和输出的生成ID附加到行索引有关,但我无法找到如何访问页脚中的输出(其生成的ID为mainForm:myTable:0:outputTotal
)。现在,我可以只更新父表。 但是,每当接收焦点的输入是更新目标的一部分时,焦点就会丢失,并且我必须遵守极其严格的无障碍规则,使此表格在键盘上友好(输入数字,制表符,输入数字,制表符等)。 我已经尝试过:
- update =“:outputTotal”(出现异常无法找到具有标识符...的组件) - update ="myTable:0:outputTota"(相同异常) - update ="myTable:outputTotal"(未更新,总数保持为零) - 将文本包装在面板组中并更新该组(未更新)
(PrimeFaces 3.5.0与MyFaces未知版本)