2014-11-11 10 views
5

Ho un semplice POJO con un campo Data. Voglio associare l'oggetto con i valori di un modulo.
Nella forma che sto utilizzando jquery ui datepicker con il formato della data ("gg/mm/aaaa")
ho console.log il valore ed è una stringa: 13-11-2014
sto usando spring 4.0.7
ho sul mio dipendenze Joda-time 2,5Impossibile convertire la stringa in java.util.Date con @DateTimeFormat (pattern = "gg/MM/aaaa")

ottengo questa eccezione:

Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'endDate'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type @org.springframework.format.annotation.DateTimeFormat java.util.Date for value '22-11-2014'; nested exception is java.lang.IllegalArgumentException: Invalid format: "22-11-2014" is malformed at "-11-2014"] 

mio POJO:

package gr.gsis.announcement.model; 


    import java.io.Serializable; 
    import java.util.Date; 

    import org.springframework.format.annotation.DateTimeFormat; 

    public class Announcement implements Serializable{ 

     private static final long serialVersionUID = -1984554807132781312L; 

     private int id; 
     private String title; 
     private String bodyText; 

     @DateTimeFormat(pattern = "dd/MM/yyyy") 
     private Date startDate; 

     @DateTimeFormat(pattern = "dd/MM/yyyy") 
     private Date endDate; 

     private boolean activeFlag; 

     public Announcement() { 

     } 

     public Announcement(int id, String title, Date startDate, Date endDate, 
       boolean activeFlag) { 
      this.id = id; 
      this.title = title; 
      this.startDate = startDate; 
      this.endDate = endDate; 
      this.activeFlag = activeFlag; 
     } 


     public int getId() { 
      return id; 
     } 

     public void setId(int id) { 
      this.id = id; 
     } 

     public String getTitle() { 
      return title; 
     } 

     public void setTitle(String title) { 
      this.title = title; 
     } 

     public String getBodyText() { 
      return bodyText; 
     } 

     public void setBodyText(String bodyText) { 
      this.bodyText = bodyText; 
     } 

     public Date getStartDate() { 
      return startDate; 
     } 

     public void setStartDate(Date startDate) { 
      this.startDate = startDate; 
     } 

     public Date getEndDate() { 
      return endDate; 
     } 

     public void setEndDate(Date endDate) { 
      this.endDate = endDate; 
     } 

     public boolean getActiveFlag() { 
      return activeFlag; 
     } 

     public void setActiveFlag(boolean activeFlag) { 
      this.activeFlag = activeFlag; 
     } 

     @Override 
     public String toString() { 
      return "Announcement [id=" + id + ", title=" + title + ", bodyText=" 
        + bodyText + ", startDate=" + startDate + ", endDate=" 
        + endDate + ", activeFlag=" + activeFlag + "]"; 
     } 

mio regolatore:

package gr.gsis.announcement.controller; 

    import gr.gsis.announcement.model.Announcement; 

    import org.springframework.stereotype.Controller; 
    import org.springframework.ui.Model; 
    import org.springframework.web.bind.annotation.ModelAttribute; 
    import org.springframework.web.bind.annotation.RequestMapping; 
    import org.springframework.web.bind.annotation.RequestMethod; 

    @Controller 
    public class AnnouncementController { 

     @RequestMapping("/") 
     public String welcome(Model model) { 
      model.addAttribute("greeting", "Welcome"); 

      return "welcome"; 

     } 

     @RequestMapping(value="/create", method = RequestMethod.GET) 
     public String getAnnouncementForm(Model model) { 

      Announcement announcement = new Announcement(); 

      model.addAttribute("announcement", announcement); 

      return "announcementForm"; 
     } 

     @RequestMapping(value = "/create", method = RequestMethod.POST) 
     public String processAnnouncement(@ModelAttribute("announcement") Announcement announcement) { 

      System.out.println(announcement); 

      return "announcementForm"; 
     } 
    } 

mia forma JSP:

<h2>Insert Announcement</h2> 

     <form:form method="post" commandName="announcement"> 

      <div> 
       <form:label path="title">Title</form:label> 
       <form:input path="title" name="title" type="text"/> 
      </div> 

      <div> 
       <form:label path="startDate">Start Date</form:label> 
       <form:input path="startDate" cssClass="datepicker start" name="startDate" type="text"/> 
      </div> 

      <div> 
       <form:label path="endDate">End Date</form:label> 
       <form:input path="endDate" cssClass="datepicker end" name="endDate" type="text"/> 
      </div> 

      <div> 
       <form:label path="activeFlag">Active</form:label> 
       <form:checkbox path="activeFlag" name="activeFlag"/> 
      </div> 


      <div> 
       <input type="submit" class="button" value="Save" /> 
      </div> 

     </form:form> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script> 
    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script> 
    <script> 
     $(function() { 
      $(".datepicker").datepicker({ dateFormat: 'dd-mm-yy' }); 


     }); 

Che cosa sto facendo di sbagliato?

Grazie in anticipo

risposta

15

il formato data non corrisponde a ingresso

@DateTimeFormat(pattern = "dd/MM/yyyy") 

dovrebbe essere

@DateTimeFormat(pattern = "dd-MM-yyyy") 
+0

Funziona !!! Grazie mille per il tuo aiuto!!!! –

Problemi correlati