Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用GWT平台的UIHandler?_Gwt_Gwt Platform_Gwt Mvp_Gwtp - Fatal编程技术网

如何使用GWT平台的UIHandler?

如何使用GWT平台的UIHandler?,gwt,gwt-platform,gwt-mvp,gwtp,Gwt,Gwt Platform,Gwt Mvp,Gwtp,我一直在努力写作。示例使用gwt平台我已经成功地使用manual reveal获得了contacts视图以获取contacts list,我尝试使用UiHandlers for add button,但它没有调用contacts Presenter的onAddButtonClicked()中的方法 fallowing是我的视图的代码片段 public class ContactsView extends ViewWithUiHandlers<ContactsViewUiHandlers&g

我一直在努力写作。示例使用gwt平台我已经成功地使用manual reveal获得了contacts视图以获取contacts list,我尝试使用UiHandlers for add button,但它没有调用contacts Presenter的onAddButtonClicked()中的方法

fallowing是我的视图的代码片段

public class ContactsView extends ViewWithUiHandlers<ContactsViewUiHandlers> implements  ContactsPresenter.MyView {

private final Widget widget;

@UiField
Button addButton;

@UiHandler("addButton")
public void onAddButtonClick(ClickEvent e){
    System.out.println("add button clicked");
    getUiHandlers().onAddButtonClicked();
}  
在我的演示者中,我使用onAddButtonClicked()中的事件总线触发一个事件

但是该控件不会出现在我的演示者中,当我单击“添加”按钮时,会出现以下异常

[ERROR] [contactsgwtp] - Uncaught exception escaped

10:17:10.527 [ERROR] [contactsgwtp] Uncaught exception escaped

com.google.gwt.event.shared.UmbrellaException: One or more exceptions caught, see full set in UmbrellaException#getCauses
    at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:129)
    at com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:129)
    at com.google.gwt.event.dom.client.DomEvent.fireNativeEvent(DomEvent.java:116)
    at com.google.gwt.user.client.ui.Widget.onBrowserEvent(Widget.java:177)
    at com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1351)
    at com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1307)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
    at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:337)
    at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:218)
    at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
    at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)
    at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269)
    at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
    at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
    at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:213)
    at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
    at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:292)
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:546)
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NullPointerException: null
    at com.saik.in.client.core.ContactsView.onAddButtonClick(ContactsView.java:51)
    at com.saik.in.client.core.ContactsView_BinderImpl$1.onClick(ContactsView_BinderImpl.java:50)
    at com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:54)
    at com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:1)
    at com.google.gwt.event.shared.GwtEvent.dispatch(GwtEvent.java:1)
    at com.google.web.bindery.event.shared.EventBus.dispatchEvent(EventBus.java:40)
    at com.google.web.bindery.event.shared.SimpleEventBus.doFire(SimpleEventBus.java:193)
    at com.google.web.bindery.event.shared.SimpleEventBus.fireEvent(SimpleEventBus.java:88)
    at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:127)
    at com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:129)
    at com.google.gwt.event.dom.client.DomEvent.fireNativeEvent(DomEvent.java:116)
    at com.google.gwt.user.client.ui.Widget.onBrowserEvent(Widget.java:177)
    at com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1351)
    at com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1307)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
    at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:337)
    at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:218)
    at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
    at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)
    at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269)
    at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
    at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
    at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:213)
    at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
    at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:292)
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:546)
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
    at java.lang.Thread.run(Thread.java:662)

任何关于我遗漏的内容的建议,请提前感谢显然
getUiHandlers()
null
。。。但你知道:——)

我认为造成这种情况的原因可能是您在注入关联的presenter时忘记设置UI处理程序(这是GWTP中的正常过程)-类似于:

