2016-07-06 7 views
0

Ich habe einen Controller JSON zurückkehr:Spring MVC 3 JSON Serializer Trägerfelder zurückkehr und Ignorieren Einkapselung

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

Hier ist der relevante Teil des Modells:

public class ResourcesModel { 
    private boolean showLeft;  

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

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

ohne die Unterstützung Feld showLeft wird nicht serialisiert. Während der Serialisierung wird nur das Feld betrachtet und der Getter ignoriert. Ich finde das sehr ärgerlich ... Was ist der Punkt der Kapselung, wenn es ignoriert wird?

Ich weiß, es gibt Arbeitsumgebungen wie Einstellung ShowLeft in der Steuerung, aber ich möchte dies vermeiden und richtige OO verwenden. Irgendwelche Vorschläge, um dem Serializer Hinweise zu geben?

Antwort

0

Ich denke, dass gerade Sie @JsonSetter auf dem Gebiet showLeft Anmerkung

public class ResourcesModel { 
    private boolean showLeft;  

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