[Resolvido] VRaptor 3.2 Can't find bundle for base name messages, locale pt_BR

Oi pessoal!
O VRaptor 3.2 não possui a pasta classes em WEB-INF, lá eu colocava o messages.properties, coloquei na pasta /build e dentro de /build/classes sem sucesso, o erro é:

erro 500

root cause

java.util.MissingResourceException: Can't find bundle for base name messages, locale pt_BR
	java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1539)
	java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1278)
	java.util.ResourceBundle.getBundle(ResourceBundle.java:733)

Meu web.xml:

<context-param>
    <param-name>br.com.caelum.vraptor.packages</param-name>
    <param-value>br.com.caelum.vraptor.converter.l10n</param-value>
</context-param>

<context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.locale</param-name>
    <param-value>pt_BR</param-value>
</context-param>

<context-param>
    <param-name>br.com.caelum.vraptor.encoding</param-name>
    <param-value>UTF-8</param-value>
</context-param>

Mudou alguma coisa nesta versão ou preciso especificar algo?
Abraço!

Aqui eu tenho colocado no meu /src, que quando eu gero o EAR vai para o war/WEB-INF/classes.

E ai Garcia!!
Eu tentei na /src tb, mas tomo nullPointerExeception se deixar lá. =/

root cause

java.lang.NullPointerException
	br.com.imobiliaria.controller.ProprietarioController$1.<init>(ProprietarioController.java:89)
	br.com.imobiliaria.controller.ProprietarioController.adiciona(ProprietarioController.java:56)

Abraço!

põe isso no web.xml:

<context-param>
		<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
		<param-value>messages</param-value>
	</context-param>

Oi Lucas!
Coloquei isso no web.xml e deixei o messages.properties em build/classes, tentei tb na /build, e continuo recebendo a mesma mensagem:

Caused by: java.util.MissingResourceException: Can't find bundle for base name messages, locale pt_BR
	at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1539)
	at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1278)
	at java.util.ResourceBundle.getBundle(ResourceBundle.java:733)
	at br.com.caelum.vraptor.validator.Validations.<init>(Validations.java:57)
	at br.com.imobiliaria.controller.ProprietarioController$1.<init>(ProprietarioController.java:56)
	at br.com.imobiliaria.controller.ProprietarioController.adiciona(ProprietarioController.java:56)

Abraço!

o messages.properties precisa estar na pasta src/
(ou qqer outra source folder)

Deu boa pessoal!
O message.properties ficou na /src mesmo, o NullPointerException era referente a validação do endereço do proprietário:

// Endereço				
				that(!proprietario.getEndereco().getLogradouro().isEmpty(), "proprietario.logradouro",
				"logradouroProprietario.obrigatorio");
				that(proprietario.getEndereco().getNumero() != null, "proprietario.numeroLogradouro",
				"numeroLogradouroProprietario.obrigatorio");
				that(!proprietario.getEndereco().getBairro().isEmpty(), "proprietario.bairro",
				"bairroProprietario.obrigatorio");
				that(!proprietario.getEndereco().getCidade().isEmpty(), "proprietario.cidade",
				"cidadeProprietario.obrigatorio");
				that(!proprietario.getEndereco().getEstado().isEmpty(), "proprietario.estado",
				"estadoProprietario.obrigatorio");
				that(!proprietario.getEndereco().getCep().isEmpty(), "proprietario.cep",
				"cepProprietario.obrigatorio");

Não sei o motivo de não aceitar da forma acima, então fiz igual a validação que tenho no método busca() que o Lucas me passou, usando a classe StringUtils:

// Endereço
				Endereco endereco = proprietario.getEndereco();
				that(!endereco.getLogradouro().isEmpty(), "proprietario.logradouro",
				"logradouroProprietario.obrigatorio");
				that(endereco.getNumero() != null, "proprietario.numeroLogradouro",
				"numeroLogradouroProprietario.obrigatorio");
				that(!endereco.getBairro().isEmpty(), "proprietario.bairro",
				"bairroProprietario.obrigatorio");
				that(!StringUtils.isBlank(endereco.getCidade()), "proprietario.cidade",
				"cidadeProprietario.obrigatorio");
				that(!StringUtils.isBlank(endereco.getEstado()), "proprietario.estado",
				"estadoProprietario.obrigatorio");
				that(!endereco.getCep().isEmpty(), "proprietario.cep",
				"cepProprietario.obrigatorio");

