标签: gwt-activities

围绕整个GWT MVP与活动和场所的混乱

阅读一段时间并观看Google IO视频后,我仍然对MVP与Activity和Places的关系感到困惑.

我找到了一段时间发布的帖子 - > GWT 2.2 MVP vs. GWT 2.1 Activities-Places

"MVP架构.MVP是概念,其中一个方法就是场所 - 活动框架"

我还听到"演示者类似于活动"

我们可以给出"没有MVP的活动和场所"

我们可以混合"活动和地方与MVP"

"MVP只不过是我们如何组织我们的项目,以便我们可以轻松地测试和组织代码"

然后我想弄清楚这样的东西 - > http://code.google.com/p/gwt-platform/

我真的很困惑.我想要一站式线程来结束所有的混乱.

mvp gwt gwt-activities gwt-places

21
推荐指数
3
解决办法
7273
查看次数

如何:UiBinder + GWT MVP +多个独立显示区域

我正在使用GWT MVP和UiBinder来创建一个带有DockLayoutPanel的应用程序.我希望南北码头是静态的,包含按钮和链接.我希望在中心和东部码头的两个不同区域拥有动态视图.由于这些动态区域应该彼此独立,我为每个动态显示区域设置不同的ActivityMapper和ActivityManager; 中心,东顶和东底.

如何在加载应用程序时独立初始化这3个不同的显示区域?如何在一个显示区域中从一个Activity切换到另一个Activity而不影响其他区域?

当我使用PlaceController的goTo在一个区域中从一个地方切换到另一个地方时,另一个区域的活动停止.

五月天,请帮忙,五月天!

以下是我的一些代码:

AppViewImpl.ui.xml

<g:DockLayoutPanel styleName="{style.dockPanel}" unit="PX" width="975px" height="100%">

    <!-- DOCK PANEL EAST -->
    <g:east size="220">
        <g:LayoutPanel styleName="{style.eastPanel}">
            <g:layer left="0px" width="220px" top="0px" height="105px">
                <g:SimpleLayoutPanel ui:field="topRightPanel"/>
            </g:layer>

            <g:layer left="0px" width="220px" top="110px" height="340px">
                    <g:InlineLabel styleName="{style.label}" text="ANOTHER DISPLAY AREA"/>
            </g:layer>
        </g:LayoutPanel>
    </g:east>

    <!-- DOCK PANEL NORTH -->
    <g:north size="110">
        <g:LayoutPanel styleName="{style.northPanel}">
            <g:layer left="0px" width="755px" top="0px" height="105px">
                    <g:InlineLabel styleName="{style.label}" text="NORTH PANEL"/>
            </g:layer>
        </g:LayoutPanel>
    </g:north>

    <!-- DOCK PANEL SOUTH -->
    <g:south size="20">
        <g:LayoutPanel styleName="{style.southPanel}">
            <g:layer left="0px" width="755px" top="0px" height="20px">
                    <g:InlineLabel styleName="{style.label}" …
Run Code Online (Sandbox Code Playgroud)

gwt uibinder gwt-mvp gwt-activities gwt-places

8
推荐指数
1
解决办法
3925
查看次数

GWT MVP更新地方变更的活动状态

在地方变更上更新活动状态的最佳做法是什么?想象一下,您有一个带有视图的活动,该活动显示类别列表和类别中的项目列表.如果选择了不同的类别,则应用程序将转到具有类别ID的新位置.我想要只刷新项目,而不是创建也重新读取类别列表的新活动.

我目前的做法是这样的:

public class AppActivityMapper implements ActivityMapper {

    private ItemListActivity itemListActivity;

    ...

    public Activity getActivity(final Place place) {
        final Activity activity;

        if (place instanceof ItemListPlace) {
            if (itemListActivity == null) {
                itemListActivity = new ItemListActivity((ItemListPlace) place, clientFactory);
            } else {
                itemListActivity.refresh((ItemListPlace) place);
            }
            activity = itemListActivity;
        } else {
            itemListActivity = null;
        }

        ...
        return activity;
    }

