我很确定这一定在文档中的某个地方,但我已经找了好几天了,但没有发现它。当它就在我面前时,我可能会盲目地盯着自己,很抱歉问了一个明显的问题,但是......
@RequestMapping(method = RequestMethod.POST)
public ModelAndView post(@ModelAttribute("user") User user) {
ModelAndView mav = new ModelAndView(jsonView);
//....
return mav;
}
这是我的 POST 函数,作为我的 Controller 的一部分,我想尝试一下。因此,我启动了 Poster(我用来测试功能的 Firefox REST 测试器),并向 http://localhost:8000/userController 发送了一个 POST。带有参数{firstname =“foo”,lastname =“bar}。这给了我:
org.springframework.web.HttpSessionRequiredException: Session attribute 'user' required - not found in session
所以我尝试使用 { user.firstname = "foo", user.lastname = "bar"} ,同样的错误。为了使用这种自动将参数映射到对象的机制,我需要在 POST 或 PUT 请求中发送哪些参数?
干杯
Nik
最佳答案
如果您的类中有 @SessionAttributes
注释,这种效果显然会发生。这会导致 Spring 期望将模型属性存储在先前 GET
Web 请求的 session 中,该请求将对象放入模型中。
此行为允许将请求参数部分绑定(bind)到模型对象。工作流程如下:
- 您收到填充模型的
GET
请求 - Spring 将您在
@SessionAttributes
中通过名称或类型配置的所有模型对象绑定(bind)到 session - 您收到包含更新数据的
POST
请求 - Spring 从 session 中获取对象并将请求数据绑定(bind)到它们
否则 Spring 会填充一个空的新对象,这通常不是所需的行为。
关于java - Spring 3.0M4 并将对象作为参数传递给 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1385706/