java - Spring 3.0M4 并将对象作为参数传递给 POST

标签 java spring rest post parameters

我很确定这一定在文档中的某个地方,但我已经找了好几天了,但没有发现它。当它就在我面前时,我可能会盲目地盯着自己,很抱歉问了一个明显的问题,但是......

@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)到模型对象。工作流程如下:

  1. 您收到填充模型的 GET 请求
  2. Spring 将您在 @SessionAttributes 中通过名称或类型配置的所有模型对象绑定(bind)到 session
  3. 您收到包含更新数据的 POST 请求
  4. Spring 从 session 中获取对象并将请求数据绑定(bind)到它们

否则 Spring 会填充一个空的新对象,这通常不是所需的行为。

关于java - Spring 3.0M4 并将对象作为参数传递给 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1385706/

相关文章:

Java:如何将图像添加到 Jlabel?

java - 在java中将索引附加到多维数组

spring - 在 spring-data-jpa 中对存储库方法实现自定义行为

javascript - 验证请求参数的最佳方法 sails.js/node.js

rest - 在 Restful API 中创建多对多关系的 "right"方法是什么

java - 如何减少创建 c3p0 ComboPooledDataSource 和获取 Oracle 数据库连接的超时时间?

java - JAXB - 包含 HTML 页面的解码元素

java - Spring Boot - 不允许使用 POST 方法

java - Spring org.springframework.web.multipart.support.MissingServletRequestPartException,所需的请求部分 'file' 不存在

java - 如何在 Controller 中仅调用一次方法