我在GWT的方法使用要求的火法大家都知道它的异步我打电话从JS这个方法,所以我需要做同步,才有可能以检索从数据库的数据
private static String retriveLocation(String part)
{
ClientFactory clientFactory = GWT.create(ClientFactory.class);
MyRequestFactory requestFactory = clientFactory.getRequestFactory();
YadgetRequest request = requestFactory.yadgetRequest();
String criteria = "!" + part;
final ArrayList<String> tags = new ArrayList<String>();
request.getTagsStartingWith(criteria, 10, 0).fire(
new Receiver<List<TagProxy>>() {
@Override
public void onSuccess(List<TagProxy> tagList) {
String output = "[";
for (TagProxy pt : tagList) {
output += "{";
output += "\"id\":" + "\"" + pt.getId() + "\",";
output += "\"value\":"
+ "\""
+ pt.getName().replaceAll("\"", "")
.replaceAll("!", "") + "\"";
output += "},";
}
if (output.length() > 2)
output = output.substring(0, output.length() - 1);
output += "]";
tags.add(output);
}
@Override
public void onFailure(ServerFailure error) {
}
});
return tags.size() + "";
}
并要求从JS这个函数是这样的:
public static native void exportStaticMethod() /*-{
$wnd.computeLoanInterest =
$wnd.getAutocomplete =@com.yadget.client.Yadget::retriveLocation(Ljava/lang/String;);
}-*/;
和内onModuleLoad()
我叫exportStaticMethod()
在HTML我有一个按钮,我称之为的onclick getAutocomplete()
是这样的:
<input type="button" onclick="alert(getAutocomplete('j'))" value="momo" />
问题是,大小总是返回0,因为该方法是异步的,但如果我能返回值onSuccess
会解决我的问题。 任何想法吗? 我一直在谷歌上搜索这2天,并没有得到答案。
换一种说法:
我有JS的方法,我需要它来调用Java方法来检索数据库的数据同步,但!
例
如果我有一个HTML按钮上点击我会把ID的功能,我需要通过GWT从DB retrive的名称,并提醒它; 只是因为GWT是asyncronous,我不会能够所以每次做时,我提醒结果,这将是一个空的,因为它尚未填补。