gpt4 book ai didi

jsf - Primefaces ajax事件更改不调用监听器

转载 作者:行者123 更新时间:2023-12-02 08:34:52 24 4
gpt4 key购买 nike

嗯,我的 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 事件更改被触发,因为我的组件“produtos”已更新。

查看我在 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()));
}

解决方案:

解决方案比我想象的更简单,只需使用监听器最后加上“()”即可,看:

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

为我工作。

最佳答案

尝试以下方法:):

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

关于jsf - Primefaces ajax事件更改不调用监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22725974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com