1

我是 RCP Eclipse 4 的新手,到目前为止阅读了很多教程。我们必须为大学做一个项目工作,所以我需要与它取得联系。

我们正在使用 JPA/EclipseLink 和 HSQLDB 编写一个非常小的应用程序,它已经运行良好。在 RCP 中调用和显示部件也已经正常工作。我们确实得到了一些我们应该使用的代码库。我做了一些研究,现在我们可以通过命令/处理程序和部件描述符来显示我们的部件。

现在是时候将一些信息从 A 部分带到 B 部分了。我们已经找到了将数据插入到上下文中的版本

context.getParent().set( " NAME " , object) 

但我不太喜欢这个版本,因为当我使用@Named 约定时,每次更改上下文属性时都会调用带有@Named("NAME") 的所有部分。

我发现并且非常喜欢的另一种方法是使用事件。http://www.vogella.com/articles/Eclipse4EventSystem/article.html#eventsystem 描述得非常好。但问题是,它只是不起作用。

ClientSearchPart.java:

@Override
public void widgetSelected(SelectionEvent e) {
    broker.send("a", "testtest");
}


@Inject @Optional
public void getEvent(@UIEventTopic("a")String s) {
    System.out.println("ClientsSearch: "+s);
} 

ClientDetailPart.java:

@Inject @Optional
void getEvent(@UIEventTopic("a") String k) {
    System.out.println(k);
}

我正在尝试将字符串从 ClientSearchPart 发送到 ClientDetailPart。执行 widgetSelected 时,将调用 ClientSearchPart.java 中的 getEvent() 并打印出“ClientsSearch: testest”,而从不调用 ClientDetailPart!

我不能再帮助自己了。我的错在哪里?我现在正在尝试这个超过 3 个小时,并没有真正明白为什么它不起作用。

4

1 回答 1

-1

我不能确切地说出了什么问题,但我的第一个猜测是,你的方法ClientDetailPart应该是公开的。注入框架只能调用公共方法。

ClientDetailPart在另一个包里吗?如果是这样,您是否还添加了 DI 所需的捆绑包?

于 2013-08-09T09:46:18.197 回答