javascript
SpringMVC的表单标签库
目錄
1.form標簽
2.input標簽
3.password標簽
5.textarea標簽
6.checkbox標簽
7.checkboxes標簽
9.select、option、options標簽
10.errors標簽
1.form標簽
-
一般情況下,通過 GET 請求獲取表單頁面,而通過POST 請求提交表單頁面,因此獲取表單頁面和提交表單頁面的 URL 是相同的。只要滿足該最佳條件的契約,form:form 標簽就無需通過 action 屬性指定表單提交的 URL
-
可以通過 modelAttribute 屬性指定綁定的模型屬性,若沒有指定該屬性,則默認從 request 域對象中讀取command 的表單 bean,如果該屬性值也不存在,則會發生錯誤。
-
form標簽的屬性
| modelAttribute | form綁定的模型屬性名稱,默認為command |
| commandName | form綁定的模型屬性名稱,默認為command |
| acceptCharset | 定義服務器接受的字符編碼 |
| cssClass | 定義要應用到被渲染的form元素CSS類 |
| cssStyle | 定義要應用到被渲染的form元素CSS樣式 |
| htmlEscape | boolean值,表示被渲染的值是否應該進行HTML轉義 |
-
SpringMVC提供了多個表單組件標簽,如form:input/、form:select/ 等,用以綁定表單字段的屬性值,它們的共有屬性如下:
-
path:表單字段,對應 html 元素的 name 屬性,支持級聯屬性
-
htmlEscape:是否對表單值的 HTML 特殊字符進行轉換,默認值為 true
-
cssClass:表單組件對應的 CSS樣式類名
-
cssErrorClass:表單組件的數據存在錯誤時,采取的 CSS樣式
-
2.input標簽
-
簡單的使用案例:
registerForm.jsp
<!-- 如果不設置modelAttribute屬性,會取屬性名為command的對應屬性值 --> <form:form ?method="post" action="register" modelAttribute="user" >姓名:<form:input path="username"/><br/>性別:<form:input path="sex"/><br/>年齡:<form:input path="age"/><br/> </form:form>User.java
public class User {private String username;private String sex;private Integer age;//... }UserController.java
? ?@RequestMapping("/registerForm")public String registerForm(Model model){User user=new User("張三","男",20);//model.addAttribute("command",user);model.addAttribute("user",user);return "registerForm";}3.password標簽
-
password標簽的用法跟input標簽相似,也能綁定表單數據,只是它生成的是一個密碼框,并且多了一個showPassword屬性
4.hidden標簽
-
用法跟input相似,也能綁定表單數據,只是它生成的是一個隱藏域
5.textarea標簽
-
是一個支持多行輸入的HTML元素
6.checkbox標簽
-
會被渲染為一個類型為checkbox的普通HTML input標簽
checkboxForm.jsp
<!-- label為被渲染的復選框的值 --> <form:form method="post" action="checkboxForm" modelAttribute="user"><!-- 當綁定的為數組、List、Set時,checkbox的value屬性在綁定的列表數據中存在則為選中狀態 --><form:checkbox path="courses" value="Spring" label="Spring"/> <form:checkbox path="courses" value="SpringMVC" label="SpringMVC"/> <form:checkbox path="courses" value="MyBatis" label="MyBatis"/> <!-- 當綁定的是一個boolean數據時,true為選中,false為不選中 --><form:checkbox path="reader" value="true"/>已經閱讀相關協議 </form:form>User1.java
public class User1 {private boolean reader;private List<String> courses;//... }UserController.java
? ?@RequestMapping(value = "/checkboxForm",method = RequestMethod.GET)public String checkboxForm(Model model){User1 user=new User1();//設置boolean變量reader的值為true,頁面的checkbox復選框會被選中user.setReader(true);//為集合變量courses添加屬性,頁面對應的會被選中List<String> courses=new ArrayList<>();courses.add("SpringMVC");courses.add("MyBatis");user.setCourses(courses);model.addAttribute("user",user);return "checkboxForm";}7.checkboxes標簽
| items | 可以是一個 List、String[] 或 Map |
| itemLabel | 指定 checkbox的 value 值,可以是集合中 bean 的一個屬性值 |
| itemValue | 指定 checkbox 的 label值,可以是集合中 bean 的一個屬性值 |
| delimiter | 定義兩個input元素之間的分隔符,默認沒有分隔符 |
Department.java
//之后的頁面使用id作為value,name作為label public class Departement {private Integer id;private ?String name; }Employee.java
public class Employee {private List<Departement> depts; }UserController.java
? ?@RequestMapping(value = "/checkboxForm2",method = RequestMethod.GET)public String checkboxesForm(Model model){Employee employee=new Employee();Departement departement=new Departement(1,"開發部");List<Departement> list=new ArrayList<>();list.add(departement);employee.setDepts(list);//頁面展現的可供選擇的復選框內容deptListList<Departement> deptList=new ArrayList<>();deptList.add(departement);deptList.add(new Departement(2,"銷售部"));deptList.add(new Departement(3,"財務部"));model.addAttribute("employee",employee);model.addAttribute("deptList",deptList);return "checkboxForm2";}checkboxForm2.jsp
<form:form modelAttribute="employee" method="post" action="checkboxForm2"><form:checkboxes path="depts" items="${deptList}" itemLabel="name" itemValue="id"/> </form:form>8.radiobutton標簽
-
會被渲染為一個類型為radio的普通HTML input標簽
StudentController.java
? ?@RequestMapping(value = "/radiobuttonFrom",method = RequestMethod.GET)public String radiobuttonForm(Model model){Student s=new Student("男");model.addAttribute("student",s);return "radiobuttonForm";}Student.java
public class Student {private String sex; }radiobuttonForm.jsp
<form:form action="radiobuttionForm" method="post" modelAttribute="student"><form:radiobutton path="sex" value="男"/>男<br/><form:radiobutton path="sex" value="女"/>女 </form:form>9.select、option、options標簽
| items | 用于生成option列表元素的對象的Collection、Map或者Array |
| itemLabel | item屬性中定義的對象屬性,為每個option提供label |
| itemValue | item屬性中定義的對象屬性,為每個option提供value |
UserController.java
? ?@RequestMapping(value = "/selectForm",method = RequestMethod.GET)public ?String selectForm(Model model){User user=new User(2);model.addAttribute("user",user);//頁面展現的可供選擇的select下拉框內容Map<Integer,String> deptMap=new HashMap();deptMap.put(1,"開發部");deptMap.put(2,"銷售部");deptMap.put(3,"財務部");model.addAttribute("deptMap",deptMap);return "selectForm";}selectForm.jsp
<form:form modelAttribute="user" method="post" action="selectForm"><!-- items屬性可以自動加載后臺傳遞過來的數據 --><%--部門:<form:select path="deptId" items="${deptMap}"></form:select>--%><!-- 若沒有自動加載,可以使用option屬性手動添加 -->部門:<form:select path="deptId"><form:option value="1">開發部</form:option><form:option value="2">財務部</form:option><form:option value="3">銷售部</form:option></form:select> </form:form>10.errors標簽
-
<form:errors path= “ *” /> :顯示表單所有的錯誤
-
<form:errors path= “ user*” /> :顯示所有以 user 為前綴的屬性對應的錯誤
-
<form:errors path= “ username” /> :顯示特定表單對象屬性的錯誤
?
總結
以上是生活随笔為你收集整理的SpringMVC的表单标签库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring和MyBatis的整合
- 下一篇: SpringMVC的数据转换、格式化和数