public class ContactsPresenter extends Presenter<ContactsPresenter.MyView, ContactsPresenter.MyProxy> 
                               implements ContactsViewUiHandlers 
{
    public interface MyView extends View, HasUiHandlers { /* nothing */ }

    private PlaceManager placeManager;

    @Inject
    ContactsPresenter( final EventBus eventBus , final MyView view , 
                       final MyProxy proxy , final PlaceManager placeManager )
    {
        super( eventBus , view , proxy );
        this.placeManager = placeManager;
        getView().setUiHandlers( this );
    }
    ...

    @Override
    public void onAddButtonClicked()
    {
        placeManager.revealPlace( new PlaceRequest( "somewhereovertheocean" ) );
    }
    ...
}
公共类联系人Presenter扩展演示者
实现ContactsViewuiHandler
{
公共接口MyView扩展视图,HasUiHandlers{/*nothing*/}
私募基金经理;
@注入
ContactsPresenter(最终事件总线、最终MyView视图、,
最终MyProxy代理、最终PlaceManager(最终PlaceManager)
{
超级(事件总线、视图、代理);
this.placeManager=placeManager;
getView().setUiHandlers(此);
}
...
@凌驾
onAddButtonClicked()上的公共无效
{
placeManager.revealPlace(新的PlaceRequest(“海上某处”);
}
...
}
(操作部分是
getView().setUiHandlers(this);
实现ContactsViewUiHandlers

顺便说一句,在调用任何方法之前,最好先检查
getUiHandlers()
是否为null

希望有帮助


干杯,

显然
getUiHandlers()
null
。。。但你知道:——)

我认为造成这种情况的原因可能是您在注入关联的presenter时忘记设置UI处理程序(这是GWTP中的正常过程)-类似于:

public class ContactsPresenter extends Presenter<ContactsPresenter.MyView, ContactsPresenter.MyProxy> 
                               implements ContactsViewUiHandlers 
{
    public interface MyView extends View, HasUiHandlers { /* nothing */ }

    private PlaceManager placeManager;

    @Inject
    ContactsPresenter( final EventBus eventBus , final MyView view , 
                       final MyProxy proxy , final PlaceManager placeManager )
    {
        super( eventBus , view , proxy );
        this.placeManager = placeManager;
        getView().setUiHandlers( this );
    }
    ...

    @Override
    public void onAddButtonClicked()
    {
        placeManager.revealPlace( new PlaceRequest( "somewhereovertheocean" ) );
    }
    ...
}
公共类联系人Presenter扩展演示者
实现ContactsViewuiHandler
{
公共接口MyView扩展视图,HasUiHandlers{/*nothing*/}
私募基金经理;
@注入
ContactsPresenter(最终事件总线、最终MyView视图、,
最终MyProxy代理、最终PlaceManager(最终PlaceManager)
{
超级(事件总线、视图、代理);
this.placeManager=placeManager;
getView().setUiHandlers(此);
}
...
@凌驾
onAddButtonClicked()上的公共无效
{
placeManager.revealPlace(新的PlaceRequest(“海上某处”);
}
...
}
(操作部分是
getView().setUiHandlers(this);
实现ContactsViewUiHandlers

顺便说一句,在调用任何方法之前,最好先检查
getUiHandlers()
是否为null

希望有帮助


干杯,

查看您提供的例外情况,我认为您错过了以下要点之一:

  • ContactsPresenter
    应实现
    contactsViewHandler
    如下:
    ContactsPresenter实现contactsViewHandler
  • ContactsPresenter
    的引用设置为
    contactsView.UIHandlers
    如下:
    getView().setUiHandlers(this)

  • 在做了这两件事之后,你不应该得到提到的异常。我希望这对您有所帮助。

    查看您提供的例外情况,我认为您遗漏了以下几点之一:

  • ContactsPresenter
    应实现
    contactsViewHandler
    如下:
    ContactsPresenter实现contactsViewHandler
  • ContactsPresenter
    的引用设置为
    contactsView.UIHandlers
    如下:
    getView().setUiHandlers(this)

  • 在做了这两件事之后,你不应该得到提到的异常。我希望这对您有所帮助。

    Contacts View中的第51行是什么?显示演示者的代码。@RAS第51行是getUiHandlers().onAddButtonClicked();在presenter中,我在addButtonClicked()上有公共的void({fireEvent(new AddContactEvent());}ContactsView中第51行是什么?显示演示者的代码。@RAS第51行是getUiHandlers().onAddButtonClicked();在presenter中,我在AddButtonClicked(){fireEvent(new AddContactEvent());}上有公共无效。谢谢这是一个错误,请告诉我如何移动到一个新位置EditContactsView当我单击add按钮时会显示,请您提供任何有助于高效使用gwt平台框架的链接。我建议您也在
    演示者中
    @Inject
    插入
    您的
    PlaceMaanager
    ,并将其用于导航-我已编辑了我的答案以概述该内容。在显示EditContactsView时出错,我试着简单地使用一个html面板,然后我的视图就打开了,但是当我添加了以下代码时,它给出的原因是:java.lang.UnsupportedOperationException:这个面板不支持com.google.gwt.user.client.ui.panel.add(panel.java:66)上的no arg add()我使用的是装饰面板,我在其中添加了一个垂直面板和一个水平面板。谢谢这是一个错误,请告诉我如何移动到一个新的位置EditContactsView当我单击add按钮时会显示,请您提供任何有助于高效使用gwt平台框架的链接。我建议您也在
    演示者中
    @Inject
    插入您的
    PlaceMaanager
    ,并将其用于导航-我有