Spring REST jackson not marshalling on POST request
我使用Spring4并添加了Jackson DataBind,这样我就可以将请求/响应对象进行整理。当我从GET请求返回对象时,它会工作,但不会填充post-request对象。它不是空的,因此正在实例化它
我尝试使用httpEntity来获取方法参数,以查看我是否正在获取JSON对象,它是否在实体的主体中。然后我可以手动整理它。
我想弄清楚杰克逊失踪或配置不当的原因
这是实例化但不填充对象的方法。im使用弹簧4,控制器注释为
1 2 3 4 5 6 | @RequestMapping(value="/create", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<?> getUser(User user) { log.debug("got user:" + user.getId()); return new ResponseEntity<>(HttpStatus.OK); } |
这是JSON:
1 2 3 4 5 | { "id": 12, "lastName":"Test", "firstName":"Me" } |
号
这是用户对象:公共类用户{私人内部ID;私有字符串姓氏;私有字符串名字;公共用户()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public User(int id, String lname, String fname) { this.id = id; this.lastName = lname; this.firstName = fname; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } } |
我的上下文文件中还定义了杰克逊映射器。尽管医生说这不必做。没有它就行了
1 2 3 4 5 6 7 8 9 10 | <beans:bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <beans:property name="messageConverters"> <beans:list> <beans:ref bean="jsonMessageConverter"/> </beans:list> </beans:property> </beans:bean> <beans:bean id="jsonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> </beans:bean> |
。
您的方法中缺少一个注释调用@requestbody,如果我没有错,您还需要添加@responsebody。
1 2 3 4 5 6 | @RequestMapping(value="/create", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) public @ResponseBody ResponseEntity<?> getUser(@RequestBody User user) { log.debug("got user:" + user.getId()); return new ResponseEntity<>(HttpStatus.OK); } |
号
尝试在方法调用中使用
1 2 | @RequestMapping(value="/create", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) public @ResponseBody ResponseEntity <?> getUser(@RequestBody final User user){ |
提供的答复是正确的。我确实需要将