我正在打电话给数据库。结果必须用于子表单。所以我想等到数据库的结果出来。为此我需要同步。我的想法是使用java.lang中的Object.notifyAll(),但GWT不支持这一点。 GWT中是否有任何等效的方法用于notifyAll()?
edit1 :我正在使用gxt FormPanel提交数据。我可以更改buttonBar的类型,但我认为addSubmitCompleteHandler不会解决我的问题。
这里有一些代码片段:
final Button submit = new Button("Submit");
submit.addListener(Events.OnClick, new Listener<ButtonEvent>() {
@Override
public void handleEvent(ButtonEvent be) {
// 1. Get the data from Database (here i must wait for the response from DB)
// 2. Submit the form
}
);
final FormPanel buttonBar = new FormPanel();
buttonBar.addStyleName("abUploadField");
buttonBar.setHeaderVisible(false);
buttonBar.setBorders(false);
buttonBar.setStyleAttribute("margin", "0px");
buttonBar.setEncoding(FormPanel.Encoding.MULTIPART);
buttonBar.setMethod(FormPanel.Method.POST);
buttonBar.add(file);
buttonBar.add(submit);
buttonBar.setAction("myURL");
edit2 :我想从数据库中获取序列ID(这是事件处理程序中的第一步)。此ID将用于提交。在提交时,我正在使用数据填充数据库中的一些表格。该ID将用于标识,哪个用户启动了提交,并且对于此用户,我想显示带有“提交成功”消息的对话框。我希望,你理解我的意思:)(抱歉,我的英语不好)
答案 0 :(得分:2)
就像你说的那样,GWT doesn't support Object.notifyAll()
。但是,如果您使用FormPanel
提交您的值,则只需addSubmitCompleteHandler
并在结果返回时收到通知。如果你正在使用RequestBuilder
,同样的事情 - 提供一个RequestCallback
,当收到对请求的响应时,它会被触发。
答案 1 :(得分:0)
问题的解决方案是添加一个提交侦听器(Events.Submit),它与gwt表单面板的addSubmitCompleteHandler相同。