繁体   English   中英

杰克逊解组成功,即使错误的XML根元素

[英]Jackson unmarshalling succeeds even though wrong XML root element

使用Spring Boot(2.1.4)和Jackson(2.9.8),我正在编写一个使用@RestController和@RequestBody来使用和生成XML的API。

使用XML工作,但它工作得太好了:当根元素与我的Java对象(使用@JacksonXmlRootElement localName注释)不匹配时,它仍然设法解组该对象。

其余控制器如下所示:

@RestController
@RequestMapping(value = "api", produces = MediaType.APPLICATION_XML_VALUE, consumes = MediaType.APPLICATION_XML_VALUE)
public class PutawayApiController extends BaseController {

    private final ModelSampleService sampleService;

    @Autowired
    public PutawayApiController(ModelSampleService sampleService) {
        this.sampleService = sampleService;
    }

    @PostMapping(value = "/putaway_close")
    public PutawayCloseResponse putawayClose(@RequestBody PutawayCloseRequest request) {
        return sampleService.putawayCloseResponse();
    }

}

请求对象是:

@Data
@EqualsAndHashCode(callSuper = false)
@JacksonXmlRootElement(localName = "putawayCloseRequest")
public class PutawayCloseRequest extends BaseRequest {

    private String shipmentRef;

}

它继承自:

@Data
public abstract class BaseRequest {

    private String userId;

}

在Postman中执行以下调用时,它会触发我的调试点,如下图所示: 解组虽然触发了不正确的根元素名称

为什么它解组,即使根元素显然不是我配置的? 有没有办法在根元素不匹配时启用拒绝解组?

提前致谢。

因为文档 ,即@JacksonXmlRootElement的javadoc说:

注释,可用于定义序列化时用于根级别对象的根元素的名称,通常使用类型(类)的名称。

它从未声称在反序列化时使用它来验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM