我使用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");
}
}
}
顯示控制器。 –