2013-05-20 96 views
1

我是新來的Eclipse RCP 4和閱讀了大量的教程至今。我們必須爲大學做一個項目工作,所以我需要聯繫它。RCP E4 @UIEventTopic不叫

我們編碼與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個小時,並沒有真正知道它爲什麼不工作。

回答

-1

我不能確切地知道什麼是錯的,但我的第一個猜測是,您的ClientDetailPart中的方法應該是公開的。注入框架只能調用公共方法。

是另一束你ClientDetailPart?如果是這樣,你是否也添加了DI所需的捆綁包?

+0

不,那是錯誤的信息 - 注射框架能夠調用私有和保護的方法爲好。事實上,最好的做法是使注射方法不應該從外部被呼叫保護或私人。 – Constantin