3
respostas

Problema ao carregar o messages.properties

Olá a todos, tudo certo?
Não estou conseguindo fazer a aplicação carregar o meu arquivo messages.properties, que coloquei na pasta WEB-INF/, como sugerido no curso.
Segue abaixo meu arquivo messages.properties e minha classe de configuração.
Abraços!
messages.properties
field.required = Campo é obrigatório
field.required.produto.titulo = O campo título é obrigatório.
field.required.produto.descricao = O campo descrição é obrigatório.
field.required.produto.paginas = O número de páginas deve ser preenchido com um valor maior do que 0.
typeMismatch = O tipo de dado foi inválido
Classe AppWebConfiguration
package br.com.casadocodigo.loja.conf;

import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

import br.com.casadocodigo.loja.controllers.HomeController;
import br.com.casadocodigo.loja.dao.ProdutoDao;

@EnableWebMvc
@ComponentScan(basePackageClasses = { HomeController.class, ProdutoDao.class })

public class AppWebConfiguration {

    @Bean
    public InternalResourceViewResolver getResolver() {
        return new InternalResourceViewResolver("WEB-INF/views/", ".jsp");
    }

    @Bean
    public MessageSource getMessageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("WEB-INF/messages");
        messageSource.setDefaultEncoding("UTF-8");
        messageSource.setCacheSeconds(1);
        return messageSource;
    }

}
3 respostas
Digo isto, pois mesmo fazendo a configuração do arquivo de messages.properties, ele ainda não consegue encontrar a mensagem com a chave field.required.produto.titulo, gerando o erro HTTP 500.

Oi Guido,

faltou uma / no seu WEB-INF:

messageSource.setBasename("/WEB-INF/messages");
Oi Otávio, tudo bem?
Corrigi meu código como indicado, colocando a / no início do caminho /WEB-INF. No entanto, o erro continua acontecendo. Vou passar aqui o erro que acontece, bem como a classe appWebConfiguration corrigida.
O erro acontece quando tento testar a validação do produto sem preencher nenhum campo. Quando pressiono o botâo cadastrar com dados inválidos, é que acontece o problema.
Segue abaixo a classe e o erro no console.
Abraços e aguardo retorno. 
Classe appWebConfiguration corrigida
package br.com.casadocodigo.loja.conf;

import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

import br.com.casadocodigo.loja.controllers.HomeController;
import br.com.casadocodigo.loja.dao.ProdutoDao;

@EnableWebMvc
@ComponentScan(basePackageClasses = { HomeController.class, ProdutoDao.class })

public class AppWebConfiguration {

    @Bean
    public InternalResourceViewResolver getResolver() {
        return new InternalResourceViewResolver("WEB-INF/views/", ".jsp");
    }

    @Bean
    public MessageSource getMessageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("/WEB-INF/messages");
        messageSource.setDefaultEncoding("UTF-8");
        messageSource.setCacheSeconds(1);
        return messageSource;
    }

}
Erro no console do eclipse quando cadastro um produto inválido:
SEVERE: Servlet.service() for servlet [jsp] threw exception
org.springframework.context.NoSuchMessageException: No message found under code 'field.required.produto.titulo' for locale 'pt_BR'.