2014-02-11 87 views

回答

0

据我所知,它应与配置的XSD文件。也许你没有正确地定义一个字段在你的XSD中是强制的?

也许你错误地配置了拦截器。我已经配置了一个这样的:

@Bean 
public PayloadValidatingInterceptor validatingInterceptor() { 
    PayloadValidatingInterceptor interceptor = new PayloadValidatingInterceptor(); 
    interceptor.setSchema(messagesXsdResource); 
    interceptor.setAddValidationErrorDetail(true); 

    return interceptor; 
} 

当然,它应该被添加为拦截到PayloadRootAnnotationMethodEndpointMapping

@Bean 
public PayloadRootAnnotationMethodEndpointMapping endpointMapping() { 
    PayloadRootAnnotationMethodEndpointMapping mapping = new PayloadRootAnnotationMethodEndpointMapping(); 
    mapping.setInterceptors(new EndpointInterceptor[]{ 
     otherInterceptor(), 
     validatingInterceptor() 
    }); 

    return mapping; 
} 

但我只是猜测,你应该有一个良好的提供更多的上下文回答。

+1

我使用了PayloadValidatingInterceptorWithSourceFix类来完成这个技巧,现在它按预期工作。这给了我更多的验证控制权。谢谢你的回复@evandongen – zDroid

+0

没问题!我很高兴它为你工作。 – evandongen