【问题标题】:Spring MVC 3 JSON serializer returning backing fields and ignoring encapsulationSpring MVC 3 JSON 序列化程序返回支持字段并忽略封装
【发布时间】:2016-07-06 14:56:22
【问题描述】:

我有一个控制器返回 JSON:

public @ResponseBody ResourcesModel data(@PathVariable(value = "id") long id, @PathVariable(value = "page") int page){
     //populate model
}

这是模型的相关部分:

public class ResourcesModel {
    private boolean showLeft;       

    public boolean getShowLeft(){
        return getPage() > 1;
    }

    public void setShowLeft(boolean b) { /*doesn't do anything*/  }
}

没有支持字段,showLeft 不会被序列化。在序列化期间,它只查看字段并忽略 getter。我觉得这很烦人......如果忽略它,封装有什么意义?

我知道有一些解决方法,比如在控制器中设置 showLeft,但我想避免这种情况并使用正确的 OO。有什么建议可以给序列化器提示吗?

【问题讨论】:

    标签: java json spring-mvc encapsulation


    【解决方案1】:

    我认为只需将 @JsonSetter 添加到字段 showLeft 注释

    public class ResourcesModel {
        private boolean showLeft;       
    
        public boolean getShowLeft(){
            return getPage() > 1;
        }
        @JsonSetter
        public void setShowLeft(boolean b) { /*doesn't do anything*/  }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-02-24
      • 1970-01-01
      • 2017-03-23
      • 1970-01-01
      • 2021-10-27
      • 1970-01-01
      • 1970-01-01
      • 2014-03-31
      • 1970-01-01
      相关资源
      最近更新 更多