2017-05-30 4 views
0

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"); 
    } 


} 
} 
+0

Zeigen Sie Ihren Controller. –

Antwort

1

Geben Sie Details über TenantRequest.java

für jetzt sein können, können Sie versuchen, @Component zu entfernen, da es nicht, weil Sie Validator implementieren benötigt wird.

Refer meine Arbeitsprobe https://github.com/Roshanmutha/rcmutha-SpringFormUIValidation/blob/master/src/main/java/com/rcmutha/SpringInputValidation/EmployeeFormValidator.java erstellt

Auch haben Sie fügen unten in der Steuerung?

@InitBinder 
protected void initBinder(WebDataBinder binder) { 
    binder.setValidator(new EmployeeFormValidator()); 
} 
Verwandte Themen