2012-07-25 17 views
7

Alanda başka bir ürünün aradığı bir yönteme sahip bir kod varsa ve bir nesne listesi geri alır. Ve listeye geri dönmek için daha esnek hale getirmek için kodda değişiklikler yapmamız gerekiyor, aramızda müşteri için bir ara önleyici oluşturabiliriz, listeyi döndürmeden önce yöntemi engeller ve öğeleri listeden kaldırırız. yöntemi çağıran ürün listeyi alır.Araya girenler, çağrı sınıfının ulaşmadan önce bir yöntemin dönüş değerini değiştirebilir mi?

örn.

OurCode.search() foundObjects

listesini döndürür

Diğer ürün, OurCode.search çağırır 100 ürün

biz OurCode.search dönmeden önce yakaladığını ve Listesini değiştirmek bir önleme oluşturabilir miyim alır foundObjects, gereksiz öğeleri kaldırarak? Bu yalnızca bir sonraki sürüm

cevap

10

'a kadar geçici bir düzeltme olacaktır. Bunu yapmamanızı tavsiye etmeme rağmen (anlaşılabilirlik açısından ve benim deneyimimdeki gibi "geçici düzeltme" kalıcı bir hale gelecektir) Bu Interceptors ile.

@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; 
} 
İlgili konular