12、textarea 标签
SpringMVC textarea标签将被渲染为普通HTML textarea标签。简单示例如下:
<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>
13、errors 标签
SpringMVC errors标签是对应于SpringMVC的Errors对象的。它的作用就是用于展现Errors对象中包含的错误信息的。我们利用errors标签来展现Errors的时候是通过errors标签的path属性来绑定一个错误信息的。我们可以通过path属性来展现两种类型的错误信息。
(1)所有的错误信息,这个时候path的值应该置为 “*”
(2)当前对象的某一个域的错误信息,这个时候path的值应为所需展现的域的名称
看下面这样一个例子:
定义了一个UserValidator对象,专门用来对User对象进行验证,其代码如下:
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."); } }
然后我们有这样一个控制器类:
@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将生效。
我们有如下这样一段表单代码:
<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中注入两个错误信息,展示的页面信息将如下所示: