2016-04-25 19 views
2

ich zu einem anderen .jsp im Frühjahr mvc Verfahren umleiten möchten. Ich möchte Javascript-Methoden wie window.location.replace (url) nicht verwenden.Spring MVC: Redirect in @ResponseBody

Meine Methode:

@RequestMapping(value= "loginUser", method=RequestMethod.POST) 
public @ResponseBody String loginUser (@RequestParam("name") String name, @RequestParam("password") String password){ 

    return ""; 
} 

Antwort

2

Sie können die Umleitung von Spring nicht tun, wenn Ihre Anfrage json Antwort erwartet. Sie können einen Parameter für die Weiterleitung festlegen, so dass Sie beim Eingeben des Erfolgsblocks den zu umadressierenden Parameter mit window.location.reload(); überprüfen können. Zum Beispiel von einem ähnlichen Posten, überprüfen Sie diese Antwort,

Redirect on Ajax Jquery Call

Eine Idee die der Browser zu lassen ist, dass es durch Hinzufügen einer Umleitung Variable zu dem resultierenden Objekt und die Überprüfung umleiten sollte für es in jQuery

$(document).ready(function(){ 
    jQuery.ajax({ 
     type: "GET", 
     url: "populateData.htm", 
     dataType:"json", 
     data:"userId=SampleUser", 
     success:function(response){ 
      if (response.redirect) { 
       window.location.href = response.redirect; 
      } 
      else { 
       // Process the expected results... 
      } 
     }, 
    error: function(xhr, textStatus, errorThrown) { 
      alert('Error! Status = ' + xhr.status); 
     } 

    }); 
}); 

Sie können alternativ eine Antwort-Header für Umleitung wie response.setHeader("REQUIRES_AUTH", "1") und in jQuery Erfolg hinzufügen,

success:function(response){ 
     if (response.getResponseHeader('REQUIRES_AUTH') === '1'){ 
      window.location.href = 'login.htm'; 
     } 
     else { 
      // Process the expected results... 
     } 
    } 

die ähnliche Frage Siehe: Spring Controller redirect to another page

+0

funktioniert das, wenn '@ ResponseBody' verwendet wird? – OrangeDog

+0

@OrangeDog scheint es auch nicht arbeiten wird. Im Frühling nicht der Fall ist Umleitung auf eine andere Seite auf json Anfragen. Aktualisiert eine alternative Lösung. – Lucky

+0

Wer hat gesagt, es ein Asynchron-Anfrage war? – OrangeDog

1

Fügen Sie einen HttpServletResponse Parameter und sendRedirect(String) nennen.

Oder Sie @ResponseBody nicht verwenden, und schicken Sie das Modell/sehen Sie verwenden möchten.

+0

@Responsebody in meinem Fall wesentlich ist, ich eingeschlossen ein HttpServletResponse und rief sendRedirect (String) und es dosen't Arbeit. :( –

+0

Sind Sie sicher, es ist wichtig? Was Sie zurück, wenn dieser Anruf umleiten nicht? – OrangeDog