Meine BindingResult erhält nicht die Fehler, aber sie erscheinen auf der Stack-Trace.Spring-Boot BindingResult keine Fehler
haben Meine Verkäufe einen RegexMuster für salesno:
@Entity
public class Sale {
public Sale() {
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotEmpty
@Pattern(regexp = "^S\\d{9}$", message = "Sales number must be in the format S123456789")
private String salesno;
Der DTO den HTML-Code für Anwendungen sichern SalesViewDTO
public class SaleViewModel {
private Sale sale = new Sale();
und die Steuerung:
@PostMapping("newSale")
public String saleSubmit(@Valid @ModelAttribute("SaleViewModel") SaleViewModel saleViewModel, BindingResult result) {
if (result.hasErrors()) {
List<ObjectError> errors = result.getAllErrors();
for(ObjectError error : errors) {
System.out.println("This is the error: " +error);
}
return "sale";
} else {
// Other stuff
Wenn ich dann versuchen, Um das Formular zu senden, bekomme ich die Nachricht auf der Konsole:
ConstraintViolationImpl{interpolatedMessage='Sales number must be in the format S123456789', propertyPath=salesno, rootBeanClass=class com.gmbh.domain.Sale, messageTemplate='Sale number must be in the format S123456789'}
Ich möchte wissen, warum das Bindungsergebnis Ergebnis leer ist?
perfekt - danke! –
Wenn es zu lang ist, werde ich eine andere Frage stellen, aber wie bekomme ich @UniqueConstraint-Fehler in das Binding-Ergebnis wie: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Eintrag '123456789' duplizieren –
Es ist nicht Teil der Validierungslogik. Normalerweise wird eine benutzerdefinierte Anmerkung eingeführt, z. @UserNotExists, wo die gesamte Logik überprüft wird http://dolszewski.com/spring/custom-validation-annotation-in-spring/ – StanislavL