我正在开发一个java spring mvc应用程序。我有一个模型,我在一个字段顶部设置了两个验证注释。这是一个代码示例:
public class MyModel{
@NotBlank(message = "This field can not be blank")
@NationalCode(message = "Invalid national code")
private String name;
....
}
当我将name
留空并提交表单时,错误验证数组有两个成员:
name => This field can not be blank
name => Invalid national code
但是,我不想要第二行。事实上,我想当一个字段的第一次验证失败时,该字段上的所有其他验证都会停止执行。我该怎么做?
答案 0 :(得分:0)
您在这里缺少的是Bean Validation specification提供的分组功能。您需要定义逻辑组,以便仅显示属于给定组的注释生成的任何错误消息。有关详细信息,请参阅section 4.4.2. Group sequence。
简而言之,定义您自己的标记界面,例如NotBlankGroup
,并将此界面类添加到@NotBlank
注释中,
@NotBlank(message = "This field can not be blank", groups = NotBlankGroup.class)
这样,当@NotBlank
字段值为空时,您才会在name
中收到消息。
稍后,如果您希望添加@NationalCode
或其他自定义或预定义注释,您可以轻松地将NotBlankGroup
添加到groups
的其他注释中,以便将它们全部评估为一个组。