Ajax Primefaces

Bom dia pessoal. Ja testei todas as soluções que encontrei e não funcionaram. Uso o primefaces 5.1.
Segui o exemplo da pagina do primaface. Ao escolher um item em um selectOneMenu gostaria que populasse o outro selectOneMenu

Porem o método não é executado nem com reza brava.

Meu xhtml

<h:form id="formRMV"> <h:outputLabel for="matriz" value="Grupo: " /> <p:selectOneMenu id="matriz" value="#{reuniaoVendasMensalBean.matriz}"> <p:ajax listener="#{reuniaoVendasMensalBean.atualizaEmpresas}" update="empresas"/> <f:selectItem itemLabel="Selecione" itemValue="" /> <f:selectItems value="#{reuniaoVendasMensalBean.matrizes}" var="m" itemLabel="#{m.nome}" /> </p:selectOneMenu> <h:outputLabel for="empresas" value="Empresa: " /> <p:selectOneMenu id="empresas" value="#{reuniaoVendasMensalBean.empresa}"> <f:selectItem itemLabel="Selecione" itemValue="" /> <f:selectItems value="#{reuniaoVendasMensalBean.empresas}" var="e" itemLabel="#{e.nome}" /> </p:selectOneMenu>

Metodo que desejo chamar

public void atualizaEmpresas(){ System.out.println("passei aqui"); if (matriz != null && !matriz.equals("")) { empresas = daoE.getEmpresasPorMatriz(matriz.getCodEmpresa()); } else { empresas = new ArrayList<Empresas>(); } }

ja testei com event=“change” tambem e nada… ja testei com update=“formRMV:empresas” tambem e nada…

Alguem se candidata a me ajudar?

Adicione process="@this" e mude a assinatura do seu método.

[code]<p:ajax listener="#{reuniaoVendasMensalBean.atualizaEmpresas}" update=“empresas”/>

public void atualizaEmpresas(AjaxBehaviorEvent e){[/code]

Bom dia e obrigado pela resposta, mas não funcionou. Ficou assim:

xhtml

<p:selectOneMenu id="matriz" value="#{reuniaoVendasMensalBean.matriz}"> <p:ajax listener="#{reuniaoVendasMensalBean.atualizaEmpresas}" update="empresas" process="@this"/> <f:selectItem itemLabel="Selecione" itemValue="" /> <f:selectItems value="#{reuniaoVendasMensalBean.matrizes}" var="m" itemLabel="#{m.nome}" /> </p:selectOneMenu> <h:outputLabel for="empresas" value="Empresa: " /> <p:selectOneMenu id="empresas" value="#{reuniaoVendasMensalBean.empresa}" > <f:selectItem itemLabel="Selecione" itemValue="" /> <f:selectItems value="#{reuniaoVendasMensalBean.empresas}" var="e" itemLabel="#{e.nome}" /> </p:selectOneMenu>
Bean

public void atualizaEmpresas(AjaxBehavior e){ System.out.println("passei aqui"); if (matriz != null && !matriz.equals("")) { empresas = daoE.getEmpresasPorMatriz(matriz.getCodEmpresa()); } else { empresas = new ArrayList<Empresas>(); } }
testei com AjaxBehavior da biblioteca do primefaces e do javax.faces. Continua sem executar o método via ajax.

Olá nesken, faltou o Event.

Falha minha, mas ainda não funcionou.

public void atualizaEmpresas(AjaxBehaviorEvent e){ System.out.println("passei aqui"); if (matriz != null && !matriz.equals("")) { empresas = daoE.getEmpresasPorMatriz(matriz.getCodEmpresa()); } else { empresas = new ArrayList<Empresas>(); } }

xhtml

[code]<h:outputLabel for=“matriz” value="Grupo: " />

		<p:selectOneMenu id="matriz"
			value="#{reuniaoVendasMensalBean.matriz}" style="font-size:11px;">
						<p:ajax listener="#{reuniaoVendasMensalBean.atualizaEmpresas}"  update="empresas" process="@this"/>
			<f:selectItem itemLabel="Selecione" itemValue="" />
			<f:selectItems value="#{reuniaoVendasMensalBean.matrizes}" var="m"
				itemLabel="#{m.nome}" />
		</p:selectOneMenu>
				<h:outputLabel for="empresas" value="Empresa: " />
				<p:selectOneMenu id="empresas"
					value="#{reuniaoVendasMensalBean.empresa}" >
					<f:selectItem itemLabel="Selecione" itemValue="" />
					<f:selectItems value="#{reuniaoVendasMensalBean.empresas}" var="e"
						itemLabel="#{e.nome}" />
				</p:selectOneMenu>[/code]

Tenta declarar o evento ajax no p:ajax.