javascript
Spring MVC:表单处理卷。 3 –复选框处理
我已經發布了有關使用Spring MVC標簽庫處理'checkbox'標簽的帖子。 現在,我要開發此主題并繼續使用“復選框”標簽。 它并不難,但是在某些情況下,您最好使用它。 在本文中,我將結合java.util.List和java.util.Map提供Spring'checkboxes'標記的示例,因此準備研究兩個示例。
在開始演示示例之前,我想談談“復選框”標簽的用途。 那么什么時候應該使用它呢? 如果要在運行時中生成復選框,答案很明顯
您必須使用“復選框”標簽。 這將幫助您避免JSP中的硬編碼值。 'checkboxes'標簽可以與數組和java.util.Collection一起使用。 進一步,我將研究List和Map的兩種情況。
列表和“復選框”標簽
第一個示例將與列表一起使用。 與上一篇文章一樣,我必須創建一個POJO并使用適當的getter和setter方法在其中聲明所需的List屬性。
public class FootballTeams {private List teamsList;public List getTeamsList() { return teamsList; }public void setTeamsList(List teamsList) { this.teamsList = teamsList; }}創建域模型后,我應該使用兩種方法開發控制器-一種用于在帶有復選框的頁面上導航,另一種用于處理復選框。
@Controller public class FootballController {@RequestMapping(value="/football-page") private ModelAndView footballPage() { ModelAndView mav = new ModelAndView("football-form");List teams = new ArrayList(); teams.add("Bavaria Munich"); teams.add("Borussia Dortmund"); teams.add("Real Madrid"); teams.add("Barcelona");mav.addObject("teamsList", teams); mav.addObject("footballTeams", new FootballTeams());return mav; }@RequestMapping(value="/football-result") private ModelAndView processTeams(@ModelAttribute FootballTeams footballTeams) { ModelAndView mav = new ModelAndView("football-result"); mav.addObject("footballTeams", footballTeams); return mav; }}請注意,在footballPage()方法中,我創建了球隊列表,然后將其添加到模型中。 第二種方法不包含任何特殊內容,因此我不想考慮它。 現在,讓我們檢查一下視圖片段:
... <h1>Football page</h1> <form:form method="POST" commandname="footballTeams" action="football-result.html"> <table><tbody><tr><td> <ul> <form:checkboxes element="li" path="teamsList" items="${teamsList}"> </form:checkboxes></ul></td></tr><tr><td><input value="Submit" type="submit"></td></tr> </tbody></table> </form:form> ... 在這里,我需要暫停一下,并說明發生了什么。 在“復選框”標簽中,我指定了路徑屬性。 該屬性的值對應于FootballTeams類的適當字段。 items屬性包含列表的值,該值是我在控制器的footballPage()方法中生成的。
最后一個視圖:
在這里,我僅介紹上一頁中選擇的項目。 請注意,復選框的標簽和值與列表中指定的相同。 如果要為一個復選框使用不同的值和標簽,則必須使用java.util.Map。
地圖和“復選框”標簽
第二個示例將與地圖一起使用。 因此,如您所愿,我將展示如何為相同的復選框使用不同的值和標簽。 本節的結構與上一部分相同,所以讓我們開始吧!
域模型:
public class Tourism {private List countries;public List getCountries() { return countries; }public void setCountries(List countries) { this.countries = countries; }}不要驚慌,您在課堂上沒有看到任何Map字段,稍后您將意識到這一點。
@Controller public class TourismController {@RequestMapping(value="/tourism-page") private ModelAndView tourismPage() { ModelAndView mav = new ModelAndView("tourism-form");Map countries = new HashMap(); countries.put("UKR", "Ukraine"); countries.put("ENG", "England"); countries.put("USA", "United States");mav.addObject("countriesMap", countries); mav.addObject("tourism", new Tourism());return mav; }@RequestMapping(value="/tourism-result") private ModelAndView processTourism(@ModelAttribute Tourism tourism) { ModelAndView mav = new ModelAndView("tourism-result"); mav.addObject("tourism", tourism); return mav; }}此處,在tourismPage()方法中,地圖出現在場景中。
... <h1>Tourism page</h1> <form:form method="POST" commandname="tourism" action="tourism-result.html"> <table><tbody><tr><td> <ul> <form:checkboxes element="li" path="countries" items="${countriesMap}"> </form:checkboxes></ul></td></tr><tr><td><input value="Submit" type="submit"></td></tr> </tbody></table> </form:form> ...Map的鍵將用作復選框的值,而Map的值將用作復選框的標簽。
... <h1>Tourism result page</h1> Selected countries: <br> <c:foreach var="country" items="${tourism.countries}"> ${country}<br> </c:foreach> ...現在該解釋一下,為什么“旅游”課程中沒有“地圖”字段。 如您所見,結果頁面上僅顯示Map的鍵。 因此,鍵值對不會傳遞給模型。
摘要
在本教程中,您可以得出結論,“ checkboxes”標記更適合使用。 Spring MVC是一個非常靈活的框架,它為某些任務提供了某些工具。 根據目標使用地圖或列表。 您可以在GitHub上查看源代碼。
翻譯自: https://www.javacodegeeks.com/2013/05/spring-mvc-form-handling-vol-3-checkboxes-processing.html
總結
以上是生活随笔為你收集整理的Spring MVC:表单处理卷。 3 –复选框处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (linux $date)
- 下一篇: 使用Java WebSockets,JS