2017-12-07 3 views
0

Ich habe 2 identische Formen (View A und View B), die den gleichen Controller verwenden. Ich würde es mögen, wenn ich den Posten der Ansicht A mache, mich zu einer URL x umadressiere und wenn ich die Ansicht B verweise, leite ich mich zu einer anderen URL um (y). Ist das in dieser Funktion möglichSpring: Redirect je nach Ansicht

@RequestMapping(value = "/panics/closeCase", method = RequestMethod.POST) 
public String closeCase(@ModelAttribute("closeCaseFrom") CloseCaseFrom closeCaseFrom, Model model) { 

    CloseCaseFrom sendCloseCaseFrom = new CloseCaseFrom(); 
    sendCloseCaseFrom.setDetail(closeCaseFrom.getDetail()); 
    sendCloseCaseFrom.setIdCasePanic(closeCaseFrom.getIdCasePanic()); 
    sendCloseCaseFrom.setIdPanic(closeCaseFrom.getIdPanic()); 
    sendCloseCaseFrom.setIdCasePanic(closeCaseFrom.getIdCasePanic()); 
    sendCloseCaseFrom.setIdStaff(user.getIdStaff()); 
    sendCloseCaseFrom.setIdUserSession(user.getIdUser()); 
    sendCloseCaseFrom.setSessionToken(user.getToken()); 

    panic.mClosePanicCase(sendCloseCaseFrom); 


    return "redirect:/alerts"; 

} 

Wie kann ich feststellen, welche Ansicht den Controller auslöst?

+1

Eine Möglichkeit besteht darin, eine URL mit einer Variablen darin zu verwenden "/ panics/closeCase/{source}" und dann Quelle zu wissen, wo umgeleitet werden muss –

Antwort

1

Sie könnten in jeder Ansicht ein verstecktes Eingabeelement mit demselben Namen aber einem anderen Wert hinzufügen. Sie erhalten dann diesen Wert in Ihrem Controller und leiten diesen um.

Dieser Eingang ist in ViewA

<input type="hidden" name="destination" value="a" /> 

Dieser Eingang ist in ViewB

<input type="hidden" name="destination" value="b" /> 

Und in Ihrem Controller

@RequestMapping(value = "/panics/closeCase", method = RequestMethod.POST) 
public String closeCase(@RequestParam destination, @ModelAttribute("closeCaseFrom") CloseCaseFrom closeCaseFrom, Model model) { 

    //.. 
    if (destination.equals("a")) { 
     // a goes to urlx 
     return "redirect:/urlx"; 
    if (destination.equals("b")) { // or just else { 
     // b goes to urly 
     return "redirect:/urly"; 

} 

oder anstelle von Werten a oder b, könnten Sie habe das tatsächliche Ziel als Wert in den Eingabefeldern und avo Verwenden Sie if, indem Sie einfach das Ziel in Ihre Weiterleitung einstecken.

+0

Es funktioniert !! Vielen Dank :) –