Eu havia configurado o form.jsp como foi mostrado na aula, assim como o AppWebConfiguration e o messages.properties, e ele não estava exibindo as mensagens de erro .. aí eu mudei o public MessageSource messageSource() e o form.jsp pra ver se ele estava realmente usando esses caras, coloquei um sysout no messageSource() e ele realmente usa esse metodo na hora de subir o server, mas não está validando nada... em seguida eu quebrei meu jsp propositalmente pra ver se meu "form:erros " está sendo usado, e pra minha surpresa, ele não deu nenhum erro ao tentar rodar com meu .jsp "quebrado", ou seja, acho que ele nem está usando essa tag, depois ele tambem não deu nenhum erro quando eu "quebrei" o messageSource()
meu form.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ 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" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Cadastrar Produto</title>
</head>
<body>
<form:form action="${s:mvcUrl('PC#grava').build()}" method="POST" commandName="produto">
<div>
<label>Título</label>
<input type="text" name="titulo" />
<form:errors> path = "asdas"</form:errors> // atributo que nao existe
</div>
<div>
<label>Descrição</label>
<textarea rows="10" cols="20" name="descricao"></textarea>
<form:errors> path = "descricao"</form:errors>
</div>
<div>
<label>Páginas</label>
<input type="text" name="paginas" />
<form:errors> path = "paginas"</form:errors>
</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">Cadastrar</button>
</form:form>
</body>
</html>
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.controller.HomeController;
import br.com.casadocodigo.loja.daos.ProdutoDAO;
@EnableWebMvc
@ComponentScan(basePackageClasses={HomeController.class,ProdutoDAO.class})
public class AppWebConfiguration {
@Bean
public InternalResourceViewResolver internalResourceViewResolver(){
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
@Bean
public MessageSource messageSource() {
System.out.println("olaa");
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("/WEB-INF/asds.properties"); // arquivo que não existe
messageSource.setDefaultEncoding("UTF-8");
messageSource.setCacheSeconds(1);
return messageSource;
}
}