【问题标题】:GWT: Dealing with null request factory proxy references in viewGWT:在视图中处理空请求工厂代理引用
【发布时间】:2011-04-27 15:12:42
【问题描述】:

我有一个显示用户帐户详细信息的视图。相应的活动通过 GWT 请求工厂询问服务器端代码(以检索用户帐户对象)。 View 接口扩展了 TakesValue 接口,所以我的 ViewImpl 实现了 setValue(UserAccountProxy) 方法。 正如预期的那样,此方法用于设置对当前将显示的对象的引用。

UserAccountProxy 有很多属性,因此它的代理引用了很多其他的代理对象。所以,例如我们可以有:UserNameProxy、UserPasswordProxy、UserRolesProxy等封装在UserAccountProxy中。 在某些情况下,几乎所有这些代理都可能为空(用户没有指定角色,用户没有头像,没有指定签名......)。 此外,相应的活动可能不会向请求工厂请求某些属性,然后这些属性也会为空。

如果这些属性(代理)中的任何一个不为空,则应使用适当的小部件将其显示在视图中。

避免 NullPointerException 的最简单、最丑陋的方法如下:

public void setValue(UserAccountProxy account) {
   //getUserName() returns proxy which may be null
   if (account.getUserName() != null) { 
     setUserNameWidget(account.getUserName());
   }
   //getUserPassword() returns proxy which may be null
   if (account.getUserPassword() != null) {
     setUserPasswordWidget(account.getUserPassword());
   }
   // (....)
}

当然,我想避免这种类型的编码,但我不知道如何以另一种方式进行。

提前感谢任何提示。

【问题讨论】:

    标签: java gwt view mvp


    【解决方案1】:

    GWT Editor framework 可以减少将数据模型和 UI 绑定在一起所需编写的胶水代码量。有一个 RequestFactoryEditorDriver 类型将 RequestFactory 特定的功能添加到编辑器框架。使用OptionalFieldEditor 适配器将允许可为空的属性控制是否创建或丢弃相应的小部件。

    【讨论】:

    • 能否请您举个例子如何使用 OptionalFieldEditor,因为我找不到任何好的样本?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多