我使用Spring引导1.5.3.RELEASE。我试图通过org.springframework.validation.Validator验证Spring Boot REST API。 春天验证有几种方法来验证实体,所以,当我打电话的REST API春天验证只能部分
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "id", "field.required");
一切正常,并请求失败,验证错误,但进一步的,当我执行不同的验证
if (!StringUtils.isAllLowerCase(request.getId())) {
errors.rejectValue("id", "Id should be lowercase");
}
什么也没有发生,虽然代码实际执行并且rejectValue方法实际上被调用,但是由于某些原因处理请求没有停止。
所以,问题是为什么验证不会发生,也许有不同的方式通过Spring /弹簧引导执行验证。我有很多复杂的验证,所以我尽量避免使用JSR-303并创建大量的自定义注释。
RequestValidator
import com.user.model.TenantRequest;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
@Component
public class TenantRequestValidator implements Validator {
@Override
public boolean supports(Class<?> clazz) {
return TenantRequest.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object target, Errors errors) {
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "id", "field.required");
TenantRequest request = (TenantRequest) target;
if (!StringUtils.isAllLowerCase(request.getId())) {
errors.rejectValue("id", "Id should be lowercase");
}
}
}
显示控制器。 –