2016-11-08 3 views
3

Meine Feder Anwendung mit save hat Problem ‚Datum“ auf "Datenbank" konvertieren. Wo Fehler sind?Fehler beim Eigenschaftswert vom Typ [java.lang.String]

enter image description here

Fehler

Fehler beim Eigenschaftswert vom Typ [java.lang.String] zu erforderlich Typ [java.sql.Date] für Eigenschaft bornDate konvertieren; verschachtelte Ausnahme ist java.lang.IllegalArgumentException: Könnte nicht analysieren Datum: unparseable Datum: "20 16-11-02"

mysql

use lifecalc; 
create table Man (
manId int not null auto_increment primary key, 
name varchar(30) not null, 
bornDate date, 
lastDate date 
); 
insert into man value 
(null, "Pawel Cichon", "1920-11-30", "2000-02-20"); 

Entität

@Entity 
@Table(name="Man") 
public class Man { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name="manId") 
    private int manId; 

    @Column 
    private String name; 

    @DateTimeFormat(pattern = "yyyy-MM-dd") 
    @Column 
    private java.sql.Date bornDate; 

    @DateTimeFormat(pattern = "yyyy-MM-dd") 
    @Column 
    private java.sql.Date lastDate; 
    //getter end setter 

Controller

@Controller 
@RequestMapping("/") 
public class AppController { 

    @Autowired 
    private ManService manService; 

    @ModelAttribute("man") 
    public Man modelToAddMan(){ 
     return new Man(); 
    } 

    @InitBinder 
    public void initBinder(WebDataBinder binder) { 
     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/mm/dd"); 
     dateFormat.setLenient(false); 
     binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true)); 
    } 

    @RequestMapping(value="/addMan.html", method = RequestMethod.POST) 
    public String addManFinish(@Valid @ModelAttribute("man") Man man, BindingResult result) { 

     if(result.hasErrors()){ 
      return "addMan"; 
     } else{ 
      manService.addMan(man); 
      return "redirect:/index.html"; 
     } 
    } 

addMan.html

<form:form method="POST" modelAttribute="man"> 
    <div class="form-group"> 
     <label for="name" class="col-sm-2 control-label">name</label> 
     <form:input path="name" /> 
     <form:errors path="name" cssClass="error"/> 
    </div> 

    <div class="form-group"> 
     <label for="bornDate" class="col-sm-2 control-label">bornDate</label> 
     <form:input path="bornDate" /> 
     <form:errors path="bornDate" cssClass="error"/> 
    </div> 

    <div class="form-group"> 
     <label for="lastDate" class="col-sm-2 control-label">lastDate</label> 
     <form:input path="lastDate" /> 
     <form:errors path="lastDate" cssClass="error"/> 
    </div> 

    <div class="form-group"> 
     <input type="submit" class="btn btn-success" value="save" /> <a 
      class="btn btn-danger" role="button" 
      href="<spring:url value="/index.html" />">cancel </a> 
    </div> 
</form:form> 
+0

welche Datumsformat Sie von Ihrem addMan.html eingegeben werden immer ist es yyyy/MM/dd oder yyy-MM -dd? – mhasan

+0

"JJJJ/MM/TT" ist ungültig es sollte "JJJJ/MM/TT" sein – mhasan

Antwort

1

Statt:

@DateTimeFormat(pattern = "yyyy-MM-dd") 
@Column 
private java.sql.Date bornDate; 

Verwendung java.util.date:

@DateTimeFormat(pattern = "yyyy-MM-dd") 
@Column 
private java.util.date bornDate; 
Verwandte Themen