nesken
Março 18, 2015, 3:08pm
#1
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]
nesken
Março 19, 2015, 12:14pm
#3
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.
nesken
Março 19, 2015, 9:20pm
#5
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.