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

时间:2015-10-08 05:40:01

标签: jsf primefaces jsf-2.2

我目前正在研究动态数据表。假设这个表有4列(名称,x,y,z)。 x,y必须是数字文本字段,z是显示x和y之和的标签。当x或y上的值改变时,z上的值必须重新计算。

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

有什么建议吗?感谢。

1 个答案:

答案 0 :(得分:0)

这是我的解决方案,而不是使用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();
}