Well, i have a method in my ManagedBean that reload my bean. this is my XHTML code:
<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>
When user change this item the method bellow must be called but this don't happens. I know that ajax event change is fired because my component "produtos" is updated.
See my method on 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()));
}
SOLUTION:
Solution is more easy that i thought, just use listener with "()" in the end, look:
<p:ajax event="change" update="produtos" listener="#{layoutExportacaoMB.carregarProdutosContrato()}" />
Worked for me.
<p:messages/>component on your page to see possible errors - kolossus