Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

"messageSource" SpringMVC

Estou tendo serios problemas com Spring MVC

inseri o metodo messagesource no AppWebconfiguration e simplismente não funciona a validação dos parametros...dá http 500

Segue erro...

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messagesource'

segue codigo..

package br.roupasintimas.loja.conf;

import org.springframework.context.MessageSource;
//import org.hibernate.annotations.Filter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
//import org.springframework.web.servlet.config.annotation.EnableWebMvc;
//import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

import br.roupasintimas.loja.controllers.HomeController;
import br.roupasintimas.loja.daos.ProdutoDAO;

//@EnableWebMvc //digo pro spring que vou usar a parte mvc dele
@Configuration
@ComponentScan(basePackageClasses={HomeController.class, ProdutoDAO.class}) //digo pro Spring varrer esses pacotes

public class AppWebConfiguration {

    //Aqui vamos mapear onde está a view

    @Bean //Classe gerenciado pelo spring
    public InternalResourceViewResolver internalResourceViewResolver(){

        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp"); //Pra não ficar digitando no controler
        return resolver;


    }
    @Bean
    public MessageSource messagesource(){

        ReloadableResourceBundleMessageSource messagesource = new ReloadableResourceBundleMessageSource();
        messagesource.setBasename("/WEB-INF/message");
        messagesource.setDefaultEncoding("UTF-8");
        messagesource.setCacheSeconds(1);

        return messagesource();
    }

}

Alguem poderia dar uma força?

5 respostas

Ola Daniele, tudo bem ?

Repare no trecho ..

@Bean
    public MessageSource messagesource(){

        ReloadableResourceBundleMessageSource messagesource = new ReloadableResourceBundleMessageSource();
        messagesource.setBasename("/WEB-INF/message");
        messagesource.setDefaultEncoding("UTF-8");
        messagesource.setCacheSeconds(1);

        return messagesource();
    }

O retorno do método faz uma nova chamada ao próprio método ao invés de retornar o objeto. Possivelmente isso vai estourar um StackOverflowError. Deve ser return messagesource; <- nome de variável que contém a referencia.

Outra coisa, se não me engano o Spring busca pelo bean do MessageSource especificamente pelo nome do bean. O que quer dizer que ou o nome do método deve ser messageSource() (camelCase) ou a anotação do bean deve conter o name como no exemplo -> @Bean(name="messageSource").

Faça essas alterações e veja se funciona. Espero ter ajudado. Abraço!

public MessageSource messageSource(){

        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("/WEB-INF/message"); //pode ser messages ou message
        messageSource.setDefaultEncoding("UTF-8");
        messageSource.setCacheSeconds(1);

        return messageSource();
    }

Fiz a troca mas nada...mesmo problema de antes

Oi Daniele,

O método continua retornando uma chamada ao próprio método. Troque o retorno para return messageSource; apenas.

Verifique o que acontece. Se permanecer dando erro poste a stack trace aqui pra darmos uma olhada.

Obrigada...

solução!

Oi Daniele,

Funcionou ? Se tiver funcionado marque o tópico como solucionado para ajudar o pessoal que passar por aqui procurando por duvidas semelhantes.

Abraço e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software