2016-07-11 44 views
0

我有一个小问题与XWT,简单地说,我有大约具有以下结构的foo.xwt文件:XWT:findElementByName返回null用于复合资源

<Composite 
    <Composite.Resources> 
     <r:MyDataProvider key ="myInstance" name="myInstance" ObjectId="myInstanceObjectId"/> 
    </Composite.Resources> 

    <Composite> 
     <w:SmartSpinner name="mySmartSpinner" .... /> 
    </Composite> 
</Composite> 

在foo中。 java类,我有以下方法:

@PostConstruct 
protected void init() { 
    SmartSpinner mySpinner = (SmartSpinner) XWT.findElementByName(parent,"mySmartSpinner"); 
    MyDataProvider myDataProvider = (MyDataProvider) XWT.findElementByName(parent,"myInstance") 
} 

找到了SmartSpinner,没问题。 但是,MyClass实例返回null。

我找不到关于XWT的严重文档,而且我基本上对它的工作方式,它给出的接口等方面一无所知......我确实印象深刻的是,之前的人实际上设法创建了一个工作接口。所以,如果你有任何想法,它将非常感激

+0

可能会尝试修复XWT.findElementByName(parent,'myInstance')中的单引号 – avojak

+0

另外:“我找不到有关XWT的严重文档”您是否尝试过官方[XWT文档](https:// wiki.eclipse.org/XWT_Documentation)?我看到一个“Hello World”的例子,并且看起来很好的介绍了XWT。 – avojak

+0

我修复了''问题,谢谢,但是这不在我的代码中。 是的,我了解“hello world”文档,但是我们的产品远远超出了本文档中的内容。 此外,我找到了一个方法“XWT.findDataProvider”。由于MyDataProvider实现了IObjectDataProvider接口,我试图用它来获取DataProvider。到目前为止,我设法获得的唯一东西类似于对我所有类成员的完全访问 - 即使是私有继承 - ,但仍然没有数据提供者。 – Zangdar

回答

0

资源不是一个元素,所以,请尝试XWT.findResource(parent, "myInstance")来代替。

+0

谢谢,这种方法实际上给了我一个我的IDataProviders列表 但是,我选择了另一种基于静态字符串的解决方案,该字符串已经从一个动态字典中更新,该字典已经实现并用于java应用程序。 我唯一的问题是变量必须是公开的,但我发现这比XWT中的硬编码字符串更好。即使这个字符串被重写,它可能会鼓励人们再次开始复制XWT,而我不希望这样。 完美的解决方案是使用私人成员和吸气剂,但我不知道这是否可能。 – Zangdar