我有一个视图impl说SampleView.java.I在我的视图中有一个表。当单击一行时,一个新的地方被传递给地方控制器,如,
placeController.goto(new ScreenPlace()) ;
现在的问题是,我需要将一些数据从SampleView传递给ScreenPlace,这样我就可以在ScreenView.Data中使用该数据基本上是一个键值对的MAP,我需要通过ScreenPlace从SampleView传递给ScreenView换句话说,我怎样才能将数据从一个视图转移到另一个视图。我该怎么做?。我是GWT的新手。请帮助!。
答案 0 :(得分:0)
基本上有两种方法可以解决这个问题:
通过 EventBus
传递数据:您可以创建一个事件(即LoadSampleDataEvent
),您可以将数据传递到全局{ {1}}。因为您将在EventBus
中引用全局EventBus
,所以您可以在那里处理事件并将其显示在相应的视图中。
对您网址中的数据进行编码:您可能会ScreenPlace
与URL
相关联(即ScreenPlace
)。您可以在该网址http://myHost/#screen
或http://myHost/#screen?id=1
)中对数据的某些唯一标识符进行编码。然后在http://myHost/#screen/1
中,您可以解析URL中的ScreenPlace
参数并检索数据。您可能需要将包含数据的地图传递给id
。这可以通过ScreenPlace
上的Event
或全局EventBus
实例来完成。
我会推荐第二个appraoch,因为它使你的Singleton
“无国籍”并且引人注目。用户只需打开网址(即ScreenPlace
),您的http://myHost/#screen?id=10
就会显示详细视图。
要使其正常工作,您必须在尚未加载地图时处理该情况(例如,如果用户直接导航到相应的URL而不是先通过您的表)。
答案 1 :(得分:0)
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);
}
}