【问题标题】:Spring - Populate form field with error messageSpring - 使用错误消息填充表单字段
【发布时间】:2010-06-15 21:32:49
【问题描述】:

我有一个 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");

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

【问题讨论】:

    标签: validation spring spring-mvc


    【解决方案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);
    }
    

    它将满足您的需求

    警告:由于消息错误是纯字符串,您不能设置某些类不是纯字符串的属性

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多