Engraçado que é só em Estado e Cidade que dá esse problema, no restante não. Têm alguma restrição do validator em relação a dados vindos de combobox da JSP? Reparem que só usei StringUtils em Estado e Cidade, no Bairro não.

Os combos a que me refiro são estes:

<label for="estado">Estado</label>	
			<select id="estadoDropdown" name="imovel.endereco.estado">
					<option value="">Selecione o Estado</option>
					<option value="${imovel.endereco.estado }" selected="selected">${imovel.endereco.estado }</option>
					<option value="AC">Acre</option>
					<option value="AL">Alagoas</option>
					<option value="AM">Amazonas</option>
					<option value="AP">Amap&aacute;</option>
					<option value="BA">Bahia</option>
					<option value="CE">Cear&aacute;</option>
					<option value="DF">Distrito Federal</option>
					<option value="ES">Espirito Santo</option>
					<option value="GO">Goi&aacute;s</option>
					<option value="MA">Maranh&atilde;o</option>
					<option value="MG">Minas Gerais</option>
					<option value="MS">Mato Grosso do Sul</option>
					<option value="MT">Mato Grosso</option>
					<option value="PA">Par&aacute;</option>
					<option value="PB">Para&iacute;ba</option>
					<option value="PE">Pernambuco</option>
					<option value="PI">Piau&iacute;</option>
					<option value="PR">Paran&aacute;</option>
					<option value="RJ">Rio de Janeiro</option>
					<option value="RN">Rio Grande do Norte</option>
					<option value="RO">Rond&ocirc;nia</option>
					<option value="RR">Roraima</option>
					<option value="RS">Rio Grande do Sul</option>
					<option value="SC">Santa Catarina</option>
					<option value="SE">Sergipe</option>
					<option value="SP">S&atilde;o Paulo</option>
					<option value="TO">Tocantins</option>
				</select><br/><br />	
				
				
				<label>Cidade</label>
				<select id="municipioDropdown" disabled="disabled" name="imovel.endereco.cidade"></select>

Esses aí que causam o NullPointerException no Controller.
Abraço!

Opa!
Sabem explicar pq o combo de cidade chega null no Controller? Olhei o código fonte pelo browser e está ok:

[code]Cidade

<select id="municipioDropdown" disabled="disabled" name="imovel.endereco.cidade">
<option selected="selected" value="Rio de Janeiro">Rio de Janeiro	</option>
</select>

[/code]
Isso acontece na hora de alterar o imóvel, o estado e cidade são carregados, mas ao enviar, chega null lá. Estou validando assim:

// Endereço
				Endereco endereco = imovel.getEndereco();			
							
				that(!endereco.getLogradouro().isEmpty(), "imovel.logradouro",
						"logradouroImovel.obrigatorio");
				that(endereco.getNumero() != null, "imovel.numeroLogradouro",
				"numeroImovel.obrigatorio");				
				that(!endereco.getBairro().isEmpty(), "imovel.bairro",
						"bairroImovel.obrigatorio");
				that(!StringUtils.isBlank(endereco.getCidade()), "imovel.cidade",
						"cidadeImovel.obrigatorio");
				that(!StringUtils.isBlank(endereco.getEstado()), "imovel.estado",
						"estadoImovel.obrigatorio");
				that(!endereco.getCep().isEmpty(), "imovel.cep",
						"cepImovel.obrigatorio");			

Abraço!

se tá como disabled=disabled o parâmetro não vai pra requisição, então o atributo vai ser null

Putz… "/
Pensei que só desabilitava o combo mas mandasse o valor que estava no name dele…
Valeu Lucas! Deu certo!
Abraço!