Проблема с ModelAndView и ModelMap в AnnotationController, Springframework - PullRequest
1 голос
/ 10 июля 2009

У меня есть вопрос, который представляет собой разницу между ModelAndView и ModelMap.

Я хочу сохранить modelAndView, когда requestMethod имеет значение «GET», а requestMethod имеет значение «POST». Моя модель AndView сохранила другие.

Итак, я сделал возвращаемый тип modelAndView для методов "GET", "POST".

Но, Запрос на потерю commandObject, форма: ошибки ..., если запрос возвращает showForm для "POST" из-за сбоя проверки запроса.

пример)

private ModelAndView modelAndView;    

public ControllerTest{
   this.modelAndView = new ModelAndView();
}

@RequestMapping(method = RequestMethod.GET)
public ModelAndView showForm(ModelMap model) {
    EntityObject entityObject = new EntityObject();
    CommandObject commandObject = new CommandObject();
    commandObject.setEntityObject(entityObject);
    model.addAttribute("commandObject", commandObject);
    this.modelAndView.addObject("id", "GET");
    this.modelAndView.setViewName("registerForm");

    return this.modelAndView;
}

@RequestMapping(method = RequestMethod.POST)
public ModelAndView submit(@ModelAttribute("commandObject") CommandObject commandObject,
        BindingResult result, SessionStatus status) {

    this.commandValidator.validate(commandObject, result);

    if (result.hasErrors()) {
        this.modelAndView.addObject("id", "POST");
        this.modelAndView.setViewName("registerForm");
        return this.modelAndView;

    } else {
        this.modelAndView.addObject("id", "after POST");
        this.modelAndView.setViewName("success");
    }
    status.setComplete();
    return this.modelAndView;

}

Ответы [ 2 ]

4 голосов
/ 10 июля 2009

Непонятно, в чем ваш вопрос, но что касается разницы между ModelMap и ModelAndView, они происходят из двух разных «поколений» Spring MVC. ModelAndView выполнен в стиле Spring 2.0, а ModelMap был представлен в версии 2.5.

Вообще говоря, если ваш контроллер подклассов контроллера Spring 2.0, такого как SimpleFormController (который, я думаю, ваш фрагмент кода), то ModelAndView - это то, что нужно использовать. Если вы используете аннотации @Controller в Spring 2.5, предпочтительным является ModelMap.

0 голосов
/ 28 апреля 2010

Мой вопрос был более направлен на то, как связать объекты формы HTML с POJO при отправке.

Java-код:

@RequestMapping(method = RequestMethod.POST)
public String processRequest(ModelMap map, @ModelAttribute("accessRequestBean") AccessRequestBean accessRequestBean){
    logger.debug(accessRequestBean);

    return("NOTHING");
}

HTML код:

    <@spring.bind "accessRequestBean" /> 
    <form>
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...