I have a dispatch method, exposed through JsInterop, which can take various kinds of payloads.
Once called from native javascript, I need to cast the payload, but this doesn't quite work as I would like it too.
Here is a simplified example.
GWT:
@JsExport@JsType@JsNamespace("foo")public class Dispatcher { public String dispatch(String action, Payload payload){ if("action1".equals(action)) return dispatchWithCast(payload); return "Unknown action: " + action; } public String dispatchWithCast(Payload payload){ ConcretePayload w = (ConcretePayload) payload; return w.foo; }}
@JsExport@JsTypepublic class Payload {}
@JsExport@JsTypepublic class ConcretePayload extends Payload { public String foo; public int bar;}
var test = new foo.Dispatcher();alert("Dispatch: " + test.dispatch("action1", {"foo": "a", "bar": 2})); // Uncaught java.lang.ClassCastException
I guess this this may be beyond the capabilities of the transpiler, I just need to figure out an alternative approach.
Any ideas?
(By the way, I am using the sso linker.)
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment