Spring MVC中的Validator没有配置消息属性文件

时间:2016-10-07 18:10:05

标签: java spring-mvc

我有这样的情景。

1。我有jsp文件,有两个字段:toDate和fromDate:

<form:form id="testForm" modelAttribute="testForm" action="testAction">
    Name: <form:input path="name" />
    From date: <form:input path="fromDate" id="fromDate" />
    <form:errors path="fromDate" class="control-label" />
    To date: <form:input path="toDate" id="toDate" />
    <input id="mySubmitButton" type="submit" value="HELLO">
</form:form>

2。我有一个控制器来处理来自我的页面的请求,如下所示:

@Autowired
   TestFormValidator validator;

@InitBinder
protected void initBinder(WebDataBinder binder) {
    binder.setValidator(validator);
}
@RequestMapping(value = "/testAction", method = RequestMethod.POST)
public String doSomeThing(ModelMap model,
        @ModelAttribute @Validated TestForm testForm, BindingResult result,
        RedirectAttributes redirectAttrs) {
    if (result != null && result.hasErrors()) {
        return "hello";
    }

3。我有Validator类来验证TestForm:

@Component
public class TestFormValidator implements Validator {

@Override
public boolean supports(Class<?> clazz) {
    return TestForm.class.equals(clazz);
}

@Override
public void validate(Object arg0, Errors errors) {
    TestForm testForm = (TestForm) arg0;
    if (testForm.getFromDate() != null
            && testForm.getFromDate().after(testForm.toDate)) {
        errors.rejectValue("fromDate", "From date must not be after to date.");
    }

}

4。是的,以下代码是正确的我想要的。但我总是遇到例外:

org.springframework.context.NoSuchMessageException:代码中没有找到任何消息&#39;从日期开始,日期不得晚于... testForm.fromDate&#39;对于语言环境......

5。我知道我错过了声明bean: messageSource

我的问题:

我怀疑是否有任何方法可以在不声明消息属性文件的情况下返回错误消息?

提前致谢!!!

2 个答案:

答案 0 :(得分:4)

您可以尝试使用Errors.rejectValue(String field, String errorCode, String defaultMessage)方法。所以你的代码必须改变如下。

errors.rejectValue("fromDate", "error.invalidFromDate", "From date must not be after to date.");

理想情况下,在无法从消息源中找到错误代码的情况下使用defaultMessage。

答案 1 :(得分:0)

您也可以使用此选项.. 可以在验证注释中指定错误消息,例如: @NotEmpty(message =“请输入您的电子邮件地址。”) 私人字符串电子邮件;

对于整数值 @NotNull(message =“...”。) 私有整数contactNumber

通过执行此操作,您可以在jsp页面上显示错误消息