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

时间:2015-08-10 21:03:04

标签: jsf-2 primefaces datatable

我有一个数据表:

    <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中,我有一个lista:

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方法中,我得到了必须删除的对象,与List的值进行比较并删除它。但我遇到了问题。当用户更改inputText的值时,更改不会反映列表中的Aliquota对象。

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

1 个答案:

答案 0 :(得分:3)

如果不提交,就无法反映支持bean的价值。但是,您可以通过向输入文本添加侦听器来使用Ajax提交它。监听器方法不必做任何事情,它可以是空的,但它需要在那里进行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中的所有更改反映到相应项目的分类字段中。如果这是你想要的,你可以使用这种方法。