2017-09-25 11 views
0

Spring RestControllerからXMLをデシリアライズしようとすると、このエラーが発生します。ここで Spring XML - いいえ文字列値からデシリアライズする文字列引数のコンストラクタ/ファクトリメソッド

10:32:20.275 [main] WARN org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver - Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Could not read document: Can not construct instance of com.example.SomeThing: no String-argument constructor/factory method to deserialize from String value ('AAAA') 

はクラスです(変更の名前とパッケージ)

public final class SomeThing{ 
    public static final SomeThing AAAA = create("AAAA"); 

    public static SomeThing create(final String value) { 
     SomeThing result = new SomeThing(); 
     result.setValue(value); 
     return result; 
    } 
} 

デシリアライズすることが可能であるので、どのようにこのクラスを変更するのですか?

答えて

1

あなたはファクトリメソッドとしてSomething#create方法をマークしなければならないので、それは新しいSomethingインスタンスをインスタンス化するための方法として解決されます。

public final class SomeThing{ 

    private String val; 

    @JsonCreator 
    public static SomeThing create(final String value) { 
    SomeThing result = new SomeThing(); 
    result.setValue(value); 
    return result; 
    } 

    public void setValue(String value) { 
    this.val = value; 
    } 
} 
:ここ

があなたのクラスの修正版である(メインのOPで宣言されたフィールドと一致するように変更されていることに注意してください)
関連する問題