Erro no VRaptor com ResourceBundle

7 respostas
A

Pessoal, etou usando Vraptor 3 e estou tendo o seguinte erro ao chamar meu código de validação:

Caused by: java.util.MissingResourceException: Can't find bundle for base name messages, locale pt_BR
	at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1521) [:1.6.0_16]
	at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1260) [:1.6.0_16]
	at java.util.ResourceBundle.getBundle(ResourceBundle.java:715) [:1.6.0_16]
	at br.com.caelum.vraptor.validator.Validations.<init>(Validations.java:57) [:]
	at br.com.simuquiz.web.controller.SignupController$1.<init>(SignupController.java:27) [:]
	at br.com.simuquiz.web.controller.SignupController.create(SignupController.java:27) [:]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.6.0_16]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [:1.6.0_16]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [:1.6.0_16]
	at java.lang.reflect.Method.invoke(Method.java:597) [:1.6.0_16]
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:57) [:]
	... 49 more

Aqui está o codigo java:

public void create(final String email, final String login, final String password, final String passconfirm) {
        validator.checking(new Validations(){{
            // valida se email é nulo
            if (that(email != null && !email.isEmpty(), "email", "email.nulo")) {
        	// valida se email é válido
                that(email.matches("^[\\w\\-]([\\.\\w])+[\\w]+@([\\w\\-]+\\.)+[A-Z]{2,4}$"), "email", "email.invalido");
            }
            // valida de login é nulo
            if (that(login != null && !login.isEmpty(), "login", "login.nulo")) {
        	// valida se login tem tamanho válido
        	that(login.length() > 6, "login", "login.tamanho.invalido");
            }
            // valida de senha e confirmação são nulas
            if (that(password != null && !password.isEmpty(), "password", "password.nulo") && that(passconfirm != null && !passconfirm.isEmpty(), "passconfirm", "passconfirm.nulo")) {
        	// valida se a senha tem tamanho válido
        	that(password.length() > 6, "password", "password.tamanho.invalido");
        	// valida se a confirmação tem tamanho válido
        	that(passconfirm.length() > 6, "passconfirm", "passconfirm.tamanho.invalido");
        	// valida se a senha e a confirmação são iguais
                that(password.equals(passconfirm), "password", "password.passconfirm.diferente");
            }
        }});

        validator.onErrorForwardTo(this).signup();

        Usuario usuario = new Usuario();
        usuario.setEmail(email);
        usuario.setLogin(login);
        usuario.setPassword(password);

        SignupBeanRemote signupBean = ServiceLocator.getSignupBeanRemote();
        usuario = signupBean.persist(usuario);

        result.forwardTo(SignupController.class).success();
    }

Criei um arquivo messages dentro do SRC do projeto. Também tentei um messages_pt_BR. Mas ele continua dando o mesmo erro.

Alguém pode me ajudar?

7 Respostas

Lucas_Cavalcanti

o arquivo correto é o messages.properties.

de qqer forma, nas últimas versões do VRaptor isso não era obrigatório… atualize o vraptor, de preferência pra 3.3.1

A

Estou usando o VRaptor 3.2.0. Tentei também com o messages.properties e nada.
E não sendo obrigatorio como voce disse, de onde ele tiraria as mensagens de erro da validação?

Lucas_Cavalcanti

ele nao tira de lugar nenhum, coloca ??? em volta da chave que vc passou…

vc colocou o messages.properties numa source folder?

A

Lucas Cavalcanti:
ele nao tira de lugar nenhum, coloca ??? em volta da chave que vc passou…

vc colocou o messages.properties numa source folder?

Coloquei o messages.properties dentro do diretorio src no projeto web do eclipse. No war ele fica dentro da WEB-INF/classes/

Lucas_Cavalcanti

então deveria estar funcionando…

verifique se o nome está correto:
messages.properties

e verifique se o arquivo está mesmo indo pro WEB-INF/classes (dê um clean no projeto e no servidor)

A

Lucas Cavalcanti:
então deveria estar funcionando…

verifique se o nome está correto:
messages.properties

e verifique se o arquivo está mesmo indo pro WEB-INF/classes (dê um clean no projeto e no servidor)

Lucas, fiz isso tudo e nada. O que resolveu o problema é que estou chamando agora um outro construtor da classe Validator:

validator.checking(new Validations(ResourceBundle.getBundle("/messages")){{

Usando essa barra no começo do nome do arquivo funcionou. Bem pelo menos parou de dar exceção, mas não to conseguindo ainda escrever as mensagens no jsp. Bem mas isso é outro problema que vou investigar!

Lucas_Cavalcanti

bem estranho…

de qqer forma pra escrever as mensagens de erro, no final dessa página:
http://vraptor.caelum.com.br/documentacao/validacao/

Criado 23 de fevereiro de 2011
Ultima resposta 24 de fev. de 2011
Respostas 7
Participantes 2