您好,登錄后才能下訂單哦!
這篇文章主要講解了“SpringMVC表單標簽怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“SpringMVC表單標簽怎么使用”吧!
使用Spring MVC提供的表單標簽可以讓JSP視圖方便展示地Model中的數據,特別適合修改現有記錄數據的情形,通常進行修改操作時,原有數據要先展示出來,再供用戶重新選擇或修改。使用表單標簽能實現數據綁定,讓表單中的各個表單域中的name屬性綁定到對象模型中來。JSP頁面中要想使用SpringMVC自帶標簽庫,需要導入標簽庫,在JSP文件開頭聲明如下:
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
Spring的form標簽能夠自動綁定來自Model中的一個屬性值到當前form對應的實體對象,默認是command屬性(可以通過ModelAttribute重寫默認屬性),這樣就可以在form表單體里面方便的使用該對象的屬性。Form標簽下面又包含input,password,select/option/options,checkbox/checkboxs,radiobutton,radiobuttons等等子標簽。這些標簽的基本介紹如下圖所示。
form 標簽主要包括下表所示的多個屬性
@RequestMapping("detail/{id}") public ModelAndView detail (@PathVariable int id){ User myuser=userService.getUserById(id); ModelAndView mv=new ModelAndView(); mv.addObject("user",myuser); System.out.println(userService..getUserById(id).getUsername()); mv.setViewName("detail"); return mv; }
該代碼表示接收到 id 后,調用業務層,獲取到該 id 號的 User 類的用戶對象 myuser,然后將 myuser 對象封裝添加到 ModelAndView 中來,鍵為“user”,值為myuser 對象,這樣這個模型舊風裝好了屬性名稱為 user 的鍵值對(值為 myuser)。然后進入 JSP 頁面,form 表單利用 commandName 與 modelAttribute 指定該模型的“user”屬性名,就可綁定該模型屬性的值(即 User 類的myuser 對象),并把該模型屬性的值 myuser 對象中的各個屬性與 form 表單的各個子標簽一一綁定。Form 表單中應用 commandName 綁定模型屬性名稱示例代碼如下:
<form:form action="update" method="post" commandName="user"> //省略紙標簽 </form:form>
這樣就把后臺控制器方法中創建的對象傳遞過來在前臺展示了。
input標簽,用于展示控制器方法中封裝的基本類型的Model數據。語法如下:
<form:input path="domain的屬性名">
其中path用于指定要綁定的屬性,比如上面案例中,表單中指定了要綁定的對象為User類的myuser,但要在表單中具體顯示該對象的用戶名username還需要這樣做:
<form:form action="update" method="post" commandName="user"> <form:input path="username"/> </form:form>
這樣在表單綁定myuser對象的基礎上,進一步把該對象的username屬性綁定到文本輸入框中來。
password標簽,用于填寫密碼,有掩碼。語法如下:
<form:password path="domain的屬性名"/>
其path屬性含義同上。上例中,若還要展示用戶的密碼,則代碼如下所示:
<form:form action="update" method="post" commandName="user"> <form:input path="username"/></br> <form:password path="password"/></br> </form:form>
該標簽的屬性基本與input相同,但另有一個label屬性用于指定顯示的得選框的值。
<form:checkbox path="domain的屬性名" label="復選框的值">
如果該屬性名存在,則默認已經選上。前臺關鍵代碼如下:
myInteresting=new ArrayList<String>(); myInteresting.add("美食"); myInteresting.add("音樂");
前臺關鍵代碼如下,則顯示效果如圖7.1所示。
<form:checkbox path="myInteresting" value="舞蹈" label="舞蹈"/> <form:checkbox path="myInteresting" value="旅游" label="旅游"/> <form:checkbox path="myInteresting" value="唱歌" label="唱歌"/> <form:checkbox path="myInteresting" value="音樂" label="音樂"/> <form:checkbox path="myInteresting" value="運動" label="運動"/> <form:checkbox path="myInteresting" value="美食" label="美食"/>
顯示效果如圖所示:
checkboxes的基本語法如下:
<form:checkboxes items="${Model中Collections的屬性}" path="domain的屬性名"/>
checkboxes有幾個重要屬性如下表所示。
假定后臺控制器方法中設置了一個集合allIntersting,用于描述興趣愛好,其中包含了所有的興趣愛好:旅游,音樂,唱歌,跳舞,運動,美食。但某一個人的興趣可能只有其中若干項,所以再定義一個集合myIntesting,只含部分興趣愛好。前臺form表單需要把所有興趣愛好以多選項的形式列出來,對某一個人有的興趣愛好則打上勾。后臺代碼如下:
@RequestMapping("/detail/{id}") public ModelAndView detail(@PathVariable int id){ List<String> allInteresting=new ArrayList<String>(); allInteresting.add("舞蹈"); allInteresting.add("旅游"); allInteresting.add("唱歌"); allInteresting.add("音樂"); allInteresting.add("運動"); allInteresting.add("美食"); UserService userService=new UserService(); User user=userService.getUserById(id); List<String> myInteresting=new ArrayList<String>(); myInteresting.add("旅游"); myInteresting.add("音樂"); user.setMyInteresting(myInteresting); ModelAndView mv=new ModelAndView(); mv.addObject("allInteresting", allInteresting); mv.addObject("user", user); mv.setViewName("detail"); return mv; }
前臺關鍵代碼如下:
<form:checkboxes path="myInteresting" items="${allInteresting}"/>
最終結果如圖所示:
對于Map類型的Collection來說,key值為標簽的value值,value值為標簽的label值,但是需要注意HashMap是亂序的
Radiobutton的語法如下:
<form:radiobutton path="domain屬性名" label=”顯示的值” value=”值”/>
通常有多個,然后若后臺傳來的domain屬性名的值跟其中一個value的值相同,則為選中。
Radiobuttons的語法如下:
<form:radiobuttons path="domain屬性值" items="${傳入的Collection}"/>
其規則同checkboxes。如果后臺傳來的的domain屬性名的值跟items集合中的其中一個value的值相同,則為選中。后臺代碼:
@RequestMapping("/detail/{id}") public ModelAndView detail(@PathVariable int id){ List<String> cities=new ArrayList<String>(); cities.add("北京"); cities.add("上海"); cities.add("廣州"); cities.add("深圳"); String city="深圳"; UserService userService=new UserService(); User user=userService.getUserById(id); user.setCity(city); user.setGender(true); ModelAndView mv=new ModelAndView(); mv.addObject("cities", cities); mv.addObject("user", user); mv.setViewName("detail"); return mv; }
前臺代碼如下:
<tr> <td>性別:</td> <td> <form:radiobutton path="gender" value="true" label="男"/> <form:radiobutton path="gender" value="false" label="女"/> </td> </tr> <tr> <td>所在城市1</td> <td> <form:radiobuttons path="city" items="${cities}"/><br/> </td> </tr>
最終結果如圖所示:
語法格式如下:
<form:select path="domain的屬性名"> <form:option value=”值”>顯示的值</option> <form:options items="${Collections變量}"/> </form:select>
其中items的使用同前。
前臺代碼同前,后臺代碼如下:
<tr> <td>所在城市2</td> <td> <form:select path="city"> <option>請選擇城市</option> <form:option value="北京">北京</form:option> <form:option value="上海">上海</form:option> <form:option value="廣州">廣州</form:option> <form:option value="深圳">深圳</form:option> </form:select> </td> </tr> <tr> <td>所在城市3</td> <td> <form:select path="city"> <option>請選擇城市</option> <form:options items="${cities}"/> </form:select> </td> </tr>
效果如圖所示:
感謝各位的閱讀,以上就是“SpringMVC表單標簽怎么使用”的內容了,經過本文的學習后,相信大家對SpringMVC表單標簽怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。