Primefaces ajax事件更改不会调用侦听器

时间:2014-03-29 01:46:26

标签: jsf jsf-2 primefaces

好吧,我的ManagedBean中有一个方法可以重新加载我的bean。这是我的XHTML代码:

<h:outputText value="Contrato: *" styleClass="bold" />
                        <p:selectOneMenu converter="entityConverter"
                            disabled="#{layoutExportacaoMB.bean.id != null}"
                            value="#{layoutExportacaoMB.contratoSelecionado}"
                            effect="fade" required="true" filter="true" filterMatchMode="contains"
                            requiredMessage="O Contrato é obrigatório">
                            <f:selectItem itemLabel="Selecione um Contrato" itemValue="" />
                            <f:selectItems value="#{layoutExportacaoMB.contratos}"
                                var="contrato"
                                itemLabel="#{contrato.numeroContratoFormatadoECliente}"
                                itemValue="#{contrato}" />
                            <p:ajax event="change" update="produtos" listener="#{layoutExportacaoMB.carregarProdutosContrato}" />
                        </p:selectOneMenu>

当用户更改此项目时,必须调用以下方法,但这不会发生。我知道ajax事件的变化是因为我的组件&#34; produtos&#34;已更新。

在ManagedBean上查看我的方法:

public void carregarProdutosContrato(){
    logger.info("Carregando contrato "+contratoSelecionado.getNumeroContratoFormatado());
    contratoSelecionado = (Contrato) getBoPadrao().findByNamedQuery(Contrato.FIND_COM_PRODUTOS_BY_ID, 
        new NamedParams("id", contratoSelecionado.getId()));
    }

解决方案:

我认为解决方案更容易,只需使用&#34;()&#34;最后,看看:

                    <p:ajax event="change" update="produtos" listener="#{layoutExportacaoMB.carregarProdutosContrato()}" />

为我工作。

2 个答案:

答案 0 :(得分:5)

请尝试以下方法:):

  1. 确保<p:selectOneMenu>位于<h:form>
  2. process="@this"属性添加到您的<p:ajax>
  3. 使用<p:growl>添加globalOnly="false"autoUpdate="true"可以帮助您识别任何验证和转化错误。

答案 1 :(得分:0)

对我来说问题是对象值

<p:selectOneMenu value="#{userMB.getOneObject()}" ...

是以某种方式未连接到托管bean的对象(这里我通过函数调用得到它)。 selectOneMenu的值应该是托管bean的属性,或者至少保留在某些jsf范围内的值。 这是我对发生的事情的理解。希望能帮助到你。

<p:selectOneMenu value="#{userMB.oneObject}" ...
相关问题