Boa tarde galera!
Sou novo no forum e com java, até agora fui me virando e lendo, mas agora dei uma enroscada e preciso de ajuda externa.
Pretendo frequentar e colaborar com o forum…
Estou com um problema no componente p:message do Primefaces…
Eu tenho em meu jsf (mais ou menos):
<p:panel header="Cliente">
<p:panelGrid id="grid" style="width:100%">
<p:inputMask id="codigoUsuario" value="#{novoClienteBean.codigo}" mask="999999" size="6" maxlength="6" required="true" requiredMessage="Campo obrigatório"/><p:message id="codigoMessage" for="codigoUsuario" />
<p:commandButton value="Gravar" id="submitButton" action="#{novoClienteBean.validarForm}" update="grid"/>
...
O requiredMessage funciona normalmente dentro do p:message… mas quando quero adicionar uma mensagem nele pelo meu RequestScoped ele não adiciona, coloquei da seguinte forma no método para testar:
public String validarForm(){
System.out.println("foiiiiii");
FacesContext.getCurrentInstance().addMessage("codigoMessage", new FacesMessage(FacesMessage.SEVERITY_ERROR,"Erro: Dados inválidos", ""));
return null;
}
Ele da o “foiiiii” no console, quer dizer que passa pelo método, mas a mensagem que eu quero adicionar no p:message não ta exibindo.
Eu preciso que seja o p:message individual, pois se eu colocar p:messages, irá exibir todo erro da pagina, e eu só quero que exibe esse individual no mesmo.
(PS: Com o p:messages, ele funciona…)
Alguém sabe o que estou fazendo errado?
Já procurei resposta, e não encontrei nenhuma dúvida parecida com a minha.
Obrigado desde já!
Coloca no botão ajax=“false” e retire o update.
Obrigado pela resposta amigo.
Fiz o que voce disse, ainda não funcionou o addMessage… o requiredMessage aparece se eu deixo o campo em branco, mas agora a mensagem que eu quero que apareça, nao ta aparecendo…
Sabe o que pode ser? Obrigado.
Para seu bem, estude o JSF ou você vai odiá-lo. Conheço mutas pessoas que acabaram desse modo.
required irá barrar a chamada de chegar ao seu método, pois o campo é required e não foi preenchido. Seu método não será invocado desse modo.
[quote=Hebert Coelho]Para seu bem, estude o JSF ou você vai odiá-lo. Conheço mutas pessoas que acabaram desse modo.
required irá barrar a chamada de chegar ao seu método, pois o campo é required e não foi preenchido. Seu método não será invocado desse modo.[/quote]
Mas ele foi preenchido! O que eu quis dizer com o requiredMessage funciona, é que os ‘id’ e ‘for’ estão atribuidos corretamente e funciona quando eu não preencho… Mas quando eu preencho é pra ele ir no metodo validarForm() e verificar se o que o cara digitou passa pelas minhas regras, no caso eu coloquei somente um System.out.println e um addMessage para verificar se passava pelo método, e o System.out.println funciona, só o addMessage que não está adicionando a mensagem que eu quero ao p:message ‘codigoMessage’
Obrigado!
Está usando escopo de view, porque eu vi o seu null lá.
Tente colocar o seu form com prependid como false.
[quote=lele_vader]Está usando escopo de view, porque eu vi o seu null lá.
Tente colocar o seu form com prependid como false.[/quote]
Obrigado pela resposta!
Tentei, e ainda não adiciona a mensagem ao p:message…
Pelo método eu tenho certeza que entra, só não ta adicionando a mensagem ao p:message mesmo…
o p:message:
E o addMessage:
Tenho certeza que está executando o FacesContext.getCurrent…, só que nao ta colocando ali no p:message…
O que pode ser será?
Esquisito.
Achei que não tivesse colocado, por conta do id do client ter sido junto com o form.
Tenta colocar lá no FacesContext.getCurrentInstance().addMessage(“codigoMessage”, new FacesMessage(FacesMessage.SEVERITY_ERROR,“Erro”, “teste”));
o id assim idForm:idComponente
[quote=lele_vader]Esquisito.
Achei que não tivesse colocado, por conta do id do client ter sido junto com o form.
Tenta colocar lá no FacesContext.getCurrentInstance().addMessage(“codigoMessage”, new FacesMessage(FacesMessage.SEVERITY_ERROR,“Erro”, “teste”));
o id assim idForm:idComponente[/quote]
nao deu tb…vou fazer com o p:messages e mudar todo o estilo dele pra ficar igual do p:message (acho que é um trampo a toa por nao conseguir fazer da forma que quero…)
obrigado a todos que tentaram ajudar!
abraço!
Poderia também incluir no update o id do message.
Tentei isso também e não deu.
A unica solução que eu achei foi usar o p:message e deixar o id e for dele iguais, só que com isso o required não funciona, dai a verificação de cambo vazio eu fiz pelo bean…
Obrigado a todos!