8

如果我们在字段中有代码,该代码具有另一个产品调用的方法,并返回一个对象列表。而且我们需要对代码进行更改以使其在填充要返回的列表时更加灵活,我们是否可以在此期间为客户创建一个拦截器,在返回列表之前拦截该方法,并在之前从列表中删除项目调用该方法的产品获取列表。

例如

OurCode.search() 返回 foundObjects 的列表

其他产品调用 OurCode.search,收到 100 件商品

我们可以创建一个在 OurCode.search 返回之前拦截的拦截器,并更改 foundObjects 的列表,删除不必要的项目吗?这只是一个临时修复,直到未来的版本

4

1 回答 1

13

虽然我不建议这样做(为了便于理解,并且根据我的经验,“临时修复”将成为永久性修复),但您可以使用拦截器来执行此操作。

@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;
}
于 2012-07-26T06:17:50.157 回答