Java Spring 3.0M4并将对象作为参数传递给POST
我很确定这一定在文档中的某个地方,但我已经找了好几天了,还没有发现它。当它就在我面前时,我可能是在盲目地盯着自己,所以很抱歉问了一个明显的问题,但是Java Spring 3.0M4并将对象作为参数传递给POST,java,spring,rest,post,parameters,Java,Spring,Rest,Post,Parameters,我很确定这一定在文档中的某个地方,但我已经找了好几天了,还没有发现它。当它就在我面前时,我可能是在盲目地盯着自己,所以很抱歉问了一个明显的问题,但是 @RequestMapping(method = RequestMethod.POST) public ModelAndView post(@ModelAttribute("user") User user) { ModelAndView mav = new ModelAndView(jsonView); //.... return m
@RequestMapping(method = RequestMethod.POST)
public ModelAndView post(@ModelAttribute("user") User user) {
ModelAndView mav = new ModelAndView(jsonView);
//....
return mav;
}
这是作为控制器一部分的POST函数,我想尝试一下。因此,我启动了Poster,Firefox REST测试仪,我用它来测试我的功能,并使用参数{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
该注释将在会话中搜索名为“user”的属性,而您在POST中发送的参数将存储为请求的参数:
//Get a session attribute:
request.getSession().getAttribute("user");
//Get a request parameter:
request.getParameter("firstname");
不需要对
用户
方法参数进行任何注释,Spring会将其识别为一个命令对象,并绑定到它而不使用注释
@modeldattribute
有点让人困惑,我发现,它的含义似乎在不同的情况下有所不同。如果类中有@SessionAttributes
注释,这种效果显然会发生。这导致Spring期望模型属性存储在会话中,来自先前的GET
web请求,即将对象放入模型中
此行为允许将请求参数部分绑定到模型对象。工作流如下所示:
GET
请求来填充模型@SessionAttributes
中按名称或类型配置的所有模型对象绑定到会话POST
请求Othwerise Spring将填充一个空的新对象,这绝大多数不是期望的行为。对,我想我要问的是:如何在我的REST请求中设置这个用户属性?或者“用户”只存在于服务器端会话中?啊哈!:-)这完全有道理,所以我误解了这一部分,并假设Spring将值映射到请求的对象,以便可以实例化或请求该对象。这便于“向导”过程