Can't find bundle for base name Messages, locale pt_BR: java.util.MissingResourceException: Can't find bundle for base name Messages, locale pt_BR

Pessoal,

Estou criando um projeto como maven-archetype-j2ee-simple, um projeto web que envolve JSF e Prime faces.
Estou tentando customizar as mensagem de erro do BeanValidador para apresentar o nome do campo mais a mensagem de erro.

O que eu fiz foi:

Criei um arquivo chamado Messages.properties.
Configurei o faces-config.xml colocando o message-budle

Porém, quando clico no campo para testar a validação é apresentada a mensagem :

16:01:03,369 WARNING [javax.enterprise.resource.webcontainer.jsf.lifecycle] (http–127.0.0.1-8080-3) Can’t find bundle for base name br.com.project.mensagem.Messages, locale pt_BR: java.util.MissingResourceException: Can’t find bundle for base name br.com.project.mensagem.Messages, locale pt_BR

Em medida de desespero, já coloquei esta estrutura(br.com.project.mensagem) dentro de todas as pastas dos modulos (ejb, war, ear e model) mas mesmo assim não funcionou.

Teriam uma ideia de qual e o lugar correto? OU, como faço para descobrir o local que o meu faces-config.xml toma como padrão essa leitura? pois, certamente o mesmo deve estar procurando o br.com.project.mensagem.Messages.properties dentro de alguma diretório raiz (ex: war/src)

<?xml version="1.0" encoding="UTF-8"?>
<faces-config
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
    version="2.2">

	<application>		
	
	<message-bundle>br.com.project.mensagem.Messages</message-bundle>
		<locale-config>
			<default-locale>pt_BR</default-locale>
		</locale-config>

	</application>
</faces-config>

Boa tarde,

Altere o seu faces-config para:

        <application>
		<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
		<locale-config>
			<default-locale>pt_BR</default-locale>
			<supported-locale>pt_BR</supported-locale>
		</locale-config>
		<message-bundle>messages</message-bundle>
	</application>

salve o seu arquivo .properties com o nome de messages_pt_BR.properties dentro da pasta src/main/resources

Funcionou perfeitamente.

Só não consegui e não foi necessário colocar a linha:

<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>

A IDE apresenta a mensagem:

view-handler references to non-existent class “com.sun.facelets.FaceletViewHandler”

Mas resolveu o problema. Muito obrigado!

Pessoal, acabei de precipitando na resposta. Não vi direito que para alguns campos que utilizo o bean validator do hibernate, a mensagem não está sendo apresentada corretamente. É apresentado o id do campo. “j_idt30”

Como pode ser visto, no campo onde uso @NotBlank, que vem org.hibernate.validator.constraints.NotBlank, não esta funcioando.

Para o @NotNull, que vem do import javax.validation.constraints.NotNull, o mesmo funcionou perfeitamente.

Tentei realizar algumas alterações no projeto mas sem sucesso. para os que vem da classe org.hibernate.validator.constraints.* a mensagem customizada não é apresentada corretamente.

Alguém teria uma ideia do que pode ser?

Pessoal, consegui resolver.
O meu problema estava acontecendo devido ao uso de <h:outputText>. Simplesmente troquei, em to o projeto para <p:outPutLabel>.

Lembrando sempre se amarrar o for do label com o id do componente que receberá os dados.

Bom dia,

Um forma de fazer isso tbm é dentro do h:inputText voce usar o parametro label.

<h:inputText id="nome" size="60" maxlength="80" value="#{cadastroProdutoBean.produto.nome}" label="#{messages['label.produto.nome']}" />
1 curtida