次のようにJSONをサーバーに投稿したとしましょう:
{
warFile: {name: "test1", dependencies: [test0, test2]},
param: {build: true, test: true}
}
そして、私は次のように3つのクラスを持っています:
public class WarFile{
private String name:
private String[] dependencies;
public void setName(){...};
public String getName(){...};
public void setDependencies(){...};
public String[] getDependencies(){...};
}
public class Param{
private boolean build;
private boolean test;
public void setBuild(){...};
public boolean isBuild(){...};
public void setTest(){...};
public boolean isTest(){...};
}
public class Command{
private WarFile warFile;
private Param param;
private void setWarFile(){...};
private WarFile getWarFile(){...};
private void setParam(){...};
private Param getParam(){...};
}
以下のようにコントローラ:
@RequestMapping(value = "/test.ajax", method = RequestMethod.POST)
public @ResponseBody
BuildResult buildWar(@RequestBody Command cmd) {
return logic.build(cmd.getWarFile(), cmd.getParam());
}
コマンドのandはプリミティブ型ではないためwarFile
、param
常に次のエラーが発生します。
The request sent by the client was syntactically incorrect.
Command のすべてのプロパティがプリミティブ型であれば問題はないと確信しています。しかし、なぜこのエラーが発生したのでしょうか? つまり、オブジェクトはシンプルで、カスタム デシリアライザーを記述する必要はありません。