errors标签

来源:互联网 发布:货币资金的数据来源 编辑:程序博客网 时间:2024/05/22 08:24

这个标签生成类型为'span'的HTML标签,用来显示表单验证时出现的错误信息。通过这个标签,你可以访问控制器(controller)和与控制器关联的验证器(validator)产生的错误信息。

假设我们需要在表单提交时显示所有跟firstNamelastName有关的错误信息。我们为User这个类编写了名为UserValidator的验证器。

public class UserValidator implements Validator {    public boolean supports(Class candidate) {        return User.class.isAssignableFrom(candidate);    }    public void validate(Object obj, Errors errors) {        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "firstName", "required", "Field is required.");        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "lastName", "required", "Field is required.");    }}

现在,form.jsp是下面这个样子:

<form:form>    <table>        <tr>            <td>First Name:</td>            <td><form:input path="firstName" /></td>            <%-- Show errors for firstName field --%>            <td><form:errors path="firstName" /></td>        </tr>        <tr>            <td>Last Name:</td>            <td><form:input path="lastName" /></td>            <%-- Show errors for lastName field --%>            <td><form:errors path="lastName"  /></td>        </tr>        <tr>            <td colspan="3">                <input type="submit" value="Save Changes" />            </td>        </tr>    </table></form:form>

如果我们提交表单时没有填firstHamelastName这两个栏目,服务器返回的HTML页面就会像下面这样:

<form method="POST">    <table>        <tr>            <td>First Name:</td>            <td><input name="firstName" type="text" value=""/></td>            <%-- Associated errors to firstName field displayed --%>            <td><span name="firstName.errors">Field is required.</span></td>        </tr>        <tr>            <td>Last Name:</td>            <td><input name="lastName" type="text" value=""/></td>            <%-- Associated errors to lastName field displayed --%>            <td><span name="lastName.errors">Field is required.</span></td>        </tr>        <tr>            <td colspan="3">                <input type="submit" value="Save Changes" />            </td>        </tr>    </table></form>

如果我们想显示一个页面上所有的错误信息,应该怎么办呢? errors标签支持基本的通配符功能。

  • path="*" - displays all errors

    path="*": 显示所有的错误信息

  • path="lastName*" - displays all errors associated with the lastName field

    path="lastName*": 显示所有和lastName栏目有关的错误信息。

下面这个例子在页面的上方显示所有的错误信息,同时在表单每个栏目的旁边显示和该栏目有关的错误信息。

<form:form>    <form:errors path="*" cssClass="errorBox" />    <table>        <tr>            <td>First Name:</td>            <td><form:input path="firstName" /></td>            <td><form:errors path="firstName" /></td>        </tr>        <tr>            <td>Last Name:</td>            <td><form:input path="lastName" /></td>            <td><form:errors path="lastName"  /></td>        </tr>        <tr>            <td colspan="3">                <input type="submit" value="Save Changes" />            </td>        </tr>    </table></form:form>

生成的HTML代码如下所示:

<form method="POST">    <span name="*.errors" class="errorBox">Field is required.<br/>Field is required.</span>    <table>        <tr>            <td>First Name:</td>            <td><input name="firstName" type="text" value=""/></td>            <td><span name="firstName.errors">Field is required.</span></td>        </tr>        <tr>            <td>Last Name:</td>            <td><input name="lastName" type="text" value=""/></td>            <td><span name="lastName.errors">Field is required.</span></td>        </tr>        <tr>            <td colspan="3">                <input type="submit" value="Save Changes" />            </td>        </tr></form>
 
原创粉丝点击