Что лучше, верните "ModelAndView" или "String" на контроллере spring3
Обратный путь ModelAndView
@RequestMapping(value = "/list", method = RequestMethod.GET)
public ModelAndView list(
@UserAuth UserAuth user,
ModelAndView mav) {
if (!user.isAuthenticated()) {
mav.setViewName("redirect:http://www.test.com/login.jsp");
return mav;
}
mav.setViewName("list");
mav.addObject("articles", listService.getLists());
return mav;
}
Способ возврата Строка
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String list(
@UserAuth UserAuth user,
Model model) {
if (!user.isAuthenticated()) {
return "redirect:http://www.test.com/login.jsp";
}
model.addAttribute("articles", listService.getLists());
return "list";
}
Они работают одинаково. что лучше? и какая разница?
Ответы
Ответ 1
Нет лучшего способа. Оба они абсолютно верны. Какой из них вы предпочитаете использовать, зависит от того, что лучше подходит для вашего приложения - Spring позволяет вам делать это в любом случае.
Исторически оба подхода взяты из разных версий Spring. Подход ModelAndView
был основным способом возвращения как модели, так и информации о представлении с контроллера в pre-Spring 2.0. Теперь вы можете комбинировать параметр Model
и возвращаемое значение String
, но старый подход все еще действителен.
Ответ 2
Я хотел бы добавить еще 2 цента. Второй подход более ориентирован на ориентацию на конвенцию. Разработчик явно указывает, что представляет собой его взгляд, но его неявное, что возвращаемая строка - это имя вида. Так что меньше кодирования, читаемости и стандартных. Гораздо лучше, чем более старый способ с ModelAndView