【问题标题】:How to populate ModelAttribute from form OR session?如何从表单或会话中填充 ModelAttribute?
【发布时间】:2018-09-16 00:25:04
【问题描述】:

在 Spring MVC 中,我有一个 @RequestMapping,它接收一个复杂对象作为 @ModelAttribute

对象来自 HTML 输入表单。但是现在我还有另一个用例,我需要保留会话中最后提交的对象,直到下次提交表单。

所以,我还声明了一个同名的@SessionAttributes

代码:

@SessionAttributes("searchRequestDto")
...
@RequestMapping(value = "/test") 
public String search(@ModelAttribute SearchRequestDto searchRequestDto, HttpServletRequest request, Model model) {
  ...

不幸的是,现在searchRequestDto 的值未初始化(新实例化),即使在提交表单时也是如此。

TL;DR:

如何声明参数,以便表单中的值自动存储并在 Session 中可用?

更多详情

该网站有一个复杂的搜索表单(类似于机票或酒店搜索,您必须在其中输入城市、日期、服务等级等)。每当用户返回搜索表单时,在之前提交了搜索表单之后,无论是下一页点击,还是“N”次页面点击或“X”小时后,表单都应该是预先填充了他们最后的搜索输入。我不认为这是第一个答案中建议的 flashAttribute 的用例。

【问题讨论】:

    标签: spring-mvc


    【解决方案1】:

    据我所知,@SessionAttributes 的使用是调用已保存的flashAttribute。 您还没有提到您正在使用它来保存@ModelAttributeon 表单提交。 在提交表单或需要保留它时使用this 之类的东西,这会将您的属性保存在会话中以供以后重复使用。

    【讨论】:

    • 我认为它不适合 flashAttribute,我会更新问题。
    猜你喜欢
    • 2015-04-21
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 2014-01-30
    相关资源
    最近更新 更多