Ich benutze Spring Boot 1.5.3.RELEASE. Ich versuche Spring Boot REST API mit org.springframework.validation.Validator zu validieren. Frühling Validator hat mehrere Ansätze Einheiten zu validieren, so dass, wenn ichSpring Validator für REST API funktioniert nur teilweise
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "id", "field.required");
nenne Alles funktioniert gut und Anforderung wird mit Fehler Validierung aber wenn weiter ich verschiedene Validierung durchführen
if (!StringUtils.isAllLowerCase(request.getId())) {
errors.rejectValue("id", "Id should be lowercase");
}
nichts passiert, obwohl Code ist tatsächlich ausgeführt und rejectValue Methode wird tatsächlich aufgerufen, aber die Verarbeitung der Anfrage aus bestimmten Gründen wird nicht gestoppt.
Es stellt sich also die Frage, warum die Validierung nicht stattfindet und ob es verschiedene Möglichkeiten gibt, die Validierung über Spring/Spring-Boot durchzuführen. Ich habe viele komplizierte Validierungen, daher versuche ich JSR-303 zu vermeiden und Tonnen von benutzerdefinierten Annotationen zu erstellen.
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");
}
}
}
Zeigen Sie Ihren Controller. –