Mr.*_*las 2 jsf primefaces jsf-2
好吧,我在我的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>
Run Code Online (Sandbox Code Playgroud)
当用户更改此项时,必须调用以下方法,但这不会发生.我知道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()));
}
Run Code Online (Sandbox Code Playgroud)
解:
我认为解决方案更容易,最后只使用带有"()"的监听器,看看:
<p:ajax event="change" update="produtos" listener="#{layoutExportacaoMB.carregarProdutosContrato()}" />
Run Code Online (Sandbox Code Playgroud)
为我工作.
尝试以下:):
<p:selectOneMenu>
在里面<h:form>
.process="@this"
属性到您的<p:ajax>
.<p:growl>
与globalOnly="false"
和autoUpdate="true"
可以帮助你找出任何验证和转换错误.