我有一个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");
是否可以根据错误设置值并将其填充在页面上?
答案 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);
}
它将满足您的需求
警告:由于消息错误是一个普通的字符串,你不能设置一些其类不是普通字符串的属性