Ajax Primefaces

5 respostas
N

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?

5 Respostas

rafadelnero

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

<p:ajax listener="#{reuniaoVendasMensalBean.atualizaEmpresas}" update="empresas"/>  

public void atualizaEmpresas(AjaxBehaviorEvent e){
N

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.

rafadelnero

Olá nesken, faltou o Event.

N

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
<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>
rafadelnero

Tenta declarar o evento ajax no p:ajax.

Criado 18 de março de 2015
Ultima resposta 19 de mar. de 2015
Respostas 5
Participantes 2