【发布时间】:2013-07-05 15:18:32
【问题描述】:
我有一个这样的地址实体:
@Entity
public class Address implements java.io.Serializable {
@Id @GeneratedValue(strategy = IDENTITY)
private Long id;
@Size(max = 100)
private String street;
@Size(max = 15)
private String nr;
@Field
@Size(min = 1, max = 20) @NotBlank
private String city;
}
这是其他几个实体的一部分。对于这样一个实体,地址是可选的。 我有一个视图,我们的用户可以通过几个表单输入来编辑整个实体,包括几个地址字段。
为了能够编辑地址,我用空地址实体初始化父实体。
现在的问题是:当所有地址字段为空时,我不想在实体上保留 Address。为此,当(且仅当)Address 的所有字段为空时,我需要跳过对实体的验证。我该如何以最优雅的方式做到这一点?
我目前正在做的是使用<o:validateBean disabled="true" /> 为提交按钮完全跳过bean 验证,如果它是空的,则将地址设置为null。但这听起来像是一个彻头彻尾的黑客攻击,因为它在 all 情况下禁用了 all 验证。我怎样才能做得更好?
【问题讨论】:
标签: jsf-2 bean-validation omnifaces