使用gwt javascript overlay types特性编写json应用

gwt使用json替代rpc的简单示例中,使用gwt json可以将json字符串解析为java对象,但是这比较繁琐。比如:

JSONParser.parse(response.getText()).isObject().get("name").isString().stringValue()

从gwt 1.5开始引入了javascript overlay types特性,见:

http://code.google.com/intl/zh-CN/webtoolkit/doc/latest/DevGuideCodingBasicsOverlay.html

可以简化这个过程。还是用gwt使用json替代rpc的简单示例的示例,创建一个Customer类,用于操作json数据:

class Customer extends JavaScriptObject {
    protected Customer() {
    }

    public final native String getName() /*-{
        return this.name;
    }-*/;

    public static native Customer fromJson(String jsonString) /*-{
        return eval(‘(‘ + jsonString + ‘)’);
    }-*/;
}

这里的this,可是javascript的native关键字。方法被注释,而且增加了native,这样当gwt编译的时候,就知道注释部分是javascript的方法内容。

fromJson方法将响应返回的json文本转化为Customer类。

调用代码:

@Override
public void onResponseReceived(Request request,
        Response response) {
    dialogBox.setText("response:"
            + Customer.fromJson(response.getText()).getName());
    dialogBox.center();
    closeButton.setFocus(true);
}

PDF    发送文章为PDF   

这篇文章上的评论的 RSS feed TrackBack URI

Leave a Reply