Gewusst wie: zurückgeben eines Objekts aus einer Spring MVC-controller in Reaktion auf die AJAX-Anfrage?
Habe ich um eine Liste der Mitarbeiter, die von einem controller in Reaktion auf die jQuery-AJAX-request. Wie soll ich für ihn tun?
Mein controller:
@RequestMapping("phcheck")
public ModelAndView pay(@RequestParam("empid") int empid, String fdate, String tdate) {
ModelAndView mav = new ModelAndView("phcheck");
List<Employee> employees = entityManager.createQuery(
"SELECT e FROM Employee e WHERE e.empId = " + empid, Employee.class)
.getResultList();
mav.addObject("employees", employees); //I need this list of employee in AJAX
return mav;
}
AJAX-code in den zugehörigen Ansicht:
$(document).ready(function () {
$("#empid").change(function () {
if ($("#fdate").val() != "" && $("#tdate").val() != "" && $("#empid").val() != "") {
jQuery.ajax({
url: "phcheck.htm?empid=" + $("#empid").val() +
"&&fdate=" + $("#fdate").val() +
"&&tdate=" + $("#tdate").val(),
success: function (data) {
alert(data + "success");
},
error: function (data) {
alert(data + "error");
}
});
} else {
alert("Please fill the from date and to date or select the employee id");
$("#empid .option").attr("selected", "selected");
}
});
});
Vielen Dank im Voraus.
InformationsquelleAutor Gorakh | 2014-04-24
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Frühjahr, wenn Sie brauchen, Objekt-Serialisierung und de-Serialisierung und nachrichtenkonvertierung. in diesem Fall müssen Sie die Anmerkungen in Ihren controller handler-Methode mit
@RequestBody
und@ResponseBody
.Wo:
in Ihrem Fall müssen Sie JSON-Typ, den Sie hinzufügen müssen, um die
@ResponseBody
zu deiner Signatur der Methode oder einfach nur über die Methode, und erzeugt und verbraucht, die optional sind, wie:und in AJAX-Aufruf verwenden:
contentType: 'application/json'
- Attribut wird die Art der Daten, die Sie senden. unddataType: json
Attribut sagt jquery welche Inhalte Art der Reaktion erhalten werden.in Ihrem Fall
contentType: 'application/json'
wird nicht benötigt, default -, d.h.'application/x-www-form-urlencoded; charset=UTF-8'
ist genug.und erhalten Sie Liste der Mitarbeiter, die in Ihrer AJAX-Erfolg, Durchlaufen Sie es tun, wie:
Hinweis: Jackson-mapper oder andere mapper sollten buildpath um JSON zu serialisieren und Deserialisieren.
Siehe Auch:
In Spring MVC müssen Sie sich registriert haben MappingJackson2HttpMessageConverter wie getan wird, hier
Dem ModelAndView bedeutet, Sie planen für das Rendern einer Ansicht, die Sie nicht brauchen. Nur das Objekt zurückzugeben, verwenden Sie die @ResponseBody Anmerkung:
Auch, Sie sollten vorsichtiger sein, wie Sie mit Abfragen. Deine query ist unsicher und würde es ermöglichen, sql-Injektion. Zum Beispiel, wenn jemand nannte Sie Ihre Methode mit empId = "'15' oder '1'='1'", dann würde es wieder die gesamte Liste der Mitarbeiter.
Wird die Methode als @ResponseBody Typ in der Steuerung und in der ajax-nehmen Sie die Liste von Erfolgs-Funktion.
Setzen die Jackson-Mapper-Datei in Pom.xml Datei bei Verwendung von Maven