Retornar mensagem do managedBean para pagina JSF [RESOLVIDO]

4 respostas
J
Galera eu consigo retornar uma mensagem de um managedBean para uma pagina JSF, o problema é que não consigo mostrar essa mensagem na frente do campo que indiquei. Segue a pagina e o managedBean.
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Teste Mensagem JSF 2.0</title>
    </h:head>
    <h:body>
        <f:view>
            <h:form>
                <h:inputText id="xxx" value="#{ManagedBeanPessoa.nome}"/>
                <h:message id="msg_xxx" for="xxx" /><br/>
                <h:commandButton value="teste" action="#{ManagedBeanPessoa.erro}"/>
            </h:form>
        </f:view>
    </h:body>
</html>
package managedBean;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author prog2
 */
@ManagedBean(name = "ManagedBeanPessoa")
@RequestScoped
public class ManagedBeanPessoa {

    String nome;

    public ManagedBeanPessoa() {
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public void erro() {
        if (nome.equals("x")) {
            FacesContext.getCurrentInstance().addMessage("xxx", new FacesMessage("nome inesistente!"));
        }
    }
}
A mensagem aparece mais não na frente do campo que estipulei. Por que isso ocorre?

4 Respostas

A

Acredito que isso seja problema de layout.
Tente colocar este panelGrid ajudar no layout

<f:view>   
            <h:form>   
               [b] <h:panelGrid column=2>[/b]
                    <h:inputText id="xxx" value="#{ManagedBeanPessoa.nome}"/>   
                    <h:message id="msg_xxx" for="xxx" /><br/>   
                    <h:commandButton value="teste" action="#{ManagedBeanPessoa.erro}"/>   
                [b]</panelGrid>[/b]
            </h:form>   
        </f:view>
J

Eu tentei assim e não funciou!

J

No <h:form> eu coloquei um id dai ficou assim: <h:form="y">
Feito isso no meu managedBeans na linha:

FacesContext.getCurrentInstance().addMessage("xxx", new FacesMessage("nome inesistente!"));

eu coloquei no primeiro paramentro do addMessage que é o id campo onde assim oh: "y:xxx" finalizando no
managedBean ficou:

FacesContext.getCurrentInstance().addMessage("y:xxx", new FacesMessage("nome inesistente!"));

Ai funciona! So lembrando mesmo assim o <h:message> é necessario!

A

Parabens josimarsis.

Realmente não tinha reparado neste detalhe.

Abracos

Criado 28 de abril de 2010
Ultima resposta 28 de abr. de 2010
Respostas 4
Participantes 2