Estou fazendo os exercícios da aula 7, criei o arquivo com as mensagens , o método messageSource e adicionei a tag form no jsp e ainda não funciona e não da erro, simplesmente mostra o form sem as mensagens, parece que o sistema não entende que estou tratando para mostrar alerta nos campos, o que pode ser ?
Esses são os código que tenho:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
<!-- ... restante do código ... -->
<form:form action= "${s:mvcUrl('PC#gravar').build()}" method="post">
<div>
<label>Titulo</label>
<input type="text" name="titulo">
<form:errors path="produto.titulo" />
</div>
<div>
<label>Descrição</label>
<textarea rows="10" cols="20" name="descricao"></textarea>
<form:errors path="produto.descricao" />
</div>
<div>
<label>Páginas</label>
<input type="number" name="paginas">
<form:errors path="produto.paginas" />
</div>
<c:forEach items="${tipos}" var="tipoPreco" varStatus="status">
<div>
<label>${tipoPreco}</label>
<input type="text" name="precos[${status.index}].valor" >
<input type="hidden" name="precos[${status.index}].tipo" value="${tipoPreco}" >
</div>
</c:forEach>
<button type="submit">Salvar</button>
</form:form>
messages.properties
field.required = Campo obrigatório
field.required.produto.titulo = O titulo é obrigatório
field.required.produto.paginas = O campo páginas é obrigatorio
field.required.produto.descricao = O campo descrição é obrigatorio
typeMismatch = o tipo do dado é inválido
messageSource
@Bean
public MessageSource messageSource(){
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("/WEB-INF/messages");
messageSource.setDefaultEncoding("UTF-8");
messageSource.setCacheSeconds(1);
return messageSource;
}
ProdutosController
@RequestMapping("/form")
public ModelAndView form() {
ModelAndView modelView = new ModelAndView("produtos/form");
modelView.addObject("tipos", TipoPreco.values());
return modelView;
}
@RequestMapping(method=RequestMethod.POST)
public ModelAndView gravar(@Valid Produto produto, BindingResult result, RedirectAttributes redirectAttributes) {
if(result.hasErrors()){
return form();
}
produtoDAO.gravar(produto);
ModelAndView modelAndView = new ModelAndView("redirect:produtos");
redirectAttributes.addFlashAttribute("sucesso", "Livro cadastrado com sucesso!");
return modelAndView;
}
form.jsp