如何使用执行计算的操作在 primefaces 数据表中创建文本字段单元格

How to create a textfield cell in primefaces datatable with action that do a computation

我目前正在处理动态数据table。假设此 table 有 4 列(名称、x、y、z)。 x, y 必须是数字文本字段,z 是显示 x 和 y 之和的标签。当 x 或 y 上的值发生变化时,必须重新计算 z 上的值。

我现在的问题是我无法将文本字段绑定到数据table 实体,如果我使用来自 primefaces 的编辑,我需要添加一个我不需要的编辑事件像。它还将单元格最初显示为标签,然后需要单击它以显示文本字段。

有什么建议吗?谢谢。

这是我的解决方案,而不是使用 primefaces datatable.edit 功能。我只是在单元格中使用了一个文本字段,并添加了一个 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>

sdfdsf

public void reCompute(CreditNoteLine line) {
    line.computeWithTax();
}