基本數據類型和字元串類型的自動轉換<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ page contentType="text/html;charset=UTF-8" language="j ...
基本數據類型和字元串類型的自動轉換
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h3>添加妖怪~~</h3> <!-- 這裡的表單,我們使用 springMVC 的標簽來完成 特別說明幾點: 1. SpringMVC 表單標簽在顯示之前必須在 request 中有一個 bean, 該 bean 的屬性 和表單標簽的欄位要對應! request 中的 key 為: form 標簽的 modelAttrite 屬性值, 比如這裡的 monsters 2. SpringMVC 的 form:form 標簽的 action 屬性值中的 / 不代表 WEB 應用的根目 錄. --> <form:form action="save" method="POST" modelAttribute="monster"> 妖怪名字: <form:input path="name"/> <form:errors path="name"/> <br><br> 妖怪年齡~: <form:input path="age"/> <form:errors path="age"/> <br><br> 電子郵件: <form:input path="email"/> <form:errors path="email"/> <br><br> 生日: <form:input path="birthday"/> <form:errors path="birthday"/> <br><br> 薪水: <form:input path="salary"/> <form:errors path="salary"/> <br><br> <input type="submit" value="添加妖怪"/> </form:form> </body> </html>
比如通過表單提交數據給springmvc時,輸入的”28“字元串就會自動地轉成Integer類型的數據保存在Model中
對於特殊數據類型和字元串的轉換要使用註解
比如日期(@DateTimeFormat),貨幣(@NumberFormat)等等。
註解中的pattern可以指定輸入的數據格式,如果不滿足格式則會報錯。
驗證以及國際化
1. 對輸入的數據(比如表單數據),進行必要的驗證,並給出相應的提示信息。 2. 對於驗證表單數據,springMVC 提供了很多實用的註解, 這些註解由 JSR 303 驗證框架提 供. ● JSR 303 驗證框架 1. JSR 303 是 Java 為 Bean 數據合法性校驗提供的標準框架,它已經包含在 JavaEE 中 2. JSR 303 通過在 Bean 屬性上標註類似於 @NotNull、@Max 等標準的註解指定校驗規則, 並通過標準的驗證介面對 Bean 進行驗證
Controller使用這些註解的驗證必須在參數列表前添加@Valid註解來標明,
@RequestMapping(value = "/save") public String save(@Valid Monster monster, Errors errors, Map<String,Object>map){ System.out.println(monster); System.out.println("============"); for (Map.Entry<String,Object> entry : map.entrySet()) { System.out.println(entry.getKey()+" "+entry.getValue()); } System.out.println("============="); if(errors.hasErrors()){ List<ObjectError> allErrors = errors.getAllErrors(); for (ObjectError allError : allErrors) { System.out.println(allError); } return "data_valid/monster_addUI"; } return "data_valid/success"; }
Error類用來存儲前臺輸入的不符合規範的錯誤,並解釋具體的錯誤信息,前臺通過spring標簽來回顯具體的錯誤信息。
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>是引入spring的標簽
通過<form:errors path="?"/>來指定回顯的具體的屬性的錯誤信息,可以通過自定義來實現回顯的信息。
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h3>添加妖怪~~</h3> <!-- 這裡的表單,我們使用 springMVC 的標簽來完成 特別說明幾點: 1. SpringMVC 表單標簽在顯示之前必須在 request 中有一個 bean, 該 bean 的屬性 和表單標簽的欄位要對應! request 中的 key 為: form 標簽的 modelAttrite 屬性值, 比如這裡的 monsters 2. SpringMVC 的 form:form 標簽的 action 屬性值中的 / 不代表 WEB 應用的根目 錄. --> <form:form action="save" method="POST" modelAttribute="monster"> 妖怪名字: <form:input path="name"/> <form:errors path="name"/> <br><br> 妖怪年齡~: <form:input path="age"/> <form:errors path="age"/> <br><br> 電子郵件: <form:input path="email"/> <form:errors path="email"/> <br><br> 生日: <form:input path="birthday"/> <form:errors path="birthday"/> <br><br> 薪水: <form:input path="salary"/> <form:errors path="salary"/> <br><br> <input type="submit" value="添加妖怪"/> </form:form> </body> </html>
國際化錯誤信息需要配置具體的文件,還需要在springmvc的配置文件中進行配置。
如果屬性驗證需要滿足多種要求,可以把驗證註解組合使用以達到效果,例如:
要求age屬性欄位不能為空且必須在1~100之間
@NotNull(message = "年齡不能為空") @Range(min = 1,max = 100) private Integer age; @NotNull(message = "姓名不能為空") @NotEmpty private String name; @NotNull(message = "生日不能為空") @DateTimeFormat(pattern = "yyyy-MM-dd") private Date birthday; @NotNull(message = "薪水不能為空") @NumberFormat(pattern = "###,###.##") private float salary;
數據類型轉換校驗核心類-DataBinder