Java GWT活动和场所-如何理解这一概念?
好的,活动建立在地方之上。地点“只是URL”。但我只是不明白如何正确使用它们 没有嵌套的活动“”;但在这个简单的场景中,它是什么样子的:Java GWT活动和场所-如何理解这一概念?,java,gwt,Java,Gwt,好的,活动建立在地方之上。地点“只是URL”。但我只是不明白如何正确使用它们 没有嵌套的活动“”;但在这个简单的场景中,它是什么样子的: 有一个登录页面 具有为用户提供功能的管理页面 将事件添加到我的公司 将项目添加到我的商店 成功登录后,网站的“主容器”将被清除并填充管理活动的新内容。这里必须更改的一件事是活动标签的“显示”,因为现在我在左侧有一个导航栏,在右侧有一个主内容Div 我只需要一个登录活动和一个管理员活动。这意味着我会有类似的URL /#LoginPlace:noParams
- 将事件添加到我的公司
- 将项目添加到我的商店
活动标签的“显示”,因为现在我在左侧有一个导航栏,在右侧有一个主内容Div
我只需要一个登录活动
和一个管理员活动
。这意味着我会有类似的URL
/#LoginPlace:noParams
/#AdminPlace:eventManager
/#AdminPlace:itemManager
但这是愚蠢的,因为我真的想要这样的东西:
/#LoginPlace:noParams
/#AdminPlace:eventManager|storeId=1,langaugeId=2
/#AdminPlace:itemManager|storeId=1,langaugeId=2,page=0
private AdministrationActivity administrationActivity;
@Override
public Activity getActivity(Place place) {
if (place instanceof LoginPlace) {
return new LoginActivity((LoginPlace) place);
} else if (place instanceof AdministrationPlace) {
if(this.adminActivity== null) {
this.adminActivity= new AdministrationActivity((AdministrationPlace) place);
} else {
this.adminActivity.updateMainContent(((AdministrationPlace) place).getUrl());
}
return this.adminActivity;
}
return null;
}
但这需要我的AdminActivity
来分解URL并查找所有这些不同类型的URL,对吗?我的意思是这样的:
/#LoginPlace:noParams
/#AdminPlace:eventManager|storeId=1,langaugeId=2
/#AdminPlace:itemManager|storeId=1,langaugeId=2,page=0
private AdministrationActivity administrationActivity;
@Override
public Activity getActivity(Place place) {
if (place instanceof LoginPlace) {
return new LoginActivity((LoginPlace) place);
} else if (place instanceof AdministrationPlace) {
if(this.adminActivity== null) {
this.adminActivity= new AdministrationActivity((AdministrationPlace) place);
} else {
this.adminActivity.updateMainContent(((AdministrationPlace) place).getUrl());
}
return this.adminActivity;
}
return null;
}
现在,adminActivity.updateMainContent()
必须对所有位置进行解析,才能显示正确的内容
这就是解决方案:
/#LoginPlace:noParams
/#EventManagerPlace:storeId=1,langaugeId=2
/#ItemManagerPlace:storeId=1,langaugeId=2,page=0
但是,(!)现在我每个地方都需要一个活动,对吗?我只是不确定是否有同样多的地方和活动。我认为一项活动可以导航到不同的地方
那么,应该如何使用场所和活动呢?我建议您可能希望每个场所都有一项活动。一般来说,一对一的关系很粗糙,但由于关注点的分离,它们被分开了,因此你可以在没有活动的情况下四处走动
遗憾的是,标准GWT不支持添加参数。我们基于UrlBuilder创建了自己的简单应用程序
这是一个长期存在的问题(旧问题追踪者),它有其他想法和链接
一旦它启动并运行,它的工作非常好。我喜欢使用强类型对象和goTo,而不是将URL粘在一起。我建议您可能希望每个位置都有一个活动。一般来说,一对一的关系很粗糙,但由于关注点的分离,它们被分开了,因此你可以在没有活动的情况下四处走动
遗憾的是,标准GWT不支持添加参数。我们基于UrlBuilder创建了自己的简单应用程序
这是一个长期存在的问题(旧问题追踪者),它有其他想法和链接
一旦它启动并运行,它的工作非常好。我喜欢使用强类型对象和goTo,而不是将URL粘在一起。首先要问自己的问题是“用户可能会去哪里?”。据我所知,您至少有:
- 事件列表,包括可能的筛选/选择标准和分页属性
- 项目列表,包括可能的筛选/选择标准和分页属性
也许你也会有类似“事件细节”的地方(如果用户将在两种状态之间切换,甚至可能在只读细节和可编辑细节之间分割;如果状态取决于用户是谁,那么这是同一个地方,用户可以执行的操作也不同)、“项目细节”、“添加事件的表单”,“添加项目的表单”
对我来说,登录是一个跨领域的功能,它不是用户在你的应用程序中要做的事情(它不是一个商业用例,也不是用户工作的一部分的“活动”)。但是你仍然可以选择使用一个地点和活动进行登录;因此,让我们将其添加到列表中:“登录表单”(当然不是我要做的,但这是另一个故事)
现在,您可以选择如何将这些位置表示为GWTPlace
对象:您可以有一个Place
子类,该子类的属性告诉您所处的确切“位置”(基本上是您的AdminPlace:eventManager
令牌所建议的),或者每个“位置”有一个Place
子类(您的EventManagerPlace
令牌所建议的)。这完全独立于您是否将有一个或多个活动
下一个问题是关于屏幕的各个区域,这些区域将映射到ActivityManager
s:导航时屏幕的哪些部分会发生更改?可能它们不会在同一时间/相同条件下全部更改。
例如,你的导航栏是否应该在活动中?如果你可以把它放在外面(因为它被重用),那么就去做。如果它总是一样的话,它实际上甚至不需要是一个活动(对所选项目进行模化)。在任何情况下,将其设置为单例(或类似)可能是一个好主意并收听PlaceChangeEvent
s选择适当的项目(不一定是“单一项”,但至少不会在每个导航中重新创建)。将导航栏放在活动之外的好处是,如果您最终决定将其垂直放置而不是水平放置(或者相反),和/或可折叠,您不必更改您的活动(关注点分离)。如果您必须构建移动应用程序,您甚至可以在该应用程序上有一个“菜单”位置,显示导航栏全页,并在导航时将其替换为其他活动
因此,我们现在有两个显示区域,即2个ActivityManager
s,以及它们各自的ActivityMapper
s。或者可能只有一个显示区域用于“主要内容”,导航栏不是一个活动。下一步是准确地确定更改的内容和时间;即,当我去放置X时,我需要在该区域中放置该东西,在该区域中放置另一东西;这些“东西”是您的活动
对你的活动进行“建模”的关键是思考用户所做的事情(活动),并将注意力集中在其中一项上。但活动也与用户的行为方式有关