Chamar método com p:ajax dentro de um p:selectOneMenu
21 respostas
Diego_Adriano
Bem galera seguinte.
Preciso chamar um método dentro de um selectOneMenu, estou tentando fazer isso com Ajax mas não estou encontrando o “Evento” que faça isso !
Estou fazendo dessa forma:
<p:selectOneMenu value="#{permissoesBean.grupoUsuario}" converter="ConverterGrupoUsuario">
<f:selectItem itemLabel="Selecione o Grupo" itemValue=""/>
<f:selectItems value="#{permissoesBean.grupoUsuarios}"
var="grupo"
itemLabel="#{grupo.nome}"
itemValue="#{grupo.id}"/>
<p:ajax update="formPermissoes:gridDadosPermissao" event="itemSelect"
listener="#{permissoesBean.escolherPermissao}" />
</p:selectOneMenu>
O problema é que utilizando esse evento “itemSelect”, ele me diz que a tag n é suportada, claro, deve ser por causa da versão do Prime que uso que é um pouco mais antiga.
Pois bem, teria algum outro evento que fizesse essa mesma ação ?!
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
//BUSCA DADOS PERMISSÃO POR GRUPO ESCOLHIDO
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
publicvoidescolherPermissao(){System.out.println("Antes: "+grupoUsuario.getPermissao().getId());if(grupoUsuario!=null&&!grupoUsuario.equals("")){System.out.println("Teste: "+grupoUsuario.getPermissao().getId());PermissoesRepositorypr=newPermissoesRepository(getEntityManager());permissao=pr.permissaoPorId(grupoUsuario.getPermissao().getId());}else{FacesContext.getCurrentInstance().addMessage(null,newFacesMessage(FacesMessage.SEVERITY_WARN,""+getUsuarioSessao().getNome()+" - INFORME UM GRUPO VÁLIDO",""));}}
Daniel_T_S
Esses prints estão sendo executados?
Se estiverem o evento está funcionando, então você precisará colocar as permissões retornadas
como resultado da pesquisa na List que o teu “gridDadosPermissao” acessa.
Diego_Adriano
Cara, vc ta de sacanagem cmg né ?! rsrsrsrs
É exatamente pelos System.Out não serem exibidos que sei que não esta chegando no método …rs
felipe_gdr
Diego Adriano:
Cara, vc ta de sacanagem cmg né ?! rsrsrsrs
É exatamente pelos System.Out não serem exibidos que sei que não esta chegando no método …rs
Diego, tenha mais paciencia. Ainda mais com pessoas que estao tentando te ajudar.
Meu querido Felipe, se vc não percebeu isso foi uma ironia, não uma falta de respeito cara, sou muito grato por tds que tentam ajudar, tenha certeza disso …
Já, já tentei isso, é dessa forma que o site do Prime sugere que seja feito mas não funfa tb …
Obrigado
felipe_gdr
Diego Adriano:
Meu querido Felipe, se vc não percebeu isso foi uma ironia, não uma falta de respeito cara, sou muito grato por tds que tentam ajudar, tenha certeza disso …
Já, já tentei isso, é dessa forma que o site do Prime sugere que seja feito mas não funfa tb …
Obrigado
Beleza!
Estranho… seu componente está dentro de um form?
Diego_Adriano
Esta sim .. tudo como manda o figurino ..rs
Mas ainda creio que deva ser o evento que não esta correto !!
<ui:compositiontemplate="/tamplate/tamplate.xhtml"><ui:definename="center"><p:panelheader="Permissões"><h:formid="formPermissoes"><p:messagesautoUpdate="true"/><br/><p:separator/><br/><h:panelGridstyle="text-align:center; align:center;"><p:column><p:commandButtonvalue="Salvar"ajax="false"icon="ui-icon ui-icon-disk"/><p:commandButtonvalue="Atualizar"ajax="false"icon="ui-icon ui-icon-refresh"/><p:commandButtonvalue="Limpar"icon="ui-icon ui-icon-trash"immediate="true"process="@this"><pe:resetEditableValuesfor="formPermissoes"/></p:commandButton></p:column></h:panelGrid><br/><p:separator/><h:panelGridcolumns="2"columnClasses="colunaEsquerda, colunaDireita"><p:selectOneMenuvalue="#{permissoesBean.grupoUsuario}"converter="ConverterGrupoUsuario"><f:selectItemitemLabel="Selecione o Grupo"itemValue=""/><f:selectItemsvalue="#{permissoesBean.grupoUsuarios}"var="grupo"itemLabel="#{grupo.nome}"itemValue="#{grupo.id}"/><p:ajaxupdate="formPermissoes:gridDadosPermissao"event="change"listener="#{permissoesBean.escolherPermissao}"/></p:selectOneMenu></h:panelGrid><p:separator/><br/><h:panelGridcolumns="7"columnClasses="colunaEsquerda, colunaDireita"id="gridDadosPermissao">
felipe_gdr
Diego, suspeito que seja algum erro de validação tente colocar o seu message no update, para ver se alguma mensagem aparece ou então coloque um immediate=true para evitar validações.
Diego_Adriano
Então, não tem o que validar na página! Se eu tentar com um commandbutton o método é chamado …
felipe_gdr
Entendi… então quando o método é chamado pelo commandButton a propriedade permissoesBean.grupoUsuario possui o valor selecionado, conforme esperado?
A fase de validação existe, mesmo que implicitamente. Nela são validados os tipos de dado, como integer e date dos inputs. Também há a fase de conversão. Existe a possibilidade de haver algo errado no seu converter?
Diego_Adriano
Sim, os valor são trazidos seu tiver um commandbutton …
Quanto aos convertes funcionam perfeitamente, inclusive coloquei um println dentro para ver e as conversões ocorrem perfeitamente …
Só sobrou o Evento do Ajax …rs
Daniel_T_S
Diego Adriano:
Cara, vc ta de sacanagem cmg né ?! rsrsrsrs
É exatamente pelos System.Out não serem exibidos que sei que não esta chegando no método …rs
Diego desculpa se você achou uma pergunta tola, era apenas pra ter certeza.
Estou no trabalho agora, mas quando chegar em casa posso colocar um código mostrando
como foi que fiz isso.
Valeu.
Diego_Adriano
Relaxa meu querido !!!
Bele !! Abraços !!
fagajr
Meu querido…
Tópico antigo, mas no método vc tem que criar um AjaxBehaviorEvent event e trabalhar com esse event.
e depois fazer a comparação event.getComponent().getAttributes().get(“value”).toString().trim().equalsIgnoreCase(“bilhetador”) com o campo que passou no xhtml.
por ex:
Galera para responder, o mais simples de tudo que ninguem nem citou.
Sei que a pergunta é antiga, mas pode ajudar muita gente que procura por isso e ainda cai nesse post.
So funciona dentro de um FORM
bota tudo entre <h:form></h:form>
abracos
B
Bruno_Moraes_Rocha
Mude isso: “formPermissoes:gridDadosPermissao” para isso: “formPermissoes”
Ou senão cria um id para p:selectItem e coloque: “formPermissoes:ID_CRIADO_PARA_P:SELECTITEM”.
Mike
A última mensagem do tópico foi em 2015, acho que ele ja resolveu haha
Mas aproveitando, caso alguém queira chamar um método do bean ao selecionar um item do selectOneMenu, basta utilizar o evento itemSelect e obrigatoriamente o método tem que ser void
PS: É importante ressaltar que só deve processar e dar update no que for realmente necessário
Diego_Adriano
Nossa !! Faz tempo mesmo !! Nem lembrava do tópico mais … Vou ter que dar uma revisada nos códigos pra ver como resolvi isso ai !
Mas valeu galera !!
Abraços