2009-06-26 17 views
0

Ich versuche, einen Spring MVC-Controller durch einen Ajax-Aufruf von JavaScript-Methode aufrufen. Die JavaScript-Methode verwendet Prototyp-Bibliothek, um den Ajax-Aufruf. Der Controller löst JSP als Ausgabe. Ich kann den Controller treffen, wie ich in den Log-Meldungen sehen können jedoch die Antwort lost.What die issue.Here der Code ....Spring MVC und Prototyp JavaScript


    
function submitNewAjxCall() {
alert('test');
new Ajax.Request('SimpleApp/home.htm',
{
method:'post',
parameters: $('formId').serialize(true),
onComplete: showresult
});
}
function showresult(resultdata) {
alert(resultdata.responseText); ****//this method is not called.....****
}


home.htm Punkt ist, könnte zu bekommen scheint an diesen Controller

public ModelAndView handleRequest(HttpServletRequest request, 
      HttpServletResponse response) throws Exception { 
     System.out.println("HomeController : " + ++i); 
     return new ModelAndView("home"); 
    } --- this throws home.jsp

Vielen Dank für Ihre Hilfe.

+0

, die ein Triumph der Formatierung ist:) – skaffman

Antwort

1

Überprüfen Sie mit Firebug (Registerkarte Net), wenn Sie die Ajax-Antwort erhalten und sehen, was der Inhalt ist. Vielleicht ist es sinnvoll, nicht die gesamte HTML-Seite zurückzugeben, sondern ein JavaScript-spezifisches JSON-Objekt, das etwas darüber aussagt, was der Controller gerade getan hat. Fügen Sie Ihrem Controller möglicherweise eine Ajax-GET-Eigenschaft hinzu, bei der Sie nur JSON-Sprache an den Antworttext ausgeben, anstatt ModelAndView zurückzugeben. Versuchen Sie, OnSuccess in Prototype zu verwenden. das könnte vielleicht dann

function submitNewAjxCall() 
{ 
new Ajax.Request('SimpleApp/home.htm?ajax=true', 
{ 
    method: 'post', 
    parameters: $('formId').serialize(true), 
    onComplete: function(transport) 
    { 
    alert(transport.responseText); 
    } 
}); 
} 

bearbeiten arbeiten: JSON direkt schreiben (zB Flexjson als Serializer verwenden) Sie dies in Ihrer (kommentierte) Feder Controller verwenden können:

@RequestMapping(value = "/dosomething.do", method = RequestMethod.GET, params = "ajax=true") 
public void getByName(
    @RequestParam(value = "name", required = true) String name, 
    HttpServletResponse response 
    ) 
{ 
    response.setContentType("application/json"); 
    try 
    { 
    OutputStreamWriter os = new OutputStreamWriter(response.getOutputStream()); 
    List<DomainObjects> result = this.domainObjectService.getByName(name); 
    String data = new JSONSerializer().serialize(result); 
    os.write(data); 
    os.flush(); 
    os.close(); 
    } catch (IOException e) 
    { 
    log.fatal(e); 
    } 
} 
+0

Im Spring Controller müssen wir die Ausgabe als JSON direkt in den Ausgabestrom schreiben. Wir müssen die vorhandenen Steuerelemente erweitern und diese Funktionalität bereitstellen. – Rajat

+0

Ich schrieb einen grundlegenden JSON-Controller mit Flexjson als Encoder. Ich habe auch ein Beispiel für den Federregler hinzugefügt. – Daff