如何将我的错误(在BindingResult中)绑定到我的字段?

时间:2012-01-30 15:33:49

标签: java spring jsp

我已经为我的JSP表单实现了自定义验证,当出现错误时,返回表单并将我的错误绑定到BindingResult。我的表格如下:

<form:form name="createCustomer" action="/practicemvc/customers/create/" method="POST" modelAttribute="customerBean">

    <form:errors />

    <label for="customerName">Name</label>
    <input type="text" name="name" id="customerName" value="${customerBean.name}" />
    <form:errors path="name" />

错误通过以下方式显示:

<form:errors />

但是,它们并没有通过以下方式显示:

<form:errors path="name" />

我的错误合并到BindingResult:

for(ErrorType errorType: validationResult.getErrors()) {
    bindingResult.addError(new ObjectError(errorType.getProperty(),
            new String[]{errorType.getErrorCode()}, null, null));
}

getProperty()将返回“name”,getErrorCode()将返回“INVALID_EMAIL”。 “INVALID_EMAIL”通过我的messageSource bean转换为“您的电子邮件无效”。如果我查看我的BindingResult中的错误内容,一切似乎都没问题,但它们没有按照我的JSP中的预期输出。有什么想法吗?

谢谢,B

2 个答案:

答案 0 :(得分:3)

据我记忆,要将错误消息与字段相关联,您需要FieldError,其中objectNamecustomerBeanfield为字段名称。

答案 1 :(得分:0)

似乎我可以通过以下方式使用它,但似乎并不是很好。

for(ErrorType errorType: validationResult.getErrors()) {
    fieldErrorCodes = new String[]{
        errorType.getErrorCode()
    };

    bindingResult.addError(new ObjectError(errorType.getProperty(), fieldErrorCodes , null, null));

    if(errorType.getProperty().length() > 0) {
        bindingResult.addError(new FieldError(bindingResult.getObjectName(), errorType.getProperty(), null,
                false, fieldErrorCodes, null, null));
    }
}