【发布时间】:2014-01-30 17:12:37
【问题描述】:
我有一个触发ValidEvent(GXT 自定义事件)的对话框:
public class MyDialog extends Dialog implements HasValidHandlers {
...
}
所以如果我将它包含在UiBinder 文件中,我应该能够执行类似的操作(参见@UiHandler):
@UiField
MyDialog myDialog;
@UiHandler("myDialog")
void onValid(ValidEvent event) {
..
}
我想将MyDialog 包含在同样使用UiBinder 定义的小部件中:
public class MyWidget extends Composite {
@UiField
MyDialog myDialog;
public MyWidget(Binder binder) {
initWidget(binder.createAndBindUi(this));
}
@UiHandler("myDialog")
void onValid(ValidEvent event) {
..
}
interface Binder extends UiBinder<Widget, MyWidget> {}
}
问题:该组件在ui.xml文件中的什么位置?
在组件中包含对话框会导致图形问题,因为 UiBinder 会尝试在小部件中添加对话框:
<g:HTMLPanel>
<MyDialog ui:field="myDialog"/>
</g:HTMLPanel>
但是:在uIBinder,我只能有一个根组件。
问题:如何在一个 UiBinder 文件中声明 2 个不同的组件?我想避免创建一个ui.xml 只是为了声明对话框,如果我通过new 实例化它,@UiHandler 将不起作用。
【问题讨论】: