使用java spring中的Post-Redirect-Get模式转换Post请求

时间:2016-05-25 09:52:15

标签: java spring spring-mvc

我想使用post / redirect / get模式转换post请求,以防止映射到HTTP路径的"模糊处理程序方法"错误。有关详细信息,请参阅This question

这是初始代码:

@Controller
@RequestMapping("/bus/topologie")
public class TopologieController {
    private static final String VIEW_TOPOLOGIE = "topologie";

    @RequestMapping(method = RequestMethod.POST, params = { "genererCle" })
    public String genererCle(final Topologie topologie, final Model model)
        throws IOException {
        cadreService.genererCle(topologie);
        return VIEW_TOPOLOGIE;
    }

我真的不懂如何使用PRG模式重新编码。即使我认为我理解了潜在的概念。

1 个答案:

答案 0 :(得分:4)

您需要添加另一个可以处理相同网址映射的GET请求的方法。 因此,在POST方法中,您只需进行重定向,在GET方法中,您可以执行所有业务流程。

@Controller
@RequestMapping("/bus/topologie")
public class TopologieController {
    private static final String VIEW_TOPOLOGIE = "topologie";

    @RequestMapping(method = RequestMethod.POST, params = { "genererCle" })
    public String genererClePost(final Topologie topologie, final RedirectAttributes redirectAttributes, @RequestParam("genererCle") final String genererCle, final Model model)
        throws IOException {
        redirectAttributes.addAttribute("genererCle", genererCle);
        return "redirect:/bus/topologie";
    }

    @RequestMapping(method = RequestMethod.GET, params = { "genererCle" })
    public String genererCleGet(final Topologie topologie, final Model model)
        throws IOException {
        cadreService.genererCle(topologie);
        return VIEW_TOPOLOGIE;
    }