【问题标题】:RCP E4 @UIEventTopic not called未调用 RCP E4 @UIEventTopic
【发布时间】:2013-05-20 13:52:13
【问题描述】:

我是 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 个小时,并没有真正明白为什么它不起作用。

【问题讨论】:

    标签: java eclipse events rcp e4


    【解决方案1】:

    我无法准确判断出什么问题,但我的第一个猜测是,ClientDetailPart 中的方法应该是公开的。注入框架只能调用公共方法。

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

    【讨论】:

    • 不,这是错误的信息 - 注入框架也能够调用私有和受保护的方法。实际上,最好的做法是创建不应从外部受保护或私有调用的注入方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    相关资源
    最近更新 更多