表单
@Getter
@Setter
public class SourceForm {
@ISBN(type = ISBN.Type.ANY)
private String isbn;
}
实体
@Entity
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "sources")
public class SourceEntity extends BaseEntity{
@ISBN(type = ISBN.Type.ANY)
@Column(columnDefinition = "varchar(255) default ''",
nullable = false)
private String isbn;
}
问题
Isbn字段可以为空。换句话说:空或有效ISBN。
但是如果我在表单中将此字段留空,我会得到错误消息“无效的ISBN”。
接下来我可以尝试什么?
1条答案
按热度按时间dvtswwa31#
@ISBN
annotation的默认行为是不将空值视为有效的ISBN。但是,您可以实现一个自定义验证器来允许空值或验证ISBN。以下是如何为这种情况创建自定义验证器的示例:以及自定义验证器的实现:
然后,您可以在代码中的字段上使用
@EmptyOrValidISBN
注解,自定义验证器EmptyISBNValidator
将根据定义的逻辑允许空值或有效的ISBN。