Я хотел бы сделать что-то вроде этого:
public ModelAndView someAction(SessionUser sessionUser, Model model) {
model.addAttribute(sessionUser);
return new ModelAndView("someview");
}
Если экземпляр объекта SessionUser хранится в сеансе и связан с параметром sessionUser во время выполнения запроса.
Я новичок в Spring MVC, но в .NET MVC это может быть достигнуто путем создания ModelBinder как такового:
public class SessionUserModelBinder : IModelBinder
{
private const string sessionUserSessionKey = "_sessionUser";
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
// Return the sessionUser from Session[] (creating it first if necessary)
SessionUser sessionUser = (SessionUser)controllerContext.HttpContext.Session[sessionUserSessionKey];
if (sessionUser == null)
{
sessionUser = new SessionUser();
controllerContext.HttpContext.Session[sessionUserSessionKey] = sessionUser;
}
return sessionUser;
}
}
Это будет выполнено как часть конвейера выполнения запроса. Если sessionUser не был найден в параметрах запроса, он бы дал возможность привязке этой пользовательской модели.
Существует ли аналогичный механизм в Spring MVC 3, который позволил бы мне выполнить то же самое? Я бы предпочел, чтобы мой контроллер и его методы не знали, исходит ли связанный объект из полей формы, параметров URL, сеанса и т. Д.
Заранее спасибо!