2017-05-04 3 views
2

Ich möchte einen Eingang des Typs "Datum" an einen Federmvc-Controller übermitteln. Leider bekomme ich immer wieder zahlreiche Fehler. Ich bin neu in der Feder mvc und vor allem in der Einreichung, nicht sehr klar zu mir, warum ich "commandName" in Form haben muss.Submit Input Typ = "Datum" im Frühjahr mvc-Anwendung

Mein Code so weit:

backoffice.jsp:

<form:form method="POST" action="/getAllOnDate" commandName="date"> 
<table> 
    <td><form:label path="date">Date</form:label></td> 
    <td><form:input type="date" path="date"/></td> 
    <input type="submit" value="View all on date"/> 
</table> 
</form:form> 

Controller:

@RequestMapping(value = "/backoffice", method = RequestMethod.GET) 
public String backofficeHome(Model model) { 
    model.addAttribute("date", new Date()); 

    return "backoffice"; 
} 

@RequestMapping(value = "/getAllOnDate", method = RequestMethod.POST) 
public String getAllReservationsForRestaurantOnDate(@ModelAttribute("date") Date date, Model model) { 
    LOG.info(date.toString()); 
    return "anotherPage"; 
} 
+0

nur RequestParam anstelle von ModelAttribute – Rajesh

+0

@Rajesh ich denke, "View API" -basierte Lösung (JSTL + Modell) angefordert – LoganMzz

Antwort

0

Sie haben @InitBinder in Ihrem Controller verwenden, um das Datum direkt ot zu binden:

Spring bindet automatisch einfache Daten a (Strings, int, float usw.) in Eigenschaften Ihrer Befehls-Bean. Was passiert jedoch, wenn die Daten komplexer ist, zum Beispiel, was geschieht, wenn Sie einen String im Format "20. Januar 1990" erfassen und Spring ein Date-Objekt daraus als Teil der Bindungsoperation erstellen möchten. Für diese Arbeit brauchen Sie Spring Web MVC verwenden Property Instanzen als Teil des Bindungsprozesses informieren:

@InitBinder 
public void bindingPreparation(WebDataBinder binder) { 
    DateFormat dateFormat = new SimpleDateFormat("MMM d, YYYY"); 
    CustomDateEditor orderDateEditor = new CustomDateEditor(dateFormat, true); 
    binder.registerCustomEditor(Date.class, orderDateEditor); 
} 

Jetzt können Sie die analysierte Datum erhalten direkt in Ihrer Methode als „MMM d formated , YYYY“:

@RequestMapping(value = "/getAllOnDate", method = RequestMethod.POST) 
public String getAllReservationsForRestaurantOnDate(@ModelAttribute("date") Date date, Model model) { 
    LOG.info(date.toString()); 
    return "anotherPage"; 
} 
Verwandte Themen