[RESOLVIDO] i18n no Controller

1 resposta
F

E ai pessoal...

Estou com a seguinte dúvida....
Tenho uma aplicação que na hora de fazer o login faz uma validação no banco e caso o usuário esteja incorreto seta uma mensagem na tela no componente messages do PrimeFace... a questão é que minha aplicação é internacionalizada.... a primeira pergunta é se está certo eu setar uma mensagem na tela do Controller e se sim, como coloco essa mensagem internacionalizada na tela via Controller?

Segue códigos:

login.jsf

<h:form>
		
	<p:messages id="messages" autoUpdate="true" />
		
	<p:panelGrid columns="2">
		<f:facet name="header">
		#{i18n['login.panel.header']}					
		</f:facet>
						
		<h:outputText value="#{i18n['login.user.label']}" />
		<p:inputText id="user" value="#{loginController.user}" required="true" requiredMessage="#{i18n['login.user.required']}" />
					
		<h:outputText value="#{i18n['login.password.label']}" />
		<p:password id="password" value="#{loginController.password}" required="true" requiredMessage="#{i18n['login.password.required']}" feedback="false" />
					
		<f:facet name="footer">
			<p:commandButton value="#{i18n['login.submit.value']}" action="#{loginController.login}" icon="ui-icon-check" ajax="false" />
		</f:facet>
	</p:panelGrid>
		
</h:form>

LoginController.java

/**
	 * Captura a sessão do contexto criado pelo JavaServer Faces
	 */
	FacesContext context = FacesContext.getCurrentInstance();
	HttpSession session = (HttpSession) context.getExternalContext().getSession(false);
	
	private String user;
	
	private String password;
	
	public String login() {
		//TODO Puxar informações da database usuário .
		if(user.equals("root") && password.equals("f13x@07*")) {
			System.out.println("Usuário aceito ! ");
			session.setAttribute("role", "adm");
			return "logged";
		} else {
			System.out.println("Usuário inválido");
			context.addMessage("messages", new FacesMessage(FacesMessage.SEVERITY_ERROR, "[MENSAGEM_TEM_QUE_VIR_AQUI]", "[MENSAGEM_TEM_QUE_VIR_AQUI]"));
		}
		
		return null;
	}

Alguém pode me ajudar?

Abraços

1 Resposta

F

Pessoal…

Descobri a solução…

Se alguém um dia acabar caindo aqui basta fazer o seguinte

ResourceBundle bundle = FacesContext.getCurrentInstance().getApplication().getResourceBundle(FacesContext.getCurrentInstance(), "i18n"); String messageError = bundle.getString("login.failed"); FacesContext.getCurrentInstance().addMessage("messages", new FacesMessage(FacesMessage.SEVERITY_ERROR, messageError, messageError));

Valeu !

Criado 8 de fevereiro de 2012
Ultima resposta 8 de fev. de 2012
Respostas 1
Participantes 1