2016-07-09 8 views
0

ich eine AJAX-Anforderung an einen Spring MVC-Controller senden, wie folgt aus:Wie ajax Anfragedaten als Klasse an Spring mvc controller senden?

var filters = { 
    visual: visual, 
    Name: params['Name'], 
    Address: params['Address'], 
    documentType: params['documentType'], 
    itemQualifier: getItemQualifier(), 
    itemIdentifier: params['itemIdentifier'], 
    currency: getCurrency(), 
    sellSide: getSellSide() 
}; 

$.ajax({                  
    type: "POST", 
    url: "/reports/savefilters", 
    data: filters, 
    success: function(response) { 
     alert('filters saved successfully: ' + response); 
    }, 
    error: function(e) { 
     alert('Error while saving filters: ' + e.message); 
    } 
}); 
@RequestMapping(value = "/savefilters", method = RequestMethod.POST) 
public @ResponseBody String saveFilters(@RequestParam("visual") String visual, @RequestParam(value = "Name[]", required = false) String[] Name, 
     @RequestParam(value = "Address[]", required = false) String[] Address, @RequestParam(value = "documentType[]", required = false) String[] documentType, 
     @RequestParam("itemQualifier") String itemQualifier, @RequestParam(value = "itemIdentifier[]", required = false) String[] itemIdentifier, @RequestParam("currency") String currency, 
     @RequestParam("sellSide") String sellSide, HttpServletRequest request) 
{ 
    try 
    { 
     System.out.println("saveFilters"); 
     new DisplayService().saveFilters("ID", visual, Name, Address, documentType, itemQualifier, itemIdentifier, currency, sellSide); 
     return "success"; 
    } 
    catch (Exception ex) 
    { 
     return "error occured while inserting/updating db"; 
    } 
} 

Ich möchte diese Argumente alle als Klasse zu übergeben, statt wie diese zu senden.

Wie kann ich als Klasse von einem AJAX-Aufruf übergeben und wie bekomme ich es in der Spring MVC-Controller-Code? Irgendwelche Vorschläge bitte? Vielen Dank.

+0

Mögliche doppelte: http://stackoverflow.com/questions/10198335/basic-spring-mvc-data-binding –

+0

Danke für den Kommentar @RoryMcCrossan. Ich denke, dieser Beitrag beantwortet meine Frage nicht. Ich habe versucht, mit Modell-Attribut, aber es funktioniert nicht – Hemachandra

Antwort

1

Sie können das Anfrageobjekt verwenden und mit ihm können Sie alle Parameter wie folgt erhalten.

public @ResponseBody String saveFilters(HttpServletRequest request){ 

String visual = request.getParameter("visual") 

} 
+0

Danke für die Antwort. Es arbeitet mit einzelnen Werten wie Visual, aber nicht mit Array-Parametern wie Name. Ich habe versucht, Array-Werte mit request.getParameterValues ​​() -Methode auch zu bekommen, konnte aber nicht bekommen. – Hemachandra

+0

Für das Array müssen Sie das verwenden, um das Array von Parametern zu erhalten und dann zu verarbeiten. Map ParameterMap = request.getParameterMap(); http://stackoverflow.com/questions/7312436/spring-mvc-how-to-get-all-request-params-in-a-map-in-spring-controller. Wenn das Problem behoben wird, akzeptiere bitte die Antwort als korrekt :) –

+0

Dies funktioniert, wenn Schlüssel und Wert beide Strings sind. Wert wird als Null kommen Wenn Wert ein Array wie PartnerName ist. – Hemachandra

0

Erstellen Sie einfach eine Java-Klasse, die Ihrer JavaScript-Variablen filters entspricht.

public class Filters { 
    private String name; 
    private List<String> address; 
    private List<String> documentType; 
    private String itemQualifer; 
    private String itemIdentifier; 
    private String Currency; 
    private String sellSide; 

    // getters and setters must exists but I omitted for brevity. 
} 

MVC Controller:

@RequestMapping(value = "/savefilters", method = RequestMethod.POST) 
public @ResponseBody String saveFilters(Filters filters) { 

} 
+0

Danke für die Antwort.Mit diesem Code erreicht die Anfrage nicht den Federmvc-Controller. – Hemachandra

+0

Sie meinen, Sie erhalten eine Ausnahme bei der Anwendung auf meine Lösung? – inherithandle

+0

Ich habe keine Ausnahme gefunden, aber die Anforderung erreicht den Controller nicht. – Hemachandra

Verwandte Themen