繁体   English   中英

如何使用注释在 SOAP Spring Web 服务中验证请求

[英]How to validate request in SOAP Spring Web Services using annotations

我使用 SpringBoot 开发了 SOAP web 服务,并希望使用基于注释的方法验证我的请求参数,如空、长度、最小值、最大值等,并希望向客户端返回适当的错误消息。

我尝试使用带有 @Valid 注释和自定义异常处理程序的休眠验证器,但它似乎不适用于 SOAP 服务。 它适用于 REST 服务。

您能否建议我们如何在 SOAP 服务中实现这一点。

在开发 SOAP 服务时,通常使用 XSD 模式完成验证。 但是如果你喜欢使用 Bean Validation,你总是可以手动触发它。 大致是这样的:

public abstract class SelfValidating<T> {
    private final Validator validator;

    public SelfValidating() {
        ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        validator = factory.getValidator();
    }

    public void validate() {
        Set<ConstraintViolation<T>> violations = validator.validate((T) this);
        if (!violations.isEmpty()) {
            throw new MyValidationException(violations, (MyDTO) this);
        }
    }
}

将您需要的验证注释( @NotEmpty等)放在 class 的实例字段上。

public class MyDTO extends SelfValidating<MyDTO> {
}

然后,您可以通过在您喜欢的任何地方调用myDTO.validate()来触发验证,并在全局异常处理程序中处理异常。

暂无
暂无

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

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