Required API response from asyncCall method of GWT to JavaScript

Viewed 36

Required API response from asyncCall from GWT to JavaScript. I am very new to GWT and JS.

  1. I am have implemented callback mechanism from GWT to JavaScript - But not working, getting java.lang.cast Exception
  2. I have implemented JS method call from GWT - Not working, function is not defined etc .

My code flow: usage.js

/** API call from JS function**/
function x(){
var a,b,c,d;

/** CallBack method **/
var callback = function(param){
alert("Return Code: "+ param);
}
window.parent.frames[1].query.gwtMethodcall(a,b,c,d,callback ); 
}
/**Either call this function when API got executed successfully **/

function resultAPI(param){
alert("Retuned code: "+param);

}

GWTProject code:

$wnd.query.gwtMethodcall= function(a, b, c, d,callback){
            return @pkg.ClientAPI::gwtMethodcallAPI(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)(a, b, c, d,callback); }

 public static native void runCallback (JavaScriptObject func, Boolean parameter)/*-{

func(parameter); // 1st method For callback I am passing like this

$wnd.alert("Alert !!") -Working
$wnd.resultAPI(parameter); // 2nd method JS function I am calling like this -Its throwing error $wnd.resultAPI(parameter) is undefined. 

     
}-*/;


public void gwtMethodcallAPI(String a, int b, String c, String d,JavaScriptObject callback) {

        service1.gwtMethodcallAPI(String a, int b, String c, String d);
APPData.getInstance().getEventBus().addHandler(resultEvent.TYPE, new resultEventHandler() {
                @Override
                public void resultEventList(resultEventevent) {
                    runCallback(callback,event.getResult());
                }

service1.java

public void gwtMethodcallAPI(String a, int b, String c, String d,JavaScriptObject callback) {

/** Here the below call I am receivng java.lang cast exception **?
        service2.gwtMethodcallAPI(String a, int b, String c, String d, new AsyncCallback<Boolean>() {
         @Override
                public void onSuccess(Boolean arg0) {
                    logger.info("Setting document indexes status: "+arg0);
                    resultEvent event = new resultEvent (arg0);
                    APPData.getInstance().getEventBus().fireEvent(event);
                    
                }
                
                @Override
                public void onFailure(Throwable arg0) {
                    logger.info("Setting document indexes failed: "+arg0.getCause());
                    
}

Service2.java

    @Override
    public void gwtMethodcallAPI(String a, Integer b, String[] c, String[] indexValue,
        final AsyncCallback<Boolean> callback) {
        
    getService().gwtMethodcallAPI(a, b, c, d, new AsyncCallback<Boolean>() {
        
        @Override
        public void onSuccess(Boolean arg0) {
        callback.onSuccess(arg0);
        
        }
         @Override
        public void onFailure(Throwable arg0) {
            logger.info("Setting document indexes failed: "+arg0.getCause());
        }
and so on....

My problem is 1 st method:

service2.method call throwing cast exception when i am passing callback from JS. other wise the code is working I am receving the response . How to resolve this

2d method without passing callback from JS : How to call Js fuction from runCallBack method?

0 Answers
Related