Jsf 如何使用执行计算的操作在primefaces数据表中创建textfield单元格
我目前正在处理一个动态数据表。假设这个表有4列(name、x、y、z)。x、 y必须是数字文本字段,z是显示x和y之和的标签。更改x或y上的值时,必须重新计算z上的值 我现在的问题是我无法将文本字段绑定到datatable实体,如果我使用来自primefaces的编辑,我需要添加一个我不喜欢的编辑事件。此外,它最初将单元格显示为标签,然后需要单击它以显示文本字段Jsf 如何使用执行计算的操作在primefaces数据表中创建textfield单元格,jsf,primefaces,jsf-2.2,Jsf,Primefaces,Jsf 2.2,我目前正在处理一个动态数据表。假设这个表有4列(name、x、y、z)。x、 y必须是数字文本字段,z是显示x和y之和的标签。更改x或y上的值时,必须重新计算z上的值 我现在的问题是我无法将文本字段绑定到datatable实体,如果我使用来自primefaces的编辑,我需要添加一个我不喜欢的编辑事件。此外,它最初将单元格显示为标签,然后需要单击它以显示文本字段 有什么建议吗?谢谢。这是我的解决方案,而不是使用primefaces datatable.edit功能。我只是在单元格中使用了一个te
有什么建议吗?谢谢。这是我的解决方案,而不是使用primefaces datatable.edit功能。我只是在单元格中使用了一个textfield,并添加了一个p:ajax,它在更改时触发一个重新计算方法。注意update参数的使用,我们可以直接引用行上的字段
<h:form id="creditNoteLinesForm">
<p:dataTable id="resultsId_creditNoteLines" var="entity"
value="#{creditNoteBean.entity.creditNoteLines}">
<!-- // -->
<p:column
headerText="#{messages['creditNote.list.amountWithoutTax']}">
<p:inputText value="#{entity.amountWithoutTax}">
<p:ajax event="change"
listener="#{creditNoteBean.reCompute(entity)}"
update="amountWithTax"></p:ajax>
</p:inputText>
</p:column>
<p:column headerText="#{messages['creditNote.list.amountTax']}">
<p:inputText value="#{entity.taxAmount}">
<p:ajax event="change"
listener="#{creditNoteBean.reCompute(entity)}"
update="amountWithTax"></p:ajax>
</p:inputText>
</p:column>
<p:column
headerText="#{messages['creditNote.list.amountWithTax']}">
<h:outputText id="amountWithTax" value="#{entity.amountWithTax}" />
</p:column>
</p:dataTable>
</h:form>
如果您遵循primefaces showcase的可编辑数据表(单元格),您只需添加一个p:ajax更改来更新数据表,Z列是一个带有el表达式的标签,其计算类似于
{varDT.x+varDT.y}
应该可以解决您的问题,感谢您的评论,但添加并不是我真正的问题,而是更多的问题。在primefaces编辑数据表中,我们首先需要一个可点击的标签作为输出,但我需要一个文本字段作为输入和输出。此外,z变量也是模型中的一个字段,因为我需要将其保存在db.Read中并相应地执行操作
public void reCompute(CreditNoteLine line) {
line.computeWithTax();
}