我有一个过滤器,如果发送到的资源用IdValidation注释,它应该验证传入请求的ID。
我尝试在web xml中添加此过滤器,如中所述
this
辅导的但是,在使用IdValidation注释测试方法时,不会调用过滤器。
@Provider
@IdValidation
public class IdValidationFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
this.requestContext = requestContext;
MultivaluedMap<String, String> map = requestContext.getUriInfo().getPathParameters();
if (map.containsKey("someId")) {
// Do some validation and abort if nessecary
}
}
}
我用来添加此筛选器的界面。
@NameBinding
@Retention(RetentionPolicy.RUNTIME)
public @interface IdValidation {}
web xml。我起初尝试不使用提供者类名,因为我认为这是不必要的,因为过滤器在同一个包中,但这也不起作用。
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>my.package</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>my.package.IdValidationFilter</param-value>
</init-param>
</servlet>