如何根据用户按下的按钮在SpringMVC中启用不同的“POST”页面类型?

时间:2013-04-14 19:39:44

标签: jsp spring-mvc http-post

我的问题可能很糟糕,所以这里有一些代码。

在我的控制器中,我有这段代码:

@RequestMapping(value = "addGoal", method = RequestMethod.POST)
public String updateGoal(@Valid @ModelAttribute("goal") Goal goal, BindingResult result) {

    System.out.println("result has errors: " + result.hasErrors());

    System.out.println("Goal set: " + goal.getMinutes());

    if(result.hasErrors()) {
        return "addGoal";
    } else {
        goalService.save(goal);
    }

    return "redirect:index.jsp";
}

这表示(据我所知),如果用户向POST页面发送HTTP addGoal.jsp请求:创建Goal对象的实例,并将其重定向到{{1 }}

我的问题是,如何为给定页面提供多种POST方法? EG 2按钮 - 1个按钮执行上述index.jsp方法,页面上的其他按钮执行不同的POST方法。

先谢谢,对不起,如果我解释得不好,还在学习!

1 个答案:

答案 0 :(得分:0)

This says (as far as I understand it), if a user sends an HTTP POST request to the addGoal.jsp page

不完全是,用户将POST发送到已由Spring映射的此方法(addGoal),它返回(可能)WEB-INF / jsp / addGoal.jsp或/index.jsp < / p>

你可以在jsp上有多个表单,如果为每个表单定义不同的映射,每个表单都会发送到另一个表单,例如:

@RequestMapping(value = "addGoal", method = RequestMethod.POST)
//addGoal code
@RequestMapping(value = "addFoul", method = RequestMethod.POST)
//addFoul code
@RequestMapping(value = "addSelfGoal", method = RequestMethod.POST)
//addSelfGoal code

并让它们全部返回addGoal,尽管您可能希望在此时使用更通用的名称。