Trocar msg padrões Java Server Faces (JSF)

Olá Pessoal,

Estou querendo trocar(traduzir) e também incluir as mensagens padrões do JSF.

Exemplo: Quando eu entro uma letra em campo onde só número aceita o JSF volta a seguinte msg: Specified value is not a valid number.
Ou quando deixo o campo vazio o JSF devolve Value is required.

Acontece que estas msgs fica dentro de um pacote javax.faces.Message que faz parte da implementação do JSF.
E eu não sei como trocá-las. :frowning:
Agradeço qualquer idéia. :lol:

Até mais.
Fabrício Luis
http://www.ce3po.com

O código JSP (JSF) está abaixo:

%@ taglib uri="http://java.sun.com/jsf/html" prefix="jsf_h"%> 
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="jsf_f"%>
<%@ taglib uri="http://myfaces.sourceforge.net/tld/myfaces_ext_0_9.tld" prefix="x"%> 

<html>
	<head>
		<title>Teste com JSF</title>
	</head>
	<body>
	<jsf_f:loadBundle basename="mensagens" var="msg" />

	<jsf_f:view >
	<jsf_h:form>
		a: <jsf_h:inputText id="valorA" value="#{soma.valorA}" required="true"
			validator="#{soma.validate}" />
        <jsf_h:message
           style="color: red; font-family: 'New Century Schoolbook', serif; font-style: oblique; text-decoration: overline" 
           id="errors1" for="valorA"/>
		<br>
		b: <x:inputText id="valorB" value="#{soma.valorB}" required="true"
			validator="#{soma.validate}" />
        <jsf_h:message 
           style="color: red; font-family: 'New Century Schoolbook', serif; font-style: oblique; text-decoration: overline" 
           for="valorB"/>
		<br>
		<jsf_h:commandButton id="OK" action="sucesso" value="OK" />
	</jsf_h:form>
	</jsf_f:view>
</body>
</html>

Ao invés de alterar o arquivo javax.faces.Messages.properties, crie um para o locale pt_BR. Você pode criar um novo arquivo usando o Messages.properties e traduzindo as mensagens ou você pode pegar esse arquivo aqui, que está no cvs do myfaces.
Coloque ele na mesma estrutura de pacote javax.faces.Messages_pt_BR.properties
Ai na sua aplicação você muda o locale para pt_BR

javax.faces.context.FacesContext context = javax.faces.context.FacesContext.getCurrentInstance(); context.getViewRoot().setLocale(new java.util.Locale("pt", "BR"));
e pronto…

Obrigado CODE, pela informação. :smiley:

Eu resolvi fazendo o seguinte:

  • coloque no arquivo faces-config.xml o seguinte código:
<faces-config>
  <application> 
    <!-- Vincula arquivo de mensagens -->
    <message-bundle>mensagens</message-bundle> 
  </application>
....    

melhorei o código JSP:

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="jsf_h"%> 
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="jsf_f"%>
<%@ taglib uri="http://myfaces.sourceforge.net/tld/myfaces_ext_0_9.tld" prefix="x"%> 

<html>
<jsf_f:view>
  <head>
	<title>Teste com JSF</title>
	<x:stylesheet path="/default.css" />
  </head>
  <body>
	<jsf_f:loadBundle basename="mensagens" var="msg"/>
	<jsf_h:form>
		<jsf_h:outputText value="#{msg.campoValorA}" />
		<jsf_h:inputText id="valorA" value="#{soma.valorA}" required="true"
			validator="#{soma.validate}" />
        <jsf_h:message id="erro1" styleClass="CABECALHO" for="valorA"/>
		<br>
		<jsf_h:outputText value="#{msg.campoValorB}" />
		<x:inputText id="valorB" value="#{soma.valorB}" required="true"
			validator="#{soma.validate}" />
        <jsf_h:message id="erro2" styleClass="CABECALHO" for="valorB"/>
		<br>
		<jsf_h:commandButton id="OK" action="sucesso" value="OK" />
	</jsf_h:form>
  </body>
</jsf_f:view>
</html>

E gravei um arquivo chamado mensagem.properties no diretório
…WEB-INFclasses

Mas vou tentar a sua idéia também. VALEU. :wink:
Agradeço a sua idéia.

Até mais.
Fabrício Luis
http://www.ce3po.com

Sei que o post é antigo, mas precisei disso e achei uma solução bem mais simples e prática, para substituir a mensagem basta acrescentar o atributo “requiredMessage” no componente que deseja validar:

Ex:

<jsf_h:inputText id="valorA" value="#{soma.valorA}" required="true" validator="#{soma.validate}" requiredMessage="Campo obrigatório" />