2016-07-09 3 views
0

Dies ist mein Controller ein Modellobjekt mit Spring MVC und AJAX speichern:kann nicht

public class Invoice { 
    private Double amountPaid; 
    private Double amountDue; 

    private List<InvoiceItem> items; 

    public List<InvoiceItem> getItems() { 
    return items; 
    } 

    ... 
} 

public class InvoiceItem { 
    private String productCode; 
    private String productName; 

    ... 
} 

jQuery-Code Rechnungsdetails senden an die Steuerung:

@RequestMapping(value = "/save", method = RequestMethod.POST) 
@ResponseBody() 
public Map<String,Object> save(@ModelAttribute Invoice invoice) throws IOException { 
    Map<String, Object> data = new HashMap<String, Object>(); 
    try { 
     productService.save(invoice); 

     data.put("message", "Ok"); 
    } catch (Exception ex) { 
     data.put("message", ex.getMessage()); 
    } 

    return data; 
} 

Das ist mein Modell ist

Allerdings bekomme ich den folgenden Fehler, wenn die Daten übermittelt werden:

Antwort

0

Versuchen Sie, eine application/json Anfrage von Ihrem Client-Skript zu senden und @RequestBody in Controller zu verwenden, um die JSON-Anfrage zu analysieren. Im Anschluss ist die Idee:

Änderung @ModelAttribute zu @RequestBody in der Steuerung:

@RequestMapping(value = "/save", method = RequestMethod.POST) 
@ResponseBody() 
public Map<String,Object> save(@RequestBody Invoice invoice) throws IOException 

und den Client-Skript ändern, um eine json Anfrage mit contentType: "application/json" und JSON.stringify zu senden:

var data = { 
     amountDue: due, 
     amountPaid: paid, 
     items: [ 
     { 
      productCode : "productCode", 
      productName : "productName" 
     }, 
     { 
      productCode : "productCode", 
      productName : "productName" 
     }]}; 

$.ajax({ 
    url: '/product/save', 
    dataType: 'json', 
    contentType: "application/json", 
    type: 'post', 
    data: JSON.stringify(data), 
    success: function(data, textStatus, jQxhr) { ... }, 
    error: function(jqXhr, textStatus, errorThrown) { .. } 
}); 
+0

danken Sie so sehr, plz Lass deinen Email-Kontakt. Ich möchte diesen Rahmen Frühling und meine Batis lernen, ich beginne damit. –

+0

in diesem Fall habe ich mir sehr geholfen, weil ich einen neuen Rahmen für mich selbst erlerne, ich habe kein Geld für Online-Kurs oder bestimmten Lehrer: 8, ich sehe Sie Erfahrung haben, wenn ich einige Bücher verbringen könnte, die ich sehr schätze es. bitte –

+0

Es gibt viele Online-Ressourcen für Frühling und MyBatis. Zum Beispiel [Spring Started Guides] (http://www.mybatis.org/mybatis-3/) und [mybatis Started Guides] (http://www.mybatis.org/mybatis-3/getting-started.html)). Wenn Sie nach einigen Versuchen Probleme feststellen, können Sie auch eine Frage an SO senden. – Wilson