-->

Spring WS How to get all error messages when valid

2019-09-10 06:19发布

问题:

When xsd validation fails I am trying to get all the error messages (SOAP detail element) and save them. Code below works but only brings the first error, how can I get all of them ?

public class PayloadValidationgInterceptorCustom extends
    PayloadValidatingInterceptor {

 @Override
protected Source getValidationRequestSource(WebServiceMessage  webSerMessage)   {
     source = webSerMessage.getPayloadSource();
     validateSchema(source);
     return source;  
}

private void validateSchema(Source source) throws Exception {        
  SchemaFactory schemaFactory =   
        SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
  Schema schema = schemaFactory.newSchema(getSchemas()[0].getFile());

  Validator validator = schema.newValidator();
  DOMResult result = new DOMResult();
 try {
     validator.validate(source, result);          
 } catch (SAXException _exception) {

      //?????? 
      //save error mesg to database
      //but this exception only has one error message            
}

}

回答1:

The response is the same as here; you can look at

protected boolean handleRequestValidationErrors(MessageContext messageContext, SAXParseException[] errors)

you have an array of ParseException and you can dump all of them.