javasf@googlegroups.com
[Top] [All Lists]

Re: [javasf] Mais uma: internacionalização

Subject: Re: [javasf] Mais uma: internacionalização
From: Arthur Franco Ferreira
Date: Tue, 12 Jul 2011 16:08:16 -0300
No seu XHTML você tem que dizer para ele recuperar o locale de acordo com as configurações do navegador (ou você definir manualmente). Precisa utilizar a tag:

<f:view locale="#{facesContext.externalContext.requestLocale}/>
// formulários, botões e códigos da página.
</f:view>

Geralmente essa tag é colocada no template geral e todas as páginas que fazem parte desse template recebem a internacionalização.

Arthur Franco Ferreira
Analista Desenvolvedor Web Java Pleno
Licenciado em Computação
UNILASALLE-RJ




2011/7/12 Jean Jorge Michel <jeanjmichel@xxxxxxxxx>
Calma ai, vou tentar agora ;-)



Em 12 de julho de 2011 15:37, Roberto Souza <roberto.rjunior@xxxxxxxxx> escreveu:

Conseguiu ?

Em 12 de julho de 2011 15:29, Matruskan <matruskan@xxxxxxxxx> escreveu:

Valeu, muito bom.


2011/7/12 Roberto Souza <roberto.rjunior@xxxxxxxxx>
Cria uma classe:

import java.util.Locale;
import java.util.ResourceBundle;

import javax.faces.context.FacesContext;

public class Mensagem {

public static String getMensagem(String chave)
{
Locale locale = FacesContext.getCurrentInstance().getViewRoot().getLocale();
ResourceBundle bundle = ResourceBundle.getBundle(FacesContext.getCurrentInstance().getApplication().getMessageBundle(), locale);
return bundle.getString(chave);
}
}

no seu managed bean coloca: 

String mensagem = Mensagem.getMensagem("key");

abs

Em 12 de julho de 2011 15:14, Jean Jorge Michel <jeanjmichel@xxxxxxxxx> escreveu:

Pode ser, mas eu tenho que pegar o bundle de acordo com o Locale do usuário então! ;)

Alguma dica?

Valeu.






Em 12 de julho de 2011 15:01, Matruskan <matruskan@xxxxxxxxx> escreveu:

Eu fiz algo como:

String mensagemDeErro = ResourceBundle.getBundle("caminho.para.o.bundle").getString("key");



2011/7/12 Jean Jorge Michel <jeanjmichel@xxxxxxxxx>
Galera, pergunto aos mestres... eu estou fazendo o login dos usuários, quando o cara não consegue acessar (por erro de senha ou por não existir o usuário) eu retorno para login.xhtml e gero um erro no contexto do JSF.

Na minha página de login aparece a mensagem de erro, porém não está internacionalizada (como todo o restante da p[agina que está).

Eis o fonte do bean e da página. O resultado é que aparece na página de login é isso: loginError
Ele não substitui pela mensagem do bundle.


Bean:

package com.managedbean;

 

import static com.util.PasswordUtil.hashPassword;

import java.io.Serializable;

import java.util.logging.Logger;

import javax.ejb.EJB;

import javax.faces.application.FacesMessage;

import javax.faces.bean.ManagedBean;

import javax.faces.context.FacesContext;

import javax.servlet.http.HttpSession;

import com.model.entity.User;

import com.model.entity.facade.UserFacade;

 

@ManagedBean(name="accessControlBean")

public class AccessControlBean implements Serializable {

   

    private static final long serialVersionUID = 1L;

    private Logger logger = Logger.getLogger("com.managedbean.AccessControlBean");

    private String username;

    private String password;

    @EJB

    private UserFacade userFacade;

    private final FacesContext facesContext = FacesContext.getCurrentInstance();

   

    public void setUsername(String username) {

      this.username = username;

    }

   

    public String getUsername() {

      return this.username;

    }

   

    public void setPassword(String password) {

      this.password = hashPassword(password);

    }

   

    public String getPassword() {

      return this.password;

    }

   

    public String doLogin() {

      User u = userFacade.findUserByUsername(this.username);

     

      if(u != null && u.getPassword().equals(this.password)) {

            logger.info("User accepted");

            this.facesContext.getExternalContext().getSessionMap()

                      .put("userAuthenticated", u);

 

            return "/faces/home.xhtml";

      }

      else {

            logger.info("User do not exists or incorrect password");

           

            this.facesContext.addMessage(null,

                                         new FacesMessage(FacesMessage.SEVERITY_ERROR,

                                                          "loginError",

                                                          "loginError"));

           

            return "/faces/login.xhtml";

      }

    }

   

    public String doLogoff() {

      logger.info("Log out user");

     

      this.facesContext.getExternalContext().getSessionMap()

                      .remove("userAuthenticated");

      HttpSession session = (HttpSession)

                            facesContext.getExternalContext().getSession(false);

      session.invalidate();

     

      return "/faces/login.xhtml";

    }

   

    public AccessControlBean() {

    }

}



Página:

<?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" xml:lang="en" lang="en"

      xmlns:f="http://java.sun.com/jsf/core"

      xmlns:h="http://java.sun.com/jsf/html"

      xmlns:ui="http://java.sun.com/jsf/facelets"

      xmlns:c="http://java.sun.com/jstl/core">

  <head>

    <title>Notes</title>

  </head>

  <body>

    <h:form id="login">

      <h:panelGrid columns="2">

        <h:outputLabel for="username" value="#{bundle.username} :"

                       styleClass="labelLogin" />

          <h:inputText id="username" value="#{accessControlBean.username}"

                       required="true" styleClass="textField">

            <f:validateLength minimum="4" maximum="20" />

          </h:inputText>

          <h:outputLabel for="password" value="#{bundle.password} :"

                         styleClass="labelLogin" />

          <h:inputSecret id="password" value="#{accessControlBean.password}"

                         required="true" styleClass="textField">

            <f:validateLength minimum="6" maximum="20" />

          </h:inputSecret>

          <h:commandButton id="action" type="submit" value="#{bundle.access}"

              action="#{accessControlBean.doLogin}" styleClass="actionButton" />

      </h:panelGrid>

 

      <h:messages layout="table" showSummary="true" showDetail="false" globalOnly="true"/>


    </h:form>

  </body>

</html>


Meu arquivo de bundle tem a entrada: loginError=Invalid user or password

Pela atenção, obrigado.


--
Best regards,
Jean J. Michel

* Sent from my cellphone, please forgive the lack of accents and punctuation marks ;)
My blogs: http://www.jeanjmichel.blogspot.com and http://www.anonymousbiker.wordpress.com
My Twitter: http://twitter.com/jeanjmichel

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil



--
Best regards,
Jean J. Michel

* Sent from my cellphone, please forgive the lack of accents and punctuation marks ;)
My blogs: http://www.jeanjmichel.blogspot.com and http://www.anonymousbiker.wordpress.com
My Twitter: http://twitter.com/jeanjmichel

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil



--
Roberto Coelho

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil



--
Roberto Coelho

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil



--
Best regards,
Jean J. Michel

* Sent from my cellphone, please forgive the lack of accents and punctuation marks ;)
My blogs: http://www.jeanjmichel.blogspot.com and http://www.anonymousbiker.wordpress.com
My Twitter: http://twitter.com/jeanjmichel

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil
<Prev in Thread] Current Thread [Next in Thread>