2012-07-25 25 views
7

Nếu chúng tôi có mã trong trường có phương thức mà một sản phẩm khác gọi và nhận được danh sách các đối tượng quay lại. Và chúng ta cần thay đổi mã để làm cho nó trở nên linh hoạt hơn trong việc đưa danh sách trở lại, chúng ta có thể tạm thời tạo một trình chặn cho khách hàng, chặn phương thức này trước khi nó trả về danh sách và xóa các mục khỏi danh sách trước sản phẩm gọi phương thức nhận danh sách.Máy đánh chặn ejb có thể thay đổi giá trị trả về của phương thức trước khi lớp gọi được nhận không?

ví dụ:

OurCode.search() trả về một danh sách các foundObjects

sản phẩm khác gọi OurCode.search, nhận 100 mặt hàng

Chúng ta có thể tạo ra một đánh chặn mà chặn trước khi trở về OurCode.search, và thay đổi Danh mục foundObjects, xóa các mục không cần thiết? Đây sẽ chỉ là một sửa chữa tạm thời cho đến khi bản phát hành trong tương lai

Trả lời

10

Mặc dù tôi không khuyên bạn nên thực hiện theo cách đó (vì mục đích dễ hiểu, và như trong "trải nghiệm tạm thời" của tôi sẽ trở thành vĩnh viễn) điều này với Interceptor.

@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; 
} 
Các vấn đề liên quan