2017-04-01 1 views
0

415 Fehler beim Ausführen der POST-Anfrage. Das ist meine Form:Spring MVC 415 Fehler beim Buchen von Formular

<c:url value="/createOrUpdate" var="actionUrl"/> 
    <form action="${actionUrl}" method="post" enctype="application/x-www-form-urlencoded"> 
    <table class="editor silver"> 
     <tr> 
     <th colspan="2">Edit advert details</th> 
     <input type="number" hidden value="${advert.id}" name="id"/> 
     </tr> 
     <tr> 
     <td>Owner:</td> 
     <td> 
      <input type="text" disabled value="${advert.owner}" name="owner"/> 
     </td> 
     </tr> 
     <tr> 
     <td>Publication date:</td> 
     <td> 
      <input type="datetime" disabled value="${advert.publicationDate}" name="publicationDate"/> 
     </td> 
     </tr> 
     <tr> 
     <td>Select rubric</td> 
     <td> 
      <select name="rubric"> 
      <option value="sale" selected>Sale</option> 
      <option value="buy">Buy</option> 
      <option value="lease">Lease</option> 
      <option value="services">Services</option> 
      <option value="dating">Dating</option> 
      </select> 
     </td> 
     </tr> 
     <tr> 
     <td>Enter header:</td> 
     <td> 
      <input type="text" value="${advert.header}" name="header"/> 
     </td> 
     </tr> 
     <tr> 
     <td>Enter text:</td> 
     <td> 
      <input type="text" value="${advert.text}" name="text"/> 
     </td> 
     </tr> 

Und dies ist Controller, wo ich Anfrage

tue
@RequestMapping(value = "/createOrUpdate", method = RequestMethod.POST, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE) 
public ModelAndView editAdvert(@RequestBody Advert advert) {//some actions 

Anzeige ist eine einfache POJO mit Getter und Setter:

private long id; 

private String owner; 

private Date publicationDate; 

private String rubric; 

private String header; 

private String text; 

Was i‘ m falsch machen? p.s. Wie ich weiß, sollte der Frühling diese "Namensfelder" in Felder von POJO abbilden. Recht? Hinzugefügt Ok, ich habe festgestellt, dass einige Werte nicht in Form gesendet haben. Ich überprüfte Konsole im Browser und jetzt ist es ok, aber ich bekomme immer noch 415 Fehler.

+1

verwenden Sie können ModelAttribute anstelle von RequestBody verwenden. RequestBody konsumieren json, xml. entferne application/x-www-form-urlencoded, weil es bereits ein Standardtyp ist. Wenn Sie @ requestbody verwenden möchten, senden Sie Ihre Formulardaten als json. Mit einer JavaScript-Bibliothek wie JQuery würden Sie JSON-Daten mit Content-Type: application/json veröffentlichen. und verwenden Sie jackson-lib konvertieren json zu Java-Objekt einfach. –

+0

Aber jetzt bekomme ich Fehler 400 - schlechte Anfrage –

+1

das Problem könnte senden Datum sein. Fokus, wie man Datumfeder mvc sendet. Sie können DateTimeFormat [so] (http://stackoverflow.com/questions/42581208/http-status-400-bad-request-issue/42587545#42587545) oder Initbinder –

Antwort

1

Sie @ModelAttribute statt @RequestBody verwenden können. RequestBody konsumieren json, xml. Entfernen Sie die Anwendung/x-www-form-urlencoded, da dies bereits der Standardtyp ist.

Wenn Sie @Requestbody verwenden möchten, dann senden Sie Ihre Formulardaten als json, verwenden Sie eine JavaScript-Bibliothek wie JQuery, würden Sie eine JSON-Daten mit Content-Type: application/json. Und verwenden Sie jackson-lib konvertieren json zu Java-Objekt einfach.

400 - schlecht Anfrage

Das Problem könnte Zeitpunkt sendet sein. Konzentrieren Sie sich darauf, wie Sie Datum Feder mvc senden. Sie können @DateTimeFormatlike this oder @InıtBinder

1

Das Problem lag in der Datumsumwandlung. ändern @RequestBody to @MadelAttribute und setzen @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) private Date publicationDate; auf ein Modell

Verwandte Themen