2016-10-28 13 views
1

これは、RestTemplateを使用してポストコールを正常に行うことができます。要求はサーバー側で正常に完了します。Spring RestTemplateレスポンスの値がすべてnull

ただし、クライアント側で設定されると値が正しく割り当てられません。以下の最初のクラスは、ポストコールによって設定されるクライアント側です。 2番目のクラスは、サーバーがそれを送信するために使用されているクラスです。

私の問題は、サーバーが送信するJSON形式のために発生すると考えられます。それは以下のようになります。

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

Springは自動的にこれをクライアント側のPOJOにマップできません。サーバー側のコードを変更することなくこれを回避する方法はありますか?

ありがとうございます。

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; 
    } 

} 

答えて

0

サーバの応答がルート要素recordでラップされ、クライアントオブジェクトがないので、応答をマーシャリングするために、そのできないためためです。

レスポンスオブジェクトクラス(EmployeeResponse)に@JsonRootName(value = "record")

と注釈を付ける必要があります
関連する問題