问题
I have this GWT method:
public static native JavaScriptObject getJsValue() /*-{
var res = $wnd.product;
return res;
}-*/;
This is the HTML/JS part:
<script type="text/javascript" language="javascript">
var product = products({id:1}).first();
</script>
<!-- GWT -->
<script type="text/javascript" language="javascript" src="app/app.nocache.js"></script>
The object product
looks like this in Firebug:
Object { id=1, categoryid=0, name="Sample Product", more...}
After then,
Object obj = getJsValue(); // what cast?
However, how can I parse the resulting value to get the field values like the product id, etc.?
回答1:
If I have correctly understood the question, I'd use an overlay type, something like:
public class ProductJso extends JavaScriptObject {
protected ProductJso() {}
public final native int getId() /*-{
return this.id;
}-*/;
public final native int getCategoryId() /*-{
return this.categoryid;
}-*/;
public final native String getName() /*-{
return this.name;
}-*/;
// And so on...
}
Then modify you JSNI
to return the actual JSO
type
public static native ProductJso getJsValue() /*-{
return $wnd.product;
}-*/;
You get the idea, see also https://developers.google.com/web-toolkit/doc/latest/DevGuideCodingBasicsOverlay?hl=it#example-json
来源:https://stackoverflow.com/questions/15493476/how-to-pass-javascript-object-to-gwt-method-and-parse-result