Spring @SessionAttributes在控制器之间共享?

时间:2017-04-24 09:15:46

标签: java spring spring-mvc

我使用的是Spring 4.3.7,我在相应的视图中使用Spring form taglib获得了两个表单控制器。为了在请求之间保留表单数据(用于呈现无效表单),我将它们存储在SessionAttributes中。

LabCreateController:

@Controller
@RequestMapping(path = "/labs/create")
@SessionAttributes("form")
public class LabCreateController {

    @ModelAttribute("form")
    public LabCreateForm form() {
        return new LabCreateForm();
    }

    @GetMapping
    public String showForm() {
        return "lab_create";
    }

}

WallController:

@Controller
@RequestMapping(path = "/group/{id}/wall")
@SessionAttributes("form")
public class WallController {

    @ModelAttribute("form")
    public PostCreateForm form() {
        return new PostCreateForm();
    }

    @GetMapping(path = "/new")
    public String newPostGet() {
        return "communities_newpost";
    }

}

我在浏览器中打开/labs/create,一切都很好。然后我打开/group/4/wall/new并收到以下错误:

  

无效的属性' text'豆类   [... LabCreateForm]

即表示来自form的属性LabCreateController以某种方式传递给WallController,尽管Spring文档说:

  

使用此注释指示的会话属性对应于a   特定处理程序的模型属性。

我相信这意味着他们不应该在控制器之间共享。另外this answer说从春季开始就是如此。

这是一个错误还是我错过了什么?如果没有,在一个控制器内存储表单的适当方法是什么?

0 个答案:

没有答案