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中注入兩個錯誤信息,展示的頁面信息將如下所示: