Spring - 填充表单字段并显示错误消息

时间:2010-06-15 21:32:49

标签: validation spring spring-mvc

我有一个Spring 2.5应用程序,我有几种形式可以执行各种验证。我没有问题进行此验证并在相应表单输入旁边的页面上显示错误。我想知道我是否可以将错误消息放在表单值中,以便它显示在输入字段中而不是仅显示在<form:errors path="*" cssClass="error" >标记中。我尝试在验证器类中设置值,并在设置表单会话属性时看到它在日志中设置,但该值未显示在字段中的页面上。

例如,我有一个页面,控件定义如下:

<form:input path="username" cssClass="textinput" cssErrorClass="textinput-error" />

在验证器中,我尝试将用户名值设置为对象:

ValidationUtils.rejectIfEmptyOrWhitespace(errors, "username", "error.field-required");
// This value doesn't show on the page
user.setUsername("You must supply a user name");

是否可以根据错误设置值并将其填充在页面上?

1 个答案:

答案 0 :(得分:1)

执行以下操作

验证方法内部

import static org.springframework.validation.BindingResult.MODEL_KEY_PREFIX;

public void validate(Object command, Errors errors) {
    /**
      * keep in mind I SUPPOSE your model Attribute is called command - override if needed
      */
    User user = (User) ((BindingResult) errors).getModel().get(MODEL_KEY_PREFIX + "command");

    user.setUserName("You must supply a user name");

    /**
      * Now just do it
      */
    ((BindingResult) errors).getModel().put(MODEL_KEY_PREFIX + "command", user);
}

它将满足您的需求

警告:由于消息错误是一个普通的字符串,你不能设置一些其类不是普通字符串的属性