SpringMVC表单标签(7)

1.12 textarea标签

SpringMVC textarea标签将被渲染为普通HTML textarea标签。简单示例如下:

Jsp代码 

  1. <form:form action="formTag/form.do" method="post" commandName="user">
  2. <table>
  3. <tr>
  4. <td>自我介绍:</td>
  5. <td>
  6. <form:textarea path="introduction" cols="20" rows="10"/>
  7. </td>
  8. </tr>
  9. <tr>
  10. <td colspan="2"><input type="submit" value="提交"/></td>
  11. </tr>
  12. </table>
  13. </form:form>

<form:form action="formTag/form.do" method="post" commandName="user">

    <table>

        <tr>

            <td>自我介绍:</td>

            <td>

               <form:textarea path="introduction" cols="20" rows="10"/>

            </td>

        </tr>

       <tr>

            <td colspan="2"><input type="submit" value="提交"/></td>

        </tr>

    </table>

</form:form>

1.13 errors标签

SpringMVC errors标签是对应于SpringMVCErrors对象的。它的作用就是用于展现Errors对象中包含的错误信息的。我们利用errors标签来展现Errors的时候是通过errors标签的path属性来绑定一个错误信息的。我们可以通过path属性来展现两种类型的错误信息。

l 所有的错误信息,这个时候path的值应该置为“*”

l 当前对象的某一个域的错误信息,这个时候path的值应为所需展现的域的名称

看下面这样一个例子:

定义了一个UserValidator对象,专门用来对User对象进行验证,其代码如下:

Java代码 

  1. import org.springframework.validation.Errors;
  2. import org.springframework.validation.ValidationUtils;
  3. import org.springframework.validation.Validator;
  4.  
  5. publicclass UserValidator implements Validator {
  6.  
  7. @Override
  8. publicboolean supports(Class<?> clazz) {
  9. // TODO Auto-generated method stub
  10. return User.class.equals(clazz);
  11. }
  12.  
  13. @Override
  14. publicvoid validate(Object target, Errors errors) {
  15. // TODO Auto-generated method stub
  16. ValidationUtils.rejectIfEmpty(errors, "name", null, "Name Is Empty");
  17. ValidationUtils.rejectIfEmpty(errors, "username", null, "Username Is Empty.");
  18. }
  19.  
  20. }

import org.springframework.validation.Errors;

import org.springframework.validation.ValidationUtils;

import org.springframework.validation.Validator;

 

public class UserValidator implements Validator {

 

    @Override

    public boolean supports(Class<?> clazz) {

       // TODO Auto-generated method stub

       return User.class.equals(clazz);

    }

 

    @Override

    public void validate(Object target, Errors errors) {

       // TODO Auto-generated method stub

       ValidationUtils.rejectIfEmpty(errors, "name", null, "Name Is Empty");

       ValidationUtils.rejectIfEmpty(errors, "username", null, "Username Is Empty.");

    }

 

}

然后我们有这样一个控制器类:

Java代码 

  1. @Controller
  2. @RequestMapping("formTag")
  3. publicclass FormTagController {
  4.  
  5. @RequestMapping(value="form", method=RequestMethod.GET)
  6. public String formTag(Map<String, Object> map) {
  7. User user = new User();
  8. map.put("user", user);
  9. return"formTag/form";
  10. }
  11.  
  12. @InitBinder
  13. publicvoid initBinder(DataBinder binder) {
  14. binder.setValidator(new UserValidator());
  15. }
  16.  
  17. @RequestMapping(value="form", method=RequestMethod.POST)
  18. public String form(@Valid User user, Errors errors) {
  19. if (errors.hasFieldErrors())
  20. return"formTag/form";
  21. return"formTag/submit";
  22. }
  23. }

@Controller

@RequestMapping("formTag")

public class FormTagController {

 

    @RequestMapping(value="form", method=RequestMethod.GET)

    public String formTag(Map<String, Object> map) {

       User user = new User();

       map.put("user", user);

       return "formTag/form";

    }

  

    @InitBinder

    public void initBinder(DataBinder binder) {

       binder.setValidator(new UserValidator());

    }

  

    @RequestMapping(value="form", method=RequestMethod.POST)

    public String form(@Valid User user, Errors errors) {

       if (errors.hasFieldErrors())

           return "formTag/form";

       return "formTag/submit";

    }

}

我们可以看到我们在上述控制器类中通过DataBinder对象给该类设定了一个用于验证的UserValidator,这样当我们请求该控制器的时候UserValidator将生效。

我们有如下这样一段表单代码:

Jsp代码 

  1. <form:form action="formTag/form.do" method="post" commandName="user">
  2. <table border="1px" bordercolor="blue">
  3. <tr align="center">
  4. <td width="100">姓名:</td>
  5. <td width="150"><form:input path="name"/></td>
  6. </tr>
  7. <tr align="center">
  8. <td>用户名:</td>
  9. <td><form:input path="username"/></td>
  10. </tr>
  11. <tr>
  12. <td>所有错误信息:</td>
  13. <td><form:errors path="*"/></td>
  14. </tr>
  15. <tr>
  16. <td>Name的错误信息:</td>
  17. <td><form:errors path="name"/></td>
  18. </tr>
  19. <tr align="center">
  20. <td colspan="2"><input type="submit" value="提交"/></td>
  21. </tr>
  22. </table>
  23. </form:form>

<form:form action="formTag/form.do" method="post" commandName="user">

    <table border="1px" bordercolor="blue">

        <tr align="center">

            <td width="100">姓名:</td>

            <td width="150"><form:input path="name"/></td>

        </tr>

        <tr align="center">

            <td>用户名:</td>

            <td><form:input path="username"/></td>

        </tr>

        <tr>

            <td>所有错误信息:</td>

            <td><form:errors path="*"/></td>

        </tr>

        <tr>

            <td>Name的错误信息:</td>

            <td><form:errors path="name"/></td>

        </tr>

        <tr align="center">

            <td colspan="2"><input type="submit" value="提交"/></td>

        </tr>

    </table>

</form:form>

当我们提交上面的表单的时候会往Errors中注入两个错误信息,展示的页面信息将如下所示:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章