java - One async call instead of two GWT -
i have text area , button. when set text in text area (on paste browse event, other events ignored) or click button same phone call sent server via value alter handler text area , click handler button. if info wrong, server throws exception , returns client message box.
so when set info text area , click button, 2 message boxes appear. there way create 1 message box appear such case?
some code illustration of issue:
textarea.addvaluechangehandler(new valuechangehandler<string>() { @override public void onvaluechange(valuechangeevent<string> event) { firehandlers(); } }); button.addclickhandler(new clickhandler() { @override public void onclick(clickevent event) { firehandlers(); } }); //............ private void firehandlers() { (myprocesshandler handler : myhandlerslist) { handler.handle(); } } //............ public static interface myprocesshandler { public void handle(); } //............ addmyprocesshandler(new myprocesshandler() { @override public void handle() { asynccallback<string[]> ac = new asynccallbackadapter<string[]>() { public void onsuccess(string[] data) { //post processing } @override public void onfailure(throwable throwable) { super.onfailure(throwable); } }; remotecall.getmyservice().getresultfromdata(textarea.getdata(), ac); } });
i think alexey says this:
private boolean eventfired = false; textarea.addvaluechangehandler(new valuechangehandler<string>() { @override public void onvaluechange(valuechangeevent<string> event) { firehandlers(); } }); button.addclickhandler(new clickhandler() { @override public void onclick(clickevent event) { firehandlers(); } }); //............ private void firehandlers() { if(!eventfired) { eventfired = true; (myprocesshandler handler : myhandlerslist) { handler.handle(); } } } //............ public static interface myprocesshandler { public void handle(); } //............ addmyprocesshandler(new myprocesshandler() { @override public void handle() { asynccallback<string[]> ac = new asynccallbackadapter<string[]>() { public void onsuccess(string[] data) { eventfired = false; //post processing } @override public void onfailure(throwable throwable) { super.onfailure(throwable); eventfired = false; } }; remotecall.getmyservice().getresultfromdata(textarea.getdata(), ac); } });
make decision set eventfired=false
in code. maybe after processing reply server, maybe after starting async phone call enable actions while waiting server.
java gwt event-handling
No comments:
Post a Comment