我有几行h:inputText字段用于接收数字,而h:outputText字段用于显示这些数字的总和。当其中一个inputText值发生更改时,我想更新基础数据库记录,然后重新呈现行末尾的总字段。例如。 ui元素是:rcvd0,rcvd1,rcvdTotal。我希望所有这一切都能在不提交表格的情况下发生。
我已设法捕获值更改并使用valueChangeListener更新基础数据库记录。我正在使用p:ajax标签,所以我不必等到表单被瘫痪。到目前为止,非常好。
我无法实现的是重新渲染总字段。以下是我的组件的视图代码:
<h:inputText id="rcvd0" value="#{shareoutSlip.receivedMember[0]}" size="7" valueChangeListener="#{orderFormBean.handleReceivedChange}">
<f:converter converterId="bigDecimalPlainDisplay" />
<p:ajax render="rcvdTotal" />
</h:inputText>
<h:inputText id="rcvd1" value="#{shareoutSlip.receivedMember[1]}" size="7" valueChangeListener="#{orderFormBean.handleReceivedChange}">
<f:converter converterId="bigDecimalPlainDisplay" />
<p:ajax render="rcvdTotal" />
</h:inputText>
<h:outputText id="rcvdTotal" value="#{shareoutSlip.receivedTotal}">
<f:converter converterId="bigDecimalPlainDisplay" />
</h:outputText>
valueChangeListener方法被称为ok,它做正确的事情。代码似乎没有重新呈现rcvdTotal字段。我在ajax标签中尝试了各种ajax属性的组合,例如: execute =“rcvd0”render =“rcvdTotal”。我也使用@this,@ form,@ all作为属性值,但无济于事。
我必须说我对JSF和PrimeFaces非常满意,但我发现事件模型非常混乱,部分原因是缺乏良好的文本或课程。如果有人可以提供有关事件模型的优秀资源,那么我将非常感激。看来这对于深入理解JSF至关重要。谢谢。