    ...
Run Code Online (Sandbox Code Playgroud)

mvp gwt gwt-mvp gwt-activities gwt-places

6
推荐指数
1
解决办法
2859
查看次数

GWT - 将演示者的角色与活动分开

剥夺演示者从活动中的角色可以获得哪些优势?

为了剖析作为演示者的活动,可以分离哪些角色/关注点?

你为什么要把它们分成两个不同的问题?

在什么情况下不统一它们是否有意义?

举例,利弊.

java mvp gwt gwt-activities gwt-places

6
推荐指数
1
解决办法
768
查看次数

GWT:场所和ActivityMappers的粒度

我终于开始"获得"GWT了.在任何时候,PlaceChangeEvent都可以在应用程序上触发EventBus:

History.newItem("token-for-some-new-place");
Run Code Online (Sandbox Code Playgroud)

这增加了该事件的总线,因此注册ActivityManager舀起来,并咨询其内部ActivityMapper给它Activity与相关PlaceChangeEventPlace.

所述Activity(类似于从MVP/MVC演示者或控制器对象),则获得所需要的任何数据(通过RPC调用向服务器),并且执行任何业务逻辑和配置的最终视图(通常是Composite某种形式的)来显示.

只要我们谈论的是一个超级简单的GWT应用程序,它的主页上只有一个显示区域,那么就像我说的那样,我"得到"它.

我现在窒息的地方是当你有一个包含多个显示区域的应用程序(可以彼此异步更新的区域)时会发生什么.

所以我问:

