Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用jersey在restful响应中返回XML验证失败信息的正确方法_Java_Xml_Validation_Jaxb_Jersey - Fatal编程技术网

Java 使用jersey在restful响应中返回XML验证失败信息的正确方法

Java 使用jersey在restful响应中返回XML验证失败信息的正确方法,java,xml,validation,jaxb,jersey,Java,Xml,Validation,Jaxb,Jersey,我将jersey 2.19与自定义ContextResolver一起使用,因此 解组器是使用要验证的模式创建的。这个 然后在POST/PUT期间进行验证,如果失败,则 引发BadRequestException。客户端仅在响应中看到“BadRequest”。 此BadRequestException包含一个UnmarshaleException作为其原因,该原因又包含一个包含SAXParseException的链接XmlMarshaleException。 此SAXParseException最

我将jersey 2.19与自定义ContextResolver一起使用,因此 解组器是使用要验证的模式创建的。这个 然后在POST/PUT期间进行验证,如果失败,则 引发BadRequestException。客户端仅在响应中看到“BadRequest”。
此BadRequestException包含一个UnmarshaleException作为其原因,该原因又包含一个包含SAXParseException的链接XmlMarshaleException。 此SAXParseException最终保存我要返回给客户端的验证消息。
我想知道做这件事的正确方法是什么,因为挖掘异常链的原因和相关异常对我来说似乎不合适。
除了丑陋之外,它还依赖于实现,并且可能随着jersey/jaxb版本的变化而变化。所以我想要一个更清晰的解决方案

此外,我还尝试在我的
web.xml
文件中将\u RESPONSE中的
ServerProperties.BV\u SEND\u ERROR\u设置为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>

Jersey Web应用程序
org.glassfish.jersey.servlet.ServletContainer
jersey.config.server.provider.packages
包装1:包装2
jersey.config.beanValidation.enableOutputValidationErrorEntity.server
真的

但是仍然没有成功。

我们还没有找到比从异常链中挖掘细节更好的解决方案。这很难看。断言您在自定义ContextResolver中调用解组器并启动解组,您可以在那里捕获异常,“挖掘”您的消息,并自己抛出具有给定消息的自定义异常。你无法摆脱挖掘,但你可以把它藏在这个地方。