繁体   English   中英

GWT:在视图展示位置之间传递数据

[英]GWT : Pass data between view impl to place

我有一个视图,表示说SampleView.java。我的视图中有一个表。单击一行时,一个新的地方将传递给位置控制器,例如

placeController.goto(new ScreenPlace()) ;

现在的问题是,我需要将一些数据从SampleView传递到ScreenPlace,以便我可以在ScreenView中使用该数据.Data本质上是键值对的MAP,我需要通过ScreenPlace从SampleView传递给ScreenView。换句话说,如何将数据从一个视图传输到另一视图。我该怎么做?我是GWT的新手。请帮忙!

基本上有两种方法可以解决此问题:

  1. 通过 EventBus 传递数据 :您可以创建一个事件(即LoadSampleDataEvent ),将数据传递给该事件并在全局EventBusEventBus 因为你将不得不在全球参考EventBusScreenPlace ,你将能够在那里处理该事件,并在相应的视图显示它。

  2. 将数据编码到您的URL中 :您可能会有一个与ScreenPlace关联的URL (即http://myHost/#screen )。 您可以在该网址http://myHost/#screen?id=1http://myHost/#screen/1中对数据的一些唯一标识符进行编码。 然后,在ScreenPlace您可以从URL解析id参数并检索数据。 您可能需要将包含数据的地图传递到ScreenPlace 这可以通过EventBus上的Event或全局Singleton实例来完成。

我会建议第二appraoch,因为它使你的ScreenPlace “无状态”和boomarkable。 用户只需打开URL(即http://myHost/#screen?id=10 ),您的ScreenPlace将显示详细视图。

为此,您必须处理尚未加载地图的情况(例如,如果用户直接导航到相应的URL而不是先不通过您的表)。

Handler Interface:


import com.google.gwt.event.shared.EventHandler;

public interface MessageTransferHandler extends EventHandler
 {
    public void onMessageTransfer(MessageTransferEvent event);
}

Event Class:



import com.google.gwt.event.shared.GwtEvent;

public class MessageTransferEvent extends GwtEvent<MessageTransferHandler>{

    String message;
    int flag;

    public MessageTransferEvent(String message,int flag)
    {
        this.message=message;
        this.flag=flag;
    }
    public String getMessage()
    {
        return message;
    }

    public int getFlag()
    {
        return flag;
    }
    public static Type<MessageTransferHandler> TYPE=new Type<MessageTransferHandler>();
    @Override
    public com.google.gwt.event.shared.GwtEvent.Type<MessageTransferHandler> getAssociatedType() {
        return TYPE;
    }

    @Override
    protected void dispatch(MessageTransferHandler handler) {
        handler.onMessageTransfer(this);
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM