如何在数据表中动态获取组件 p:inputText 的值?

How to dynamically get value of component p:inputText inside a datatable?

我有一个 primefaces 数据表:

    <p:dataTable id="tabela" var="item"
        value="#{myBean.lista}"
        rowIndexVar="rowindex">

        <p:column>
            <p:inputText 
                required="true" id="inputAliquota" value="#{item.taxa}"
                >
            </p:inputText>
        </p:column>
    </p:dataTable>

在我的支持 bean 中有一个列表:

private List<Aliquota> lista;

还有一个用于从我的数据表中删除列的按钮:

            <p:commandLink
                immediate="true" id="botaoExcluir"
                action="#{myBean.excluirAliquota}"
                >
                <f:setPropertyActionListener value="#{item}"
                    target="#{myBean.aliquota}" />
            </p:commandLink>

当我启动 bean 时,我用 5 个空的 Aliquota 对象填充 "lista"。

在 excluirAliquota 方法中,我得到了必须删除的对象,与列表的值进行比较并将其删除。但我有问题。当用户更改 inputText 的值时,更改不会反映列表中的 Aliquota 对象。

我的问题是如何在不提交的情况下设置这个值?

不提交就无法反映backing bean的值。但是,您可以通过向输入文本添加侦听器来使用 Ajax 提交它。 listener 方法不需要做任何事情,它可以是空的,但它需要在 Ajax 提交时存在。它可以是这样的:

<p:dataTable id="tabela" var="item"
    value="#{myBean.lista}"
    rowIndexVar="rowindex">

    <p:column>
        <p:inputText 
            required="true" id="inputAliquota" value="#{item.taxa}"
            >
            <p:ajax listener="#{myBean.dummyListener()}"/>
        </p:inputText>
    </p:column>
</p:dataTable>

这会立即将 inputText 中的所有更改反映到相应项目的分类单元字段中。如果那是你想要的,你可以使用这个方法。