PrimeFaces使用AJAX转移事件自行更新所需的选项列表不会删除所有项目

时间:2015-03-19 12:31:49

标签: ajax jsf primefaces

我有一个简单的<p:pickList>,它也有一个AJAX&#34;转移&#34; event指向我的支持bean上的空事件并根据需要进行标记。当用户单击“删除”时,“全部”按钮仅显示目标列表&#34;闪烁&#34;,然后保持不变(未更改)。所有其他按钮都能正常工作。

PrimeFaces 4.0。

如果<p:pickList>不需要或不自行更新,一切都会正常。

这是某种错误吗?

感谢!!!


<p:pickList id="nivelPickListTeste" 
    value="#{cargoBean.niveis}" 
    var="nivel" 
    required="true" 
    requiredMessage="O campo de niveis selecionados é obrigatório."
    itemValue="#{nivel}" 
    itemLabel="#{nivel.codigo}" 
    converter="nivelDualListConverter">
    <p:ajax event="transfer" listener="#{cargoBean.onTransfer}" update="@this" />
    <p:column styleClass="linhatabela negrito">
    <h:outputText value="#{nivel.codigo} - #{nivel.formatarValor()}" />
    </p:column>
</p:pickList>
public class CargoBean {
    public void onTransfer(TransferEvent event) {}
}

1 个答案:

答案 0 :(得分:0)

我想通了,我用另一个组件的事件更新了没有被所需事件更新的组件,即使我删除了列表中的最后一个元素,它又重新出现,好像删除了元素从未发生过。我删除了所需的true,并且它有效。在我的问题中提到required="true"之后不久,会触发验证失败,因此会阻止侦听器运行,因为它需要所述组件中的一个元素。因此,当将列表留空时,侦听器将不会运行导致此不需要的功能。 要查看事件触发,请删除required="true"并更改您的验证方式。