我有一个数据表:
<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对象。
我的问题是如何在不提交的情况下设置此值?
答案 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中的所有更改反映到相应项目的分类字段中。如果这是你想要的,你可以使用这种方法。