Ich versuche, Javax Validierungen auf DTO zu verwenden. Aber ich möchte, dass diese Validierungen basierend auf der Operation angewendet werden, für die dieses DTO verwendet wird.javax Validierung basierend auf Operation
Können sagen, ich habe folgendes DTO:
@Getter @Setter
public class CustomerDTO {
@NotNull
private String id;
@NotNull
private String name;
}
ich die gleiche DTO bin mit für Erstellen, Aktualisieren und Löschen von Operationen. Im Fall von Update und Delete-Operation Ich möchte "ID" NotNull sein, aber in Erstellen muss es null sein.
Da ich jedoch das gleiche DTO verwende und @Valid Annotation auf Controller-Ebene verwende, gilt es für alle Attribute. Und die folgende API nicht als „id“ nicht null sein kann
public CustomerDTO createCustomer(@Valid CustomerDTO customer, BindingResults results){
if(results.hasErrors()){
throw IllegalArgumentsException("Required params are mising");
}
customerService.create(customer);
}
Ich empfehle statt zu versuchen, [Update und Delete Operation Not Null mit javax], @NotNull Annotation an ID zu entfernen und NOT NULL Constraints in Ihrer DB, und überprüfen Sie dann Bedingung (ID nicht null) bei Update und Delete-Vorgang. – Alice
Danke Alice. Ich versuche tatsächlich ein Framework zu erstellen, da es viele Entitäten in unserem Produkt gibt. Ich habe NOT NULL Constraints in der DB. Durch die Verwendung von javax.validation wird eine Menge Code von Boiler-Platten entfernt und sogar lokalisierte Fehlermeldungen unterstützt. –
Erstellen Sie separate Klassen InsertCustomerDTO und UpdateCustomerDTO, die denselben BaseCustomerDTO erweitern und die gewünschte Validierung in den Klassen hinzufügen. – StanislavL