我正在使用 Hibernate Validator 来验证表单中的输入字段。理想情况下,当该字段出现问题时,我希望在每个字段旁边显示一条错误消息。
在注册表中,我要求输入密码并重复密码,我想确保它们匹配。使用这个问题我能够实现这一点。问题当然是验证发生在类级别,这意味着错误消息仅在我这样做时显示:
<form:errors path="*" />
我认为这会很好,我也会在客户端进行验证,并且我可以在那里进行内联方法,如果人们关闭了 JS,那么我有一个组元素来显示错误并不是那么糟糕。这种方法的问题是我必须能够说例如:
'Name' field cannot be empty
'Email' field is invalid
当我在考虑 i18n 的情况下制作此应用程序时,我无法对“电子邮件”和“姓名”等字段名称进行硬编码,因此我的User
实体中有以下内容进行验证({fieldEmpty}
只是一个字符串,上面写着“不能为空” ):
@Email(message = "{register_EmailInvalid}")
@NotBlank(message = "\"{register_EmailField}\" {fieldEmpty}")
private String email;
@NotBlank(message = "\"{register_NameField}\" {fieldEmpty}")
private String name;
@NotBlank(message = "\"{register_FirstNameField}\" {fieldEmpty}")
private String firstName;
@NotBlank(message = "\"{register_PasswordField}\" {fieldEmpty}")
private String password;
@NotBlank(message = "\"{register_PasswordRepeatField}\" {fieldEmpty}")
private String passwordRepeat;
register_EmailField
这会根据用户的语言环境设置为字段名称选择正确的值,但这也意味着我必须register_NameField
在我的常规messages.properties
和我的ValidationMessages.properties
.
字段名称目前都在其中ValidationMessages.properties
,并且在页面加载时未使用它们,因此表单始终将标签显示为我的默认语言环境。
在下图中,您可以看到所有内容都是荷兰语,除了我的表单标签。我应该如何解决这个问题,我是否错过了一种更简单的方法来实现这一点?我可以将类级验证消息链接到特定字段吗?
如果我将表单标签消息也放入其中,messages_nl.properties
那么它当然可以工作,但我不想重复这些消息。