2

如果没有找到匹配的 JAX-RS 资源,我正在寻找呈现自定义错误页面的方法。我的想法是使用ExceptionMapper,但我不知道要使用的异常类:

@Provider
public class NotFoundMapper implements ExceptionMapper<WHATEXCEPTION?> {
  ...
}

RestEasy 有一个专有的NotFoundException,但是有没有一种方法也可以与 Jersey 一起使用?理想情况下符合标准的方式?

4

1 回答 1

3

你的意思是如果你的休息服务在 localhost/rest 下监听,那么 localhost/rest/asdf 应该返回一个自定义的 404 页面?它特定于 JAX-RS 引擎,您必须查看 Jersey 的源代码。例如,CXF 抛出一个 WebApplicationException,但它没有提供任何自定义方法。请参阅 JAXRSInInterceptor.processRequest() 第 156 行以了解它是如何完成的:

    org.apache.cxf.common.i18n.Message errorMsg = 
        new org.apache.cxf.common.i18n.Message("NO_ROOT_EXC", 
                                           BUNDLE,
                                           message.get(Message.REQUEST_URI),
                                           rawPath);
    LOG.warning(errorMsg.toString());
    Response resp = JAXRSUtils.createResponse(resource, message, errorMsg.toString(), 
            Response.Status.NOT_FOUND.getStatusCode(), false);
    throw new WebApplicationException(resp);

总而言之,没有很好的标准方法,您可以尝试使用请求过滤器或 ExceptionMapper

于 2012-11-06T11:20:46.343 回答