2012-07-25 50 views
7

如果我們在該領域的代碼具有另一種產品調用的方法,並獲取對象列表。我們需要對代碼進行更改,以便在填充要返回的列表時更靈活,我們可以在臨時中爲客戶創建一個攔截器,在返回列表之前截取該方法,並從列表中移除項目調用該方法的產品將獲取該列表。在調用類獲取它之前,ejb攔截器可以更改方法的返回值嗎?

例如

OurCode.search()返回foundObjects

列表

其他產品調用OurCode.search,接收100個項目

我們可以創建一個攔截器,OurCode.search返回前攔截和更改的列表foundObjects,刪除不必要的項目?這只是一個臨時修復,直到未來的版本

回答

10

雖然我不建議這樣做(爲了可理解性,和我的經驗,「臨時修復」將成爲一個永久的),你可以做這與攔截器。

@AroundInvoke 
Object filterSearchResults(InvocationContext ctx) throws Exception { 
    Object result = ctx.proceed(); 
    if (result != null) { 
     List<SearchResult> results = (List<SearchResult>)result; 
     // do whatever you want to to with your results here 
     return results; 
    } 
    return result; 
} 
相關問題