4

Spark (Java のフレームワーク) を使用してクライアントから送信されたデータを読み取る必要があります。

これは、クライアントの投稿リクエストのコードです。jQueryを使用しています。

$.post("/insertElement", 
{item:item.value, value: value.value, dimension: dimension.value });

サーバーのコード:

post(new Route("/insertElement") {
        @Override
        public Object handle(Request request, Response response) {
            String item = (String) request.attribute("item");
            String value = (String) request.attribute("value");
            String dimension = (String) request.attribute("dimension");
            Element e = new Element(item, value, dimension);
            ElementDAO edao = new ElementDAO();
            edao.insert(e);
            JSONObject json = JSONObject.fromObject( e );
            return json; 
        }
    });

Spark を使用しているので、ルートを定義するだけです。クライアントから送信されたデータをデータベースに保存したいのですが、すべての属性が null です。

このやり方は正しくないと思います。送信されたデータを読み取るにはどうすればよいですか?

4

4 に答える 4

3

次のようなものが必要になります。

post(new Route("/insertElement") {
    @Override
    public Object handle(Request request, Response response) {

        String body = request.body();
        Element element = fromJson(body, Element.class);
        ElementDAO edao = new ElementDAO();
        edao.insert(e);
        JSONObject json = JSONObject.fromObject( e );
        return json; 
    }
});


public class Element {

    private String item;
    private String value;
    private String dimension;

    //constructor, getters and setters

}

public class JsonTransformer {

    public static String toJson(Object object) {
        return new Gson().toJson(object);
    }

    public static <T extends Object> T  fromJson(String json, Class<T> classe) {
        return new Gson().fromJson(json, classe);
    }

}
于 2015-05-08T00:28:49.147 に答える