一篇文章帶你學會Spring?MVC表單標簽

使用Spring MVC提供的表單標簽可以讓JSP視圖方便展示地Model中的數(shù)據,特別適合修改現(xiàn)有記錄數(shù)據的情形,通常進行修改操作時,原有數(shù)據要先展示出來,再供用戶重新選擇或修改。使用表單標簽能實現(xiàn)數(shù)據綁定,讓表單中的各個表單域中的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 標簽
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 后,調用業(yè)務層,獲取到該 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>
這樣就把后臺控制器方法中創(chuàng)建的對象傳遞過來在前臺展示了。
input 標簽
input標簽,用于展示控制器方法中封裝的基本類型的Model數(shù)據。語法如下:
<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 標簽
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>
checkbox 標簽
該標簽的屬性基本與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 標簽
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 與 radiobuttons 標簽
Radiobutton的語法如下:
<form:radiobutton path="domain屬性名" label=”顯示的值” value=”值”/>
通常有多個,然后若后臺傳來的domain屬性名的值跟其中一個value的值相同,則為選中。
Radiobuttons的語法如下:
<form:radiobuttons path="domain屬性值" items="${傳入的Collection}"/>其規(guī)則同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>最終結果如圖所示:

select 與 option/options 標簽
語法格式如下:
<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>效果如圖所示:

總結
到此這篇關于一篇文章帶你學會Spring MVC表單標簽的文章就介紹到這了,更多相關Spring MVC表單標簽內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解析Springboot集成Tile38客戶端之Set命令實現(xiàn)示例
這篇文章主要為大家介紹了解析Springboot集成Tile38客戶端之Set命令實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08
SpringBoot實現(xiàn)Mysql使用MD5進行密碼加密的示例
這篇文章主要介紹了SpringBoot實現(xiàn)Mysql使用MD5進行密碼加密的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04
Java語言實現(xiàn)簡單FTP軟件 FTP連接管理模塊實現(xiàn)(8)
這篇文章主要為大家詳細介紹了Java語言實現(xiàn)簡單FTP軟件,F(xiàn)TP連接管理模塊的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04

