JAX-RS中URI特定的ExceptionMapper

wcm*_*sen 5 jax-rs jersey guice

我正在使用Jersey和Guice作为我的IOC容器。我想知道是否可以将ExceptionMapper与特定的URI关联。原因是我想根据访问的URI不同地映射相同的异常。例如,假设我为自定义异常提供了以下两个异常映射器:

public class MyExceptionMapperForFirstURI implements
  ExceptionMapper<MyException> {..return response based on first URI..}

public class MyExceptionMapperForSecondURI implements
  ExceptionMapper<MyException> {..return response based on second URI..}
Run Code Online (Sandbox Code Playgroud)

据我了解,您在ServletModule中绑定了ExceptionMapper,如下所示:

public class MyModule extends ServletModule {

    @Override
    public void configureServlets() {
        super.configureServlets();
        bind(MyCustomExceptionMapper.class);
    }
}
Run Code Online (Sandbox Code Playgroud)

我将如何进行绑定MyExceptionMapperForFirstURIMyExceptionMapperForSecondURI以使它们与正确的URI相关联。这可能吗?如果可能的话:这是正确的方法吗?

sha*_*chi 4

这是很晚的答案;-)但是你总是可以注入 UriInfo 和分支。所以,

@Context
UriInfo uriInfo;
Run Code Online (Sandbox Code Playgroud)

……

if (matchesA(uriInfo.getAbsolutePath())) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)