2013-10-08 20 views
1

在GXT 3.0中,valueProvider,我有一个空指针异常问题。 我有这样的代码片段,值提供程序路径空问题GXT 3.0

@Path("xxx.yyy") 
ValueProvider<User, String> zzz(); 

我使用ValueProvider这样的,在这种情况下,如果XXX或YYY是空的,我简直是空指针异常。在我的实现中,yyy或xxx可能为null,但是,我希望如果它为null,只是不显示它或将其显示为空。

我在我的实现中几乎在任何地方使用这个ValueProviders,所以我需要找到一个明智的解决方案,以便不让我的代码sphagetti。

感谢您的任何帮助。

+1

我觉得你的问题是你的路径。 GXT将从您的注释中创建以下代码:getXxx()。getYyy()。如果getXxx()为null,则会发生NPE,因为GXT会尝试获取getYyy()的值。 –

+0

但是,当NPE发生建设失败。我想,如果它是空的,只要让它像空字符串。让我继续我的意思。 –

+0

你可以添加一个假的getter'getzzz()',它返回你想要的。然后,你的路径将是'@Path(“zzz”)' –

回答

2

我看到2个解决方案:

  • 您可以在对象上添加一个假的getter getZzz(),并使其返回要显示什么:
  • ,您可以给ValueProvider的实施。

例子:

ValueProvider<User, String> zzz = new ValueProvider<User, String>() { 

    @Override 
    public String getValue(User user) { 
    if(user.getXxx() == null | user.getXxx().getYyy() == null) { 
     return ""; 
    } 
    return object.getXxx().getYyy(); 
    } 

    @Override 
    public void setValue(User object, String value) {} 

    @Override 
    public String getPath() { 
    return "xxx.yyy"; 
    } 
} 
+1

当然,我可以考虑这个解决方案,但我需要更聪明的解决方案,正如我所说的那样,如果我使用这个实现,我的代码将变成sphagetti。我有近90个这样的路径实现。 我的主管编辑了Sencha的图书馆,我们摆脱了这个问题。感谢所有。 –