[英]GWT : Pass data between view impl to place
我有一个视图,表示说SampleView.java。我的视图中有一个表。单击一行时,一个新的地方将传递给位置控制器,例如
placeController.goto(new ScreenPlace()) ;
现在的问题是,我需要将一些数据从SampleView传递到ScreenPlace,以便我可以在ScreenView中使用该数据.Data本质上是键值对的MAP,我需要通过ScreenPlace从SampleView传递给ScreenView。换句话说,如何将数据从一个视图传输到另一视图。我该怎么做?我是GWT的新手。请帮忙!
基本上有两种方法可以解决此问题:
通过 EventBus
传递数据 :您可以创建一个事件(即LoadSampleDataEvent
),将数据传递给该事件并在全局EventBus
上EventBus
。 因为你将不得不在全球参考EventBus
在ScreenPlace
,你将能够在那里处理该事件,并在相应的视图显示它。
将数据编码到您的URL中 :您可能会有一个与ScreenPlace
关联的URL
(即http://myHost/#screen
)。 您可以在该网址http://myHost/#screen?id=1
或http://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.