1.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>
<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标签是对应于SpringMVC的Errors对象的。它的作用就是用于展现Errors对象中包含的错误信息的。我们利用errors标签来展现Errors的时候是通过errors标签的path属性来绑定一个错误信息的。我们可以通过path属性来展现两种类型的错误信息。
l 所有的错误信息,这个时候path的值应该置为“*”
l 当前对象的某一个域的错误信息,这个时候path的值应为所需展现的域的名称
看下面这样一个例子:
定义了一个UserValidator对象,专门用来对User对象进行验证,其代码如下:
- import org.springframework.validation.Errors;
- import org.springframework.validation.ValidationUtils;
- import org.springframework.validation.Validator;
- publicclass UserValidator implements Validator {
- @Override
- publicboolean supports(Class<?> clazz) {
- // TODO Auto-generated method stub
- return User.class.equals(clazz);
- }
- @Override
- publicvoid 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.");
- }
- }
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")
- publicclass 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
- publicvoid 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";
- }
- }
@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>
<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中注入两个错误信息,展示的页面信息将如下所示: