zoukankan      html  css  js  c++  java
  • SpringMVC @RequestBody问题:Unrecognized field , not marked as ignorable

    在使用Json传值并且使用@RequestBody注解的时候需要注意一些问题:

    1. 一个方法中只能有一个@RequestBody注解。
    2. 默认情况下@RequestBody标注的对象必须包含前台传来的所有字段。


    第一条容易理解,因为RequestBody就是request的inputStream,这个流在第一次使用该注解后会关闭,后面的都会报错(stream closed)。


    第二条如果没有包含前台传来的字段,就会报错:Unrecognized field xxx , not marked as ignorable,这是因为MappingJacksonHttpMessageConverter默认要求必须存在相应的字段。如果没有前台传来的某个字段,就会报错。。


    解决方法有很多,可以增加一个字段来接收前台传来的这个值,如果存在多个字段,这种方式很不好(就算一个字段,如果没用,新增字段也不好)。


    或者在前台往后台传值的时候,去掉无用的字段。这样还能减少网络传输的大小。


    还有一些方法,这些方法主要是使用Jackson提供的json注解。


    @JsonIgnore注解用来忽略某些字段,可以用在Field或者Getter方法上,用在Setter方法时,和Filed效果一样。这个注解只能用在POJO存在的字段要忽略的情况,不能满足现在需要的情况。


    @JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略类中不存在的字段,可以满足当前的需要。这个注解还可以指定要忽略的字段。使用方法如下:

    @JsonIgnoreProperties({ "internalId", "secretKey" })

    指定的字段不会被序列化和反序列化。

     原文: http://blog.csdn.net/isea533/article/details/33397735

    没有去尝试,那么连后悔的资格都没有
  • 相关阅读:
    Java io 理解
    Java应用的理解
    Flyweight 享元模式
    Bridge 桥梁模式
    Decrator 装饰模式
    [CF997C]Sky Full of Stars_二项式反演_等比数列_容斥原理
    [CF1010D]Mars Over_位运算性质
    [CF991D]Bishwock_状压dp
    [Agc030B]Tree Burning_贪心
    [Cometoj#4 E]公共子序列_贪心_树状数组_动态规划
  • 原文地址:https://www.cnblogs.com/li-yongjie/p/5349735.html
Copyright © 2011-2022 走看看