GWT:处理视图中的空请求工厂代理引用

时间:2011-04-27 15:12:42

标签: java gwt view mvp

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

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

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

避免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());
   }
   // (....)
}

当然,我想避免这种类型的编码,但我不知道如何以其他方式做到这一点。

提前感谢任何提示。

1 个答案:

答案 0 :(得分:1)

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