我认为这就像添加注释一样容易,但是我找不到解决方案。
我有一个采用XML请求正文的简单端点:
@RequestMapping(value = "/import", method = RequestMethod.POST, consumes = MediaType.TEXT_XML_VALUE)
public ResponseEntity<Result> importReceipts(@Valid @RequestBody ImportRequest request) throws Exception {
其中ImportRequest是从XSD生成的JAXB类。当客户端发送请求时,此方法工作正常,但如果请求无效,则不会出现错误。
在给定XSD的情况下,任何人都可以建议验证此请求正文的最佳方法吗?
谢谢
答案 0 :(得分:1)
感谢亚历克斯,
我早些时候看到了这个响应,但是我再次查看了我的代码并发现了错误:)
@Bean
public MarshallingHttpMessageConverter marshallingHttpMessageConverter()
{
MarshallingHttpMessageConverter marshallingHttpMessageConverter = new MarshallingHttpMessageConverter();
marshallingHttpMessageConverter.setMarshaller(jaxb2Marshaller());
marshallingHttpMessageConverter.setUnmarshaller(jaxb2Marshaller());
return marshallingHttpMessageConverter;
}
@Bean
public Jaxb2Marshaller jaxb2Marshaller()
{
Jaxb2Marshaller jaxb2Marshaller = new Jaxb2Marshaller();
jaxb2Marshaller.setSchemas(new ClassPathResource("Import.xsd"), new ClassPathResource("BasicTypes.xsd"));
jaxb2Marshaller.setClassesToBeBound(Import.class);
return jaxb2Marshaller;
}
我有一个错字,但是主要的问题是我多次调用了jaxb2Marshaller.setSchemas,第二次调用删除了第一个模式。