GWT-不能使用复合控件
我正在尝试创建一个封装菜单栏的复合小部件。我希望它定义了点击处理程序,这样我就可以简单地将它添加到我创建的任何.ui.xml中 这是我的菜单栏ui.xmlGWT-不能使用复合控件,gwt,widget,composite,uibinder,Gwt,Widget,Composite,Uibinder,我正在尝试创建一个封装菜单栏的复合小部件。我希望它定义了点击处理程序,这样我就可以简单地将它添加到我创建的任何.ui.xml中 这是我的菜单栏ui.xml 关于 | 接触 | 登录 这是关联的视图: 公共类GeneralMenuBarImpl扩展复合实现GeneralMenuBar{ @UiTemplate(“GeneralMenuBar.ui.xml”) 接口GeneralMenuBarImplUiBinder扩展了UiBinder{} 专用静态GeneralMenuBarImplUi
- 关于
- |
- 接触
- |
- 登录
这是关联的视图:
公共类GeneralMenuBarImpl扩展复合实现GeneralMenuBar{
@UiTemplate(“GeneralMenuBar.ui.xml”)
接口GeneralMenuBarImplUiBinder扩展了UiBinder{}
专用静态GeneralMenuBarImplUiBinder uiBinder=
create(GeneralMenuBarImplUiBinder.class);
私人演讲者;
@UiField HTML登录链接;
@UiField-HTML-contactLink;
@UiField-HTML-aboutLink;
公共GeneralMenuBarImpl(){
initWidget(uiBinder.createAndBindUi(this));
}
公共void setPresenter(Presenter-Presenter){
this.presenter=演示者;
}
@UiHandler(“登录链接”)
仅作废登录链接已单击(单击事件){
presenter.onLoginLinkClicked();
}
@UiHandler(“contactLink”)
作废onContactLinkClicked(ClickEvent事件){
presenter.onContactLinkClicked();
}
@UiHandler(“关于链接”)
已单击Boutlink时无效(单击事件){
onAboutLinkClicked();
}
公共小部件asWidget(){
归还这个;
}
}
然后,通过向ui.xml文件添加正确的名称空间,将其包含在主页上,然后添加以下行
<widget:GeneralMenuBarImpl></widget:GeneralMenuBarImpl>
这可以显示菜单栏,但我的单击处理程序不起作用。我怀疑这是因为菜单栏没有接收到演示者来告知事件发生
所以我的问题是:如何将演示者传递给包含的小部件,或者如何从包含它的页面访问小部件的uiFields
我希望有人能帮忙。这个问题已经困扰了很久了
提前谢谢各位 解决此问题的两种方法:
- 您可以在合成中公开链接,以便从包含页面访问它。包含页面可以将EventHandler附加到您的链接并在那里处理事件李>
public HasClickhandlers getAboutLink() {
return aboutLink
}
第页:
- 您必须从父页面/Presenter(
)中设置组合中的Presenter,其中包括组合。然后,您可以通过presenter和Composite之间的接口契约来处理单击李>menuBar.setPresenter(this);
- 您的组合只是一个小部件,还是有足够的业务逻辑使PresenterWidget脱离它(定义Presenter/视图对)李>
- 如果这个小部件只是一个简单的小部件,那么定义一个演示者可能是一种过分的做法(使用方法1)李>
- 如果您想在应用程序范围内处理点击,还可以在应用程序范围的
EventBus
- 您可以在合成中公开链接,以便从包含页面访问它。包含页面可以将EventHandler附加到您的链接并在那里处理事件李>
public HasClickhandlers getAboutLink() {
return aboutLink
}
第页:
- 您必须从父页面/Presenter(
)中设置组合中的Presenter,其中包括组合。然后,您可以通过presenter和Composite之间的接口契约来处理单击李>menuBar.setPresenter(this);
- 您的组合只是一个小部件,还是有足够的业务逻辑使PresenterWidget脱离它(定义Presenter/视图对)李>
- 如果这个小部件只是一个简单的小部件,那么定义一个演示者可能是一种过分的做法(使用方法1)李>
- 如果您想在应用程序范围内处理点击,还可以在应用程序范围的
EventBus