Os Voy a dar lo que tengo hecho hasta ahora:
Este es mi modelo:
Código:
Y este mi controlador:import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import javax.validation.constraints.Size; import org.hibernate.validator.constraints.NotEmpty; @Entity @Table(name="user") public class User { @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name="codigo") private Long cod; @NotEmpty @Size(min=1,max=20) @Column(name="nombre") private String nombre; @Column(name="created") private Date created; public Long getCod() { return cod; } public void setCod(Long cod) { this.cod = cod; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public Date getCreated() { return created; } public void setCreated(Date created) { this.created = created; } }
Código:
Y Este es mi formulario.jspimport java.util.Date; import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.view.RedirectView; import com.x.webside.data.model.User; import com.x.webside.service.UserService; @Controller public class RecorderUserController { @Autowired UserService userService; @RequestMapping(value = "/onSubmit", method = RequestMethod.POST) public ModelAndView onSubmit(@Valid @ModelAttribute("user") User user, BindingResult result) { if(!result.hasErrors()){ user.setCreated(new Date()); userService.create(user); return new ModelAndView(new RedirectView("form"),"error","false"); } return new ModelAndView(new RedirectView("form"),"error","true"); } @RequestMapping(value="/form", method= RequestMethod.GET) public ModelAndView showForm() { return new ModelAndView("form", "user", new User()); } }
Código:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Form</title> </head> <body> <form:form method="POST" action="addUser" commandName="user" modelAttribute="user"> <table> <tr> <td>Nombre</td> <td><form:input path="nombre"/></td> <td><font color="red"><form:errors path="nombre"/></font></td> </tr> <tr> <td colspan="2"><input type="submit" value="Registrar"/></td> </tr> </table> </form:form> </body> </html>
El problema reside en que con el RedirectView el BlindingResult valida , pero no me muestra los mensajes de errores .
Si no uso el RedirectView todo funciona de bien pero si lo uso no me muestra los mensajes.
NOTA: Los errores estan en un archivo de propiedades
Alguna idea de por que y alguna solucion en codigo??