0

下面的 API 是从 UI 调用的,并且它希望被其他 API 重定向到。

@RequestMapping(value = "/showAbc", method = RequestMethod.POST)
public ModelAndView showAbc(@RequestBody Abc abcInstance) {
    //doSomething
}

下面的 API 也是从 UI 端调用的,但它使用存储库调用获取 Abc 类的实例,现在想要使用重定向调用上面的 API,并且还希望将实例作为参数传递。

@RequestMapping(value = "/showBcd", method = RequestMethod.POST)
public ModelAndView showBcd(@RequestParam String bcdId){
    Abc abc = abcRepository.findByBcdId(bcdId);
    /* How to pass the instance of Abc, when redirecting to /showAbc */
    return new ModelAndView("redirect:/showAbc");
}

现在,在上面的重定向中,当从 /showBcd 重定向到 /showAbc 时,我还想传递 Abc 的实例。

4

2 回答 2

1

如果它在同一个应用程序中,我不建议将一个 API 调用到另一个 API。这样您就可以将 API 与 API 紧密耦合。要么让 API 契约被 UI 调用,要么通过普通的 java 服务调用来处理委托。

@RequestMapping(value = "/showAbc", method = RequestMethod.POST)
public ModelAndView showAbc(@RequestBody Abc abcInstance) {
    return new ModelAndView("abc",abcService.get());
}

@RequestMapping(value = "/showBcd", method = RequestMethod.POST)
public ModelAndView showBcd(@RequestParam String bcdId){
    // You should move this repo call to bcdService.java
    Abc abc = abcRepository.findByBcdId(bcdId);
    //Use a normal service call to get the instance instead of a API call
    return new ModelAndView("abc",abcService.getViaInstance(abc));
}

但是,要将模型传递给视图(转发请求),您需要将模型添加为:

ModeAndView m = new ModelAndView("forward:/showAbc");
Abc abc = getAbcInstance();
m.addObject("abc",abc);
return m;
于 2018-05-02T07:19:35.193 回答
0

请试试这个

ModeAndView m = new ModelAndView("redirect:/showAbc");
Abc abc = abcRepository.findByBcdId(bcdId);
m.addObject("abc",abc);
return m;
于 2018-05-02T06:28:34.630 回答