Spring MVC 3 JSON序列化程序返回后备字段并忽略封装

时间:2016-07-06 14:56:23

标签: java json spring-mvc encapsulation

我有一个返回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。有任何建议给序列化器提示吗?

1 个答案:

答案 0 :(得分:0)

我认为你必须将@JsonSetter添加到showLeft注释字段

public class ResourcesModel {
    private boolean showLeft;       

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