2014-11-07 11 views
5

Ich habe eine ajax auf einer jsp Seite, die einen Federcontroller über URL /check aufruft.Wie kann ich Daten von Feder-Controller von Ajax bekommen?

$.ajax({ 
    type : "GET", 
    url : "${pageContext.request.contextPath}/check", 
    data : { 
    "id" : ${articleCount} 
    }, 
    success: function(data){ 
    //response from controller 
    } 
}); 

Nun sucht der Controller wie

@RequestMapping("/check") 
public String check(@RequestParam Integer id, HttpServletRequest request, 
     HttpServletResponse response, Model model) { 
    boolean a = getSomeResult(); 
    if (a == true) { 
     model.addAttribute("alreadySaved", true); 
     return view; 
    } else 
     model.addAttribute("alreadySaved", false); 

    return view; 
} 

I-Daten gesendet Modell und versucht, es in success: function(data) als "${alreadySaved}" zuzugreifen, aber es zeigt leer.

Gibt es eine Möglichkeit, die true/false Daten auf der Ansichtsseite zu erhalten?

Antwort

5

Sie haben die @ResponseBody Anmerkung für Frühjahr Ajax-Aufrufe Beispiel

@RequestMapping("/check")  
@ResponseBody 
public String check(@RequestParam Integer id, HttpServletRequest request, HttpServletResponse response, Model model) { 
    boolean a = getSomeResult(); 
    if (a == true) { 
     model.addAttribute("alreadySaved", true); 
     return view; 
    } else { 
     model.addAttribute("alreadySaved", false); 
     return view; 
    } 
} 
+0

Okay. Wie kann ich diese Antwort auf der Betrachtungsseite erhalten? – Sujan

+0

data.alreadySaved – Madhesh

+0

data.alreadySaved zeigt undefined in jsp. – Sujan

0

Controller-Teil

Sie die @ResponseBody Anmerkung Ajax für das Frühjahr hinzufügen müssen hinzufügen ruft Beispiel

Ansicht Part

$.ajax({ 
    type : "GET", 
    url : "${pageContext.request.contextPath}/check", 
    data : { 
     "id" : ${articleCount} 
    }, 
    success: function(data){ 
     $('#input_field').val(data); 
    } 
}); 
0

Wenn Sie versuchen, die Werte f zurückzugeben Von der Ajax-Anfrage sollten Sie die @ResponseBody Annotation verwenden. Als Rückgabetyp für Ihre Methode ist String Stellen Sie sicher, dass Sie den Zeichenfolgenwert und nicht Ihre Ansicht an die JSP-Datei zurückgeben.

Da es die jsp machen wieder die Antwort

@ResponseBody 
public String check(@RequestParam Integer id, HttpServletRequest request, HttpServletResponse response, Model model) { 
    boolean a = getSomeResult(); 
    if (a == true) { 
     return "already saved"; 
    } 
    return "error exist"; 
} 

Und in Ihrem jsp,

success: function(data){ 
    alert(data); 
} 
+0

Aber ich muss Ansicht von dieser Methode zurückgeben, weil ohne das Frühling nicht in der Lage sein wird, das jsp zu laden. – Sujan

+0

@najus Nein, das Konzept von Ajax besteht darin, den Teil der Seite zu aktualisieren, so dass es ausreicht, den Rückgabewert allein zu senden. Wie Sie die gleiche Seite laden –

Verwandte Themen