我正在尝试修改匹配后筛选器中的查询参数。我不能在预匹配过滤器中这样做,因为过滤器逻辑依赖于资源类和方法注解。我用的是泽西2.x和Spring Boot。
我无法通过调用 setRequestUri
因为它只允许在预匹配过滤器(参考)中使用。
我不想设置属性,因为这需要更改所有现有服务以从属性中读取。如果没有其他选项可用,我可能需要使用属性方法。
通过调用 ResourceConfig#register(cls, priority)
filter类实现 ContainerRequestFilter
.
public class MyFilter implements ContainerRequestFilter {
@Override
public void filter(final ContainerRequestContext requestContext) {
// modifiedUri is the uri with modified query params
// requestContext.setRequestUri(modifiedUri) ==> Throws IllegalStateException - "Method could be called only in pre-matching request filter."
}
}
我尝试在网上搜索,找到了设置请求属性的解决方案。我找到了另一个建议创建 Package 器的解决方案( HttpServletRequestWrapper
). 但是在上面的过滤器中,我没有访问 filterChain
. 因为过滤器需要访问资源类和资源方法注解,所以我认为我需要使用jersey过滤器,而不能使用servlet过滤器(reference)。
暂无答案!
目前还没有任何答案,快来回答吧!