Java 未调用RCP E4@UIEventTopic

Java 未调用RCP E4@UIEventTopic,java,eclipse,events,rcp,e4,Java,Eclipse,Events,Rcp,E4,我是RCP Eclipse4的新手,到目前为止阅读了很多教程。我们要为大学做一个项目,所以我需要和它联系 我们正在用JPA/EclipseLink和HSQLDB编写一个非常小的应用程序,它已经可以正常工作了。同时,在RCP中调用和显示部件已经开始工作。我们确实得到了一些我们应该使用的代码库。我做了一些研究,现在我们能够通过命令/处理程序和零件描述符显示零件 现在是将一些信息从A部分带到B部分的时候了。我们已经找到了通过将数据插入上下文的版本 context.getParent().set( "

我是RCP Eclipse4的新手,到目前为止阅读了很多教程。我们要为大学做一个项目,所以我需要和它联系

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

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

context.getParent().set( " NAME " , object) 
但是我真的不喜欢这个版本,因为当我使用@Named约定时,每次更改contexts属性时,带有@Named(“NAME”)的所有部分都会被调用

我发现的另一个我非常喜欢的方法是,处理事件。描述得很好。但问题是,它只是不起作用

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);
} 
@Inject @Optional
void getEvent(@UIEventTopic("a") String k) {
    System.out.println(k);
}
ClientDetailPart.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);
} 
@Inject @Optional
void getEvent(@UIEventTopic("a") String k) {
    System.out.println(k);
}
我正在尝试将字符串从ClientSearchPart发送到ClientDetailPart。执行widgetSelected时,将调用ClientSearchPart.java中的getEvent(),并打印出“ClientsSearch:testest”,而从不调用ClientDetailPart


我再也忍不住了。我的错在哪里?我现在已经尝试了3个多小时,但没有真正弄明白它为什么不起作用。

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


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

否,这是错误的信息-注入框架也能够调用私有和受保护的方法。实际上,最好的做法是让不应该从外部调用的注入方法受保护或私有。