我正在使用带有自定义ContextResolver的jersey 2.19
unmarshaller是使用要验证的模式创建的。该
验证然后在POST / PUT期间发生,如果失败则a
抛出BadRequestException。客户端仅在响应中看到“BadRequest”
此BadRequestException包含一个UnmarshalException作为其原因,而该原因又包含一个包含SAXParseException的链接XMLMarshalExcpetion。
这个SAXParseException最终保存了我想要返回给客户端的验证消息
我想知道这样做的正确方法是什么,因为在Exceptions原因链中挖掘并且链接的异常对我来说似乎并不合适。
除了它是丑陋的,它是依赖于实现的,并且可能随着jersey / jaxb版本的改变而改变。所以我想要一个更清晰的解决方案。
此外,我尝试在我的ServerProperties.BV_SEND_ERROR_IN_RESPONSE
文件中将web.xml
设置为true,如下所示:
<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>package1:package2</param-value>
</init-param>
<init-param>
<param-name>jersey.config.beanValidation.enableOutputValidationErrorEntity.server</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
但仍然没有成功。