2016-10-28 3 views
1

Ok, das Problem, das ich habe, ist, dass ich erfolgreich einen Post-Aufruf mit RestTemplate machen kann. Die Anfrage wird auf der Serverseite erfolgreich abgeschlossen.Spring RestTemplate Antwort Werte alle Null

Wenn jedoch auf der Client-Seite gesetzt wird, werden die Werte nicht richtig zugewiesen. Die erste Klasse darunter ist die Client-Seite, die durch den Post-Aufruf ausgefüllt werden sollte. Die zweite Klasse ist diejenige, die vom Server zum Senden verwendet wird.

Ich glaube mein Problem tritt aufgrund des JSON-Formats auf, das der Server sendet. Es sieht ungefähr so ​​aus wie unten.

{ "record":{"firstName":"Bill", "lastName":"Johnson", "role":6}} 

Spring kann dies nicht automatisch auf der Clientseite POJO zuordnen. gibt es einen Weg um dies ohne den Server-Side-Code zu ändern?

Vielen Dank.

EmployeeResponse response = restTemplate.postForObject(uri, request, EmployeeResponse.class); 

//(Client Side) 
public class EmployeeResponse { 

    private String firstName; 
    private String lastName; 
    private int role; 


    public String getFirstName() { 
     return firstName; 
    } 

    public void setFirstName(String firstName) { 
     this.firstName= firstName; 
    } 
    public String getLastName() { 
     return longKey; 
    } 

    public void setLastName(String lastName) { 
     this.lastName= lastName; 
    } 
    public int getRole() { 
     return role; 
    } 

    public void setRole(int role) { 
     this.role = role; 
    } 
} 

//(Server-Side) 
public class EmployeeResponse { 

    private EmployeeRecord record; 

    public String getFirstName() { 
     return record.getFirstName(); 
    } 

    public String getLastName() { 
     return record.getLastName(); 
    } 

    public int getRole() { 
     return record.getRole(); 
    } 

    public ELAActivationResponse(EmployeeRecord record) { 
     this.record = record; 
    } 

} 

Antwort

0

Dies liegt daran, weil die Server-Antwort mit Root-Elemente gewickelte record und Ihr Client-Objekt nicht dem Fall, so dass sie nicht in der Lage, die Antwort auf Marschall.

Sie benötigen eine Antwort-Objektklasse (EmployeeResponse) mit @JsonRootName(value = "record")

mit Anmerkungen versehen
Verwandte Themen