如果找不到匹配的JAX-RS资源,我正在寻找提供自定义错误页面的方法。我的想法是使用ExceptionMapper
,但我不知道要使用的异常类:
@Provider
public class NotFoundMapper implements ExceptionMapper<WHATEXCEPTION?> {
...
}
RestEasy有一个专有的NotFoundException
,但有没有一种方法适用于泽西岛?理想情况下是标准的合规方式吗?
答案 0 :(得分:2)
你的意思是你的休息服务是在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