我试图使用SpEL模板从实体生成文件名.我有两个看起来类似的实体:
@Entity
public class Invoice implements Serializable {
private String invoicenumber;
private Customer customer;
@Column(name = "invoicenumber", nullable = false, length = 20)
public String getInvoicenumber() {
return this.invoicenumber;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "fk_customer", nullable = false)
public Customer getCustomer() {
return this.customer;
}
}
@Entity
public class Customer implements Serializable {
private String firstname;
private String lastname;
@Column(name = "firstname", nullable = false, length = 20)
public String getFirstname() {
return this.firstname;
}
@Column(name = "lastname", nullable …Run Code Online (Sandbox Code Playgroud) 我有一个用于输入日期的Spring MVC表单,输入被发送到Controller并通过标准Spring MVC验证进行了验证。
模型:
public class InvoiceForm {
@Future
private LocalDate invoicedate;
}
Run Code Online (Sandbox Code Playgroud)
控制器:
public String postAdd(@Valid @ModelAttribute InvoiceForm invoiceForm, BindingResult result) {
....
}
Run Code Online (Sandbox Code Playgroud)
提交表单时,出现以下错误:
public class InvoiceForm {
@Future
private LocalDate invoicedate;
}
Run Code Online (Sandbox Code Playgroud)
我ConstraintValidator为这种情况实施了自己的程序。但是以某种方式,Spring Boot不会选择它进行验证。
@Component
public class LocalDateFutureValidator implements ConstraintValidator<Future, LocalDate> {
@Override
public void initialize(Future future) {
}
@Override
public boolean isValid(LocalDate localDate, ConstraintValidatorContext constraintValidatorContext) {
LocalDate today = LocalDate.now();
return localDate.isEqual(today) || localDate.isAfter(today);
}
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以简单地编写自己的注释并在其中指定验证器,但是不是更干净,更简单的方法吗?