Spring REST jackson不会在POST请求上编组

林使用春季4,并已添加杰克逊数据绑定,所以我可以得到请求/响应对象编组..它工作时,我从GET请求返回对象,但POST请求对象没有被填充..它不是空的它正在被实例化

我已经尝试过使用方法参数的HttpEntity来查看我是否获取了JSON对象,并且它在实体的主体中。 我可以手动编组它..

我试图找出什么是缺少或错误配置杰克逊

这是对象实例化但未填充的方法。 我使用Spring 4和控制器是用@RestController注释的,它结合了@Controller@ResponseBody

@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:

{
"id": 12,
"lastName": "Test",
"firstName": "Me"
}   

这是用户对象:public class User {private int id; 私人字符串姓氏; 私人字符串firstName; public User(){}

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;
}
}

我也有在我的上下文文件中定义的杰克逊映射器。 尽管文档陈述了这一点并不需要完成。 它确实没有它

<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注释

@RequestMapping(value="/create", method = RequestMethod.POST, consumes =  MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody ResponseEntity <?> getUser(@RequestBody final User user){

您在方法中缺少批注调用@RequestBody,如果我没有错,则还需要添加@ResponseBody。

@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);
}

提供的答复是正确的。 我确实需要将@RequestBody添加到方法中..我误读了文档..它只是使用@RestController添加的@ResponseBody@Controller 。 与此同时,我不需要将@ResponseBody添加到返回对象

链接地址: http://www.djcxy.com/p/8523.html

上一篇: Spring REST jackson not marshalling on POST request

下一篇: How to get the object from an API REST with Spring MVC