在Spring 5中,如何自定义表单验证错误消息?

时间:2018-10-02 15:50:01

标签: spring forms validation spring-mvc error-handling

我正在使用Spring 5.1。我想为我提交的表单编写一个验证器,我想自定义返回的错误消息之一。我将错误消息存储在属性文件中...

events_

请在“ {0}”中输入我要输入用户输入的无效用户名的位置。所以在我的验证器中,我有

events_intratable_

但是,尽管已验证“ regForm.getEmail()”为非空,但运行特定分支时,{0}并未填充。我看到此信息已打印到我的JSP页面

already.taken.registration.username=There is already an account created with the username {0}.  Did you forget your password?

用自定义数据填写错误消息的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

errors.rejectValue("email", "already.taken.registration.username", regForm.getEmail());

这实际上将调用方法

void rejectValue(@Nullable
             java.lang.String field,
             java.lang.String errorCode,
             java.lang.String defaultMessage)

您需要添加带有参数的对象数组:

void rejectValue(@Nullable
             java.lang.String field,
             java.lang.String errorCode,
             @Nullable
             java.lang.Object[] errorArgs,
             @Nullable
             java.lang.String defaultMessage)

您的通话将如下所示:

errors.rejectValue("email", "already.taken.registration.username", new Object[] {regForm.getEmail()}, null);