Multi Action с дизайном формы - PullRequest
1 голос
/ 26 марта 2010

Я хочу иметь контроллер, который может обрабатывать несколько запросов. Как и UserController, обрабатывающий все функции addUser, deleteUser, updateUser и viewUser. Я знаю, что MultiActionController можно использовать для объединения нескольких похожих запросов в один контроллер. Но такие функции, как addUser и updateUser, вовлекают пользователя в ввод данных, которые контроллер должен обработать. Может ли MultiActionController обрабатывать методы типа doSubmit (аналогично SimpleFormController). Есть ли лучший способ справиться с подобным сценарием?

Спасибо. Ravi

1 Ответ

1 голос
/ 26 марта 2010

Какую версию 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`
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...