miércoles, 11 de diciembre de 2013

Tratamiento de fechas con Spring MVC y JQuery

En un post anterior hablaba sobre Spring MVC y los formularios, y una persona me pregunto sobre el tratamiento de las fechas. Debido a ello voy a explicar como podemos utilizar las fechas en un formulario de Spring MVC y que mantengan su formato, con la ayuda de JQuery.

Para empezar mostramos el DTO con la información. Al haberse realizado con JPA este mismo DTO nos permitirá almacenar la información de los datos a guardar en la BBDD.
@Entity
@Table(name = "libro", catalog = "almacen")
public class Libro implements java.io.Serializable {

 private static final long serialVersionUID = 1L;
 private Integer ident;
 private String nombre;
 private String autor;
 private String serie;
 private String argumento;
 private Integer paginas;
 private Integer volumen;
 @DateTimeFormat(pattern = "dd/MM/yyyy")
 private Date publicacion;

 public Libro() {
 }
 
 @Column(name = "PUBLICACION")
 public Date getPublicacion() {
  return publicacion;
 }

 public void setPublicacion(Date publicacion) {
  this.publicacion = publicacion;
 }

....
}

Aquí podemos ver como además de las anotaciones propias de JPA para realizar la persistencia, hemos añadido la anotación @DateTimeFormat que es propia de Spring y nos permite mostrar la fecha en base a un patrón válido de formato de fecha.

Por otro lado contamos con la página JSP donde añadimos el campo con el tag form:input normal, independientemente de que vayamos a mostrar una fecha.


Con esto ya tendriamos el campo y nos debería valer, siempre y cuando introduzcamos una fecha con el formato indicado anteriormente. Pero yo he querido facilitar un poco más las cosas y añadir una utilidad para introducir fechas. Y como Spring no la trae en sus tags, he echado mano de Jquery. Para ello solo tenemos que asociar un pequeño script que incluya el siguiente código. Así al clickear sobre el campo se abrirá un calendario que nos permitirá indicar la fecha de manera sencilla.

$(function() {
    $('#publicacion').datepicker();
});

Con esto, ya podremos recoger la fecha en el controlador de Spring de forma correcta. Aunque es posible que os haya surgido una excepción del tipo JodaTime library not available - @DateTimeFormat not supported. Y aunque no se muy bien a que es debido tiene una fácil solución también, y es incluyendo la siguiente dependencia en nuestro pom.xml


 joda-time
 joda-time
 1.6.2
 runtime

No hay comentarios:

Publicar un comentario