多形式与表单设计策略

时间:2010-03-26 16:34:39

标签: spring-mvc

我想拥有一个可以处理多个请求的控制器。就像处理所有addUser,deleteUser,updateUser和viewUser功能的UserController一样。我知道MultiActionController可用于将多个类似的请求捆绑到一个控制器中。但是addUser和updateUser等功能涉及用户输入控制器需要处理的数据。 MultiActionController句柄可以doSubmit类方法(类似于SimpleFormController)。有没有更好的方法来处理这种情况?

感谢。 拉维

1 个答案:

答案 0 :(得分:1)

您使用的是什么版本的Spring MVC?如果您使用的是2.5或更高版本,您应该查看Spring MVC注释,它允许您使任意类成为具有任意数量的控制器方法的控制器(这绝对包括处理POST请求的一些 - “doSubmit “ - 和一些处理GET请求的人。)

编辑添加示例代码:

(请注意,在我尝试使用REST约定的示例中,但这不是必需的。)

UserController.java中的

(不需要从任何Spring类继承,但顶部应该有@Controller

@RequestMapping(value = "/users/{userId}", method = RequestMethod.GET)
public String showUser(@PathVariable("userId") Long userId, ModelMap model) {       
    model.addAttribute("user", userRepository.getUser(userId));
    return "showUser";  //view name
}

    @RequestMapping(value = "/users/", method = RequestMethod.POST)
    public String createUser(@ModelAttribute("user") User user, BindingResult result, SessionStatus status) {

    new UserValidator().validate(user, result);
    if (result.hasErrors()) {
        return "userForm";
    }
    else {
        userRepository.saveUser(user);
        status.setComplete();
        return "redirect:/users/" + user.getId();`enter code here`
    }