GWT Places中的服务器端在哪里?活动?

时间:2013-08-29 21:00:31

标签: java gwt

如果我理解正确:

  • 活动是小部件上的用户操作
  • 此活动将应用程序状态移至另一个地方
  • 网页移动,感谢锚(想想现代浏览器有api)
  • 当我们共享网址时,它会定义一个地方,并且足以重建状态

(因为我也是一个javascript人,这看起来很像Backbone的路由器和其他现代JSFrameworks)

但要重建State,我们需要将一些数据提取到服务器。 P& A api中有什么可以做到的吗?使用RPC,这个角色显然由扩展RemoteServlet的GreetingServiceImpl完成。使用Backbone,我们有Sync对象。

但是当我查看A& P教程时,我从未见过这样的代码。服务器在哪里?我们需要RPC吗?它与RequestFactory混合在一起吗?

2 个答案:

答案 0 :(得分:4)

首先,关于术语的一个小注释:

地点代表您在应用中的位置。当您查看该屏幕时,它通常由不同的“块”组成,每个“块”专用于特定的活动,例如:标题(比如搜索框和注销链接),导航菜单,主 - 详细信息视图中的“主”,主 - 详细信息视图中的“详细信息”。所有这些都可以是活动(尽管不一定,从未交换到其他任何东西的东西都不会获​​得任何活动)。

因为活动按照定义显示在屏幕上,您可以与它们互动,可能会触发移动到另一个地方(PlaceController#goTo)。

该地点可选地同步与URL(双向)和生成浏览器历史记录项;默认情况下使用哈希,但您可以交换实现to use HTML5

(地方类似于Backbone的路由器,除了它们经过类型检查,活动是顶层的轻薄层,在Backbone AFAICT中没有等效物)


现在回答你的问题:

GWT是一个工具包,而不是框架。这意味着大多数构建块不会强迫您使用任何其他构建块(地点可以在没有活动的情况下工作,编辑器可以在没有小部件的情况下工作等)。

活动以异步方式启动,这是您通常从任何地方获取数据的地方。根据工具包的精神,您可以随意使用任何符合您需求的东西:GWT-RPC,RequestFactory,RequestBuilder,Errai JAX-RS,Errai Bus,XMLHttpRequest,WebSockets,AppEngine频道等。有些人还会向他们发布活动。事件总线将活动与他们获取数据的方式分开。

答案 1 :(得分:0)

MVP描述了客户端架构。

<强> M_odel : 您的应用处理业务对象。

<强> V_iew : UI元素,显示模型的表示。

<强> P_resenter : 一个处理所有用户交互和修改模型的类。


假设您有一个显示和存储Notes的应用程序。

你有一些地方:

  • 在旧时代,地方就像一个很好的旧HTML页面。在MVP中,可以将其描述为一组正在运行的Presenter。在我们简单的应用程序中有两个地方。每个Place只有一个Presenter

NotesListPlace - &gt;显示所有存储的笔记

NotesEditPlace - &gt;创建/编辑注释

NotesEditPlace:

有一个视图和一个演示者。 View有一个TextArea(用于注释)和一个保存按钮。 演示者有一个用于保存按钮的clickHandler(可能有更多,但作为示例它应该足够了)

用户从NoteList中选择一个音符

来自PlaceChange

NoteListPlace - &gt; NoteEditPlace

Presenter启动并在视图中注册click-handler。如果按下该按钮,则演示者从textarea读取输入并更新模型(新的Notes-onject)

现在是服务器互动。您可以使用所需的每个(GWT)传输层。

成功回调会将PlaceChange事件触发到NoteListPlace

全部重新开始。演示者启动,一个新的服务器交互来加载MOdel(一个Notes列表)。视图由演示者更新......

更新1 不需要服务器。演示者可以将模型持久保存到浏览器的localStorage。

更新2 您可以使用所需的每种传输机制。 RequestFactory,GWT-RPC。我使用RequestBuilder和GWT AutoBeans。