el inconveniente que tengo es que estoy tratando de traer datos por medio de una clase estática en java que se pasara a javascript por medio de GWT. pero cuando hago las solicitud no obtengo los datos debido a que la clase RequestCallback no sincroniza la obtencion de la respuesta con el hilo principal por lo que al retornar el valor que estoy seteando, la respuesta aun no ha llegado y me devuelve un null, alguien sabe como sincronizar para que no me retorne sino hasta que la respuesta ya este lista, aca les dejo el codigo de mi clase estatica y de la que la invoca.
Código Java :
public class Data implements RequestCallback { String resp; static Data instance; final int STATUS_OK = 200; private Data(String pParams){ RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, "../data/data.php"); rb.setTimeoutMillis(2000); try{ rb.sendRequest(pParams, this); }catch(Exception e){ } } @Override public void onResponseReceived(Request request, Response response) { if(STATUS_OK == response.getStatusCode()){ resp = response.getText(); } } public void onError(Request request, Throwable exception){ } public String getData(){ return resp; } public static String getData(String pParams){ if(instance == null) instance = new Data(pParams); return instance.getData(); } }
la anterior es la clase que quiero invocar desde otras clases para traer datos del servidor, y a continuacion les dejo la clase que la invoca
Código Java :
public class Prueba extends VerticalPanel { private static Prueba prb; private Prueba(){ Button btn = new Button("prueba"); btn.addClickHandler(btnclk); this.add(btn); } private ClickHandler btnclk = new ClickHandler() { @Override public void onClick(ClickEvent event) { String datos; try{ datos = Data.getData("parametros"); // por ahora no son importantes los parametros }catch(Exception ex){ datos = "error"; } Window.alert(datos); } }; public static Prueba getInstance(){ if(prb == null) prb = new Prueba(); return prb; } }
si alguien me puede dar un tip se lo agradezco enormemente ya que es para mi trabajo de grado de la Universidad.
Saludos.