Hola haber si se os ocurre alguna idea a vosotros.
Os Voy a dar lo que tengo hecho hasta ahora:
Este es mi modelo:
Código:
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;
}
}
Y este mi controlador:
Código:
import 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());
}
}
Y Este es mi formulario.jsp
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??