2016-04-08 14 views
1

Ich habe startController und Startansicht. In dieser Ansicht gebe ich Anzahl und Betrag ein und validiere sie. Wenn die Validierung erfolgreich war, möchte ich diese Parameter (Anzahl und Menge) an einen anderen Controller übergeben und danach einige Operationen in diesem Controller ausführen. Ich sehe zwei Möglichkeiten:Wie übergeben POST-Parameter vom Controller zu einem anderen Controller Spring MVC?

  1. machen Sie diese Operationen in der ersten Controller, in einer anderen Methode und verwenden Sie die zweite Ansicht dafür. Aber mein Controller wird sehr groß und die ganze Logik wird dies sein.

  2. zweiten Controller erstellen und zweite Ansicht und Parameter an diesen Controller übergeben.

Ich mache dies:

@Controller 
@RequestMapping("/") 
public class StartController { 

    @Autowired 
    private ValidateService validateService; 

    @RequestMapping(method = RequestMethod.GET) 
    public ModelAndView printWelcome() { 
     ModelAndView modelAndView = new ModelAndView("start"); 
     return modelAndView; 
    } 

    @RequestMapping(value = "process", method = RequestMethod.POST) 
    public ModelAndView process(HttpServletRequest request) { 
     ModelAndView modelAndView; 
     String phoneNumber = request.getParameter("phone_number"); 
     int amount = Integer.parseInt(request.getParameter("amount")); 

     String result = validateService.validate(phoneNumber, amount); 

     if (!result.equals("OK")) { 
      modelAndView = new ModelAndView("start"); 
      modelAndView.addObject("result",result); 
     }else { 
      modelAndView = new ModelAndView("redirect:/check/process"); 
      modelAndView.addObject("phone_number", phoneNumber); 
      modelAndView.addObject("amount",amount); 
     } 
     return modelAndView; 
    } 

und wenn result != OK ich neue Controller

@Controller 
@RequestMapping("/check") 
public class CheckController { 

    @RequestMapping(value = "process", method = RequestMethod.GET) 
    public ModelAndView process(HttpServletRequest request) { 
     ModelAndView modelAndView = new ModelAndView("check"); 
     String phoneNumber = request.getParameter("phone_number"); 
     int amount = Integer.parseInt(request.getParameter("amount")); 
     return modelAndView; 
    } 
} 

Aber ich muss passieren Parameter mit RequestMethod.POST und es wird nicht funktionieren umleiten. Wie geht es?

Antwort

0

Sie können eine ModelAndView mit Parametern wie folgt zurück:

return new ModelAndView("redirect:/check/process?phone_number="+yourPhoneNumber+"&amount="+amount) 
0

Sie können uns auf einen neuen Controller nach rechts gehen benutzen? "vorwärts:/test2? Param1 = foo & param2 = bar"; Bitte beachten Sie den untenstehenden Link für weitere Details. Spring forward with added parameters?

+0

Das funktionierte für mich ... Also danke –

Verwandte Themen