0

問題はかなり単純ですが、説明するのはちょっと難しいです。

次のような REST サービスがあります。

@Path("categories")
@RequestScoped
public class CategoryResource {

    @Inject
    CategoriesFacade dao;

    @PUT
    @Consumes("application/json")
    public void putJson(Categories content) {
        System.err.println(content.toString()); // <-- ?????
        dao.edit(content);
    }

    // ....
}

そして、次のようなエンティティ オブジェクト:

@XmlRootElement
public class Categories implements Serializable {

    @Id
    @Column(name = "CATEGORY_ID", unique = true, nullable = false, precision = 5)
    private Integer categoryId;

    @Column(name = "NAME")
    private String name;

    @JoinColumn(name = "PARENT_ID", referencedColumnName = "CATEGORY_ID")
    @ManyToOne
    private Categories parentId;

    // ....    

}

http リクエストのペイロードは次のとおりです。

PUT http://localhost:8080/api/categories
Data: {"categoryId":"7162","name":"test","parentId":null}

そして、ここにリクエストで取得したカテゴリオブジェクトがあります@PUT(????でマークされた行を参照してください):

Categories{
  categoryId=7162,
  name=test,
  parentId=Categories{categoryId=null, name=null, parentId=null}
}

ここでわかるようにparentId、空のオブジェクトが割り当てられています。このようにして、 null にすることはできないCategoriesため、ValidationException を取得しています。name

Jersey を作成してこの種のオブジェクトを提供する方法を考えているので、parentId の null 値は問題ありません。

Categories{
  categoryId=7162,
  name=test,
  parentId=null
}
4

1 に答える 1

0

クライアント サイトでオブジェクトを文字列化します (たとえば、クライアントが JavaScropt の場合は method を使用しますJSON.stringify)。
レストメソッドメイク

@PUT
@Consumes("application/json")
public void putJson(String content) {  

そして、json 文字列をオブジェクトに変換します (たとえば、Google json を使用)

Categories cont = new com.google.gson.Gson().fromJson(content, Categories.class);
于 2012-08-18T10:50:58.027 に答える