  1. ActivityMapper应该是多么精细?是否有一个应用程序范围AppActivityMapper将所有Places 映射到所有的Activity,或者是否应该有某种ActivityMapper层次结构/分解,你有多个映射器?(如果您对此的回答类似于" 这取决于您的应用程序的需求 ",那么请解释哪些要求/需求驱动适当的粒度级别!)
  2. 如果a Place表示应用中的URL令牌(为了使其成为Place可收藏状态),那么当您拥有一个具有多个显示区域(D1,D2,D3)的更复杂应用时会发生什么.一个URL令牌(即http://myapp.com/#token-for-some-new-place)如何映射到D1,D2和D3?这不意味着ActivityMapper#getActivity必须能够返回一个活动列表(List<Activity>),其start(AcceptsOneWidget, EventBus)方法将被调用吗?

感谢您的帮助 - 代码示例总是摇滚.

java mvp gwt gwt-activities gwt-places

5
推荐指数
1
解决办法
455
查看次数

解读GWT场所/活动和MVP?

我知道地方和活动与MVP是分开的.P&A用于管理浏览器历史记录,MVP是一种架构模式.但是,显然,它们在区域中交错和重叠,而这个问题是关于它们如何能够团结一致地协同工作.

我刚刚读了GWT Places&Activites,并推荐了MVP结构,我的头脑正在旋转.我需要有人确认我有基本的想法.

A PlaceHistoryHandler既有a PlaceController又有PlaceHistoryMapper.当您在浏览器地址栏中输入特定URL时,PlaceHistoryHandler使用它PlaceHistoryMapper来确定Place应将其传递给它PlaceController.的PlaceController,反过来,触发一个适当的PlaceChangeEventEventBus.

一个或多个ActivityManagers正在总线上监听这些PlaceChangeEvents,并将这些Places 映射到a Activity,这应该是MVP架构中的Presenter组件.

返回的具体Activity(演示者)应该具有实现的模型注入视图(通常是UiBinder)AcceptsOneWidget.AcceptsOneWidget然后启动(via Activity#start(...))此组件,GWT - 自动 - 将其内容呈现给浏览器.

我所说的任何不正确,误导或误解的东西?如果是这样,请纠正我.基于这种理解,很多代码即将编写......

java mvp gwt gwt-activities gwt-places

5
推荐指数
1
解决办法
2423
查看次数

在GWT活动中使用GIN

我的每个活动都需要一个对应的单例View实现.将它们注入活动的最佳策略是什么?

  1. 构造函数注入 Activity构造函数是从ActivityMapper的getActivity()调用的.ctor已经有一个参数(一个Place对象).我必须创建ActivityMapper,注入所有可能的视图.不好...

  2. 方法注入 - "在执行构造函数后自动执行注释的函数." (GWT in Action,2nd Ed.)好吧,"在执行ctor之后"显然不够快,因为当start()调用Activity的方法时,视图(或以这种方式注入的RPC服务)仍​​未初始化,我得到了一个NPE.

  3. 在Activity的ctor中用GWT.create构造注入器.没用,因为他们不再是单身人士.

gwt gwt-gin dependency-injection gwt-activities

5
推荐指数
1
解决办法
3229
查看次数

多个GWT ActivityManagers和ActivityMappers的用途是什么?

终于发生,我认为你应该编写了一个ActivityMapper解析/检查Place,其子类getActivity(Place)方法传递,并返回相应的Activity呈现给用户.

所以这让我思考:Place在你的应用程序中需要许多不同的子类是有道理的,每个子类代表一个不同的可收藏的URL /状态.

但为什么一个应用程序需要超过1 ActivityManagerActivity Mapper?似乎没有GWT强加的限制哪个Place被映射到哪个Activity......

我听说过每个显示区域都有自己的策略ActivityManager.看起来像我这样只是让你的项目更复杂而没有提供任何真正的好处.提前致谢!

java gwt gwt-activities gwt-places

4
推荐指数
1
解决办法
1086
查看次数

GWT场所/活动 - 应该用于导航?

我有一个GWT位置/活动Web应用程序.我使用Anchorclick事件将用户移动到一个新的"地方",因此用户无法在新窗口或标签中打开任何"链接".问题是 - 如何让所有这些链接变为现实?

java anchor gwt gwt-activities gwt-places

2
推荐指数
1
解决办法
1032
查看次数

GWTP与GWT MVP和活动/场所的关系

GWT的理解是它首先发布了活动和场所的概念,以支持UI作为状态机的想法,其中每个状态是UI的可书籍配置.

我的理解是GWT后来发布了他们的建议,用MVP架构模式构建GWT应用程序,以便更好地分离关注点和更容易的单元测试.

但是,当你有下载示例应用程序,真正看看源代码,虽然这两个观念培育有client,servershared封装结构,其内部运行基于不同的理念和不同的核心类型.基本上,似乎你必须在一个或另一个之间做出选择(这是真的吗?).

现在我看到GWTP(GWT平台).这看起来像是活动/地方范例以及MVP设计的完美结合.所以我问:如果我选择使用GWTP,那么在活动/地方或MVP领域有什么我会错过的吗?换句话说,通过使用GWTP,我限制自己并被禁止使用这两个项目中的任何最佳实践或组件?提前致谢!

java mvp gwt gwt-activities gwtp

1
推荐指数
1
解决办法
1307
查看次数

GWT活动/场所应该是单身人士还是原型?

这之间有什么区别(性能和其他):

public class MyPlaceMapper implements PlaceHistoryMapper {
    @Override
    public String getToken(Place place) {
        if(place instanceof HomePlace)
            return "home";
        else
            return null;
    }

    @Override
    public Place getPlace(String token) {
        if(token.equals("home"))
            return new HomePlace();
        else
            return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

和:

public class MyPlaceMapper implements PlaceHistoryMapper {
    // Singleton HomePlace to inject and reuse over and over again
    private HomePlace homePlace;

    // Getter/setter for homePlace...

    @Override
    public String getToken(Place place) {
        if(place instanceof HomePlace)
            return "home";
        else
            return null;
    }

    @Override
    public Place …
Run Code Online (Sandbox Code Playgroud)

java gwt singleton gwt-activities gwt-places

1
推荐指数
1
解决办法
874
查看次数