javascript
Spring MVC:表单处理卷。 2 –复选框处理
 很難想象現代Web應用程序中沒有表單復選框的情況。 在之前的一篇文章中,我寫了有關Spring MVC中的表單處理的文章 ,作為本系列文章的續篇,我將寫有關Spring MVC表單的文章,尤其是關于復選框處理的文章 。 這篇文章將介紹標簽的標準用法。 在以下情況下,我將檢查復選框標記用法的三種情況: 
- Chekbox是布爾值
- Chekbox是一個字符串值
- 復選框組代表字符串數組
因此,您可以看到這三點很簡單,但是需要開發人員方面的注意。 下面,我將描述如何實現這些情況,您可以在文章末尾下載源代碼。
復選框:布爾值
對于第一種情況,我將使用以下域模型:
public class Hobby {private boolean hobbyExists;public boolean isHobbyExists() {return hobbyExists;}public void setHobbyExists(boolean hobbyExists) {this.hobbyExists = hobbyExists;}}此類不需要任何解釋,因為它是帶有getter和setter的簡單bean。 現在,我可以向您展示這種情況的視圖:
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> ... <h1>Hobby page</h1> <form:form method="POST" commandname="hobby" action="hobby-result.html"> <table><tbody><tr><td>Is any hobby: </td><td><form:checkbox path="hobbyExists"></form:checkbox></td></tr><tr><td colspan="2"><input value="Submit" type="submit"></td></tr> </tbody></table> </form:form> ...注意,使用Spring表單標簽意味著導入了適當的標簽庫。 復選框標簽包含與域模型的屬性相對應的屬性路徑 。 結果將顯示在另一頁上:
... <h1>Hobby result page</h1> Is any hobby? - ${hobby.hobbyExists} <br /> ...最后,我需要為所有這些東西聲明一個控制器:
@Controller public class HobbyController {@RequestMapping(value="/hobby-page")public ModelAndView hobbyFormPage() {return new ModelAndView("hobby-form", "hobby", new Hobby());}@RequestMapping(value="/hobby-result")public ModelAndView processHobby(@ModelAttribute Hobby hobby) {ModelAndView modelAndView = new ModelAndView("hobby-result");modelAndView.addObject("hobby", hobby);return modelAndView;}}復選框:字符串
第二種情況將通過以下域模型進行解釋:
public class JobOffer {private String parking;public String getParking() {return parking;}public void setParking(String parking) {this.parking = parking;}}這種情況的觀點與前一種觀點略有不同:
... <h1>Job Offer page</h1><form:form method="POST" commandname="job" action="job-result.html"><table><tbody><tr><td>Job with parking? - </td><td><form:checkbox path="parking" value="parking" /></td></tr><tr><td colspan="2"><input type="submit" value="Submit" /></td></tr></tbody></table> </form:form> ... 注意,新屬性出現在復選框標簽中。 value屬性表示域模型中的字符串屬性。 
 結果將顯示在另一頁上: 
這個例子的控制器:
@Controller public class JobController {@RequestMapping(value="/job-page")public ModelAndView jobOfferPage() { return new ModelAndView("job-form", "job", new JobOffer());}@RequestMapping(value="/job-result")public ModelAndView processJob(@ModelAttribute JobOffer jobOffer) {ModelAndView modelAndView = new ModelAndView("job-result");modelAndView.addObject("job", jobOffer);return modelAndView;} }復選框:字符串數組
本教程的最后一種情況將描述如何將字符串數組綁定到域模型中的屬性。 以相同的方式,您可以綁定java.util.Collection的值。 因此,域模型將如下所示:
public class Food {private String[] favoriteFruit;public String[] getFavoriteFruit() {return favoriteFruit;}public void setFavoriteFruit(String[] favoriteFruit) {this.favoriteFruit = favoriteFruit;} }具有以下形式的頁面:
... <h1>Fruit page</h1><form:form method="POST" commandname="food" action="food-result.html"><table><tbody><tr><td>Apple </td><td><form:checkbox path="favoriteFruit" value="apple" /></td></tr><tr><td>Orange </td><td><form:checkbox path="favoriteFruit" value="orange" /></td></tr><tr><td>Banana </td><td><form:checkbox path="favoriteFruit" value="banana" /></td></tr><tr><td colspan="2"><input type="submit" value="Submit" /></td></tr></tbody></table> </form:form> ... 在處理過程中,復選框標記中的值將傳遞到字符串數組。 
 結果頁面: 
最后一種情況的控制器:
@Controller public class FoodController {@RequestMapping(value="/food-page")public ModelAndView foodPage() { return new ModelAndView("food-form", "food", new Food());}@RequestMapping(value="/food-result")public ModelAndView processFuits(@ModelAttribute Food food) {ModelAndView modelAndView = new ModelAndView("food-result");modelAndView.addObject("food", food);return modelAndView;}}復選框標簽功能
呈現帶有表單的頁面時,您可以打開其源代碼,并看到類似以下內容的內容:
... <input id="favoriteFruit1" name="favoriteFruit" type="checkbox" value="apple" /> <input type="hidden" name="_favoriteFruit" value="on" /> ...奇怪,附加輸入從哪里出現? 官方文檔解釋了這一事實:
如果未選中HTML頁面中的復選框,則在提交表單后,其值將不會作為HTTP請求參數的一部分發送到服務器,因此我們需要針對HTML中的這個問題的變通辦法,以便進行Spring表單數據綁定上班。 checkbox標記遵循現有的Spring約定,其中為每個復選框包括一個帶有下劃線(_)前綴的隱藏參數。 通過這樣做,您可以有效地告訴Spring:“該復選框在表單中可見,并且我希望與表單數據綁定到的我的對象無論如何都將反映該復選框的狀態”。
摘要
 本文為您提供了有關復選框標記用法的高級概述,但這只是基礎。 在最近的文章中,我將向您展示Spring MVC中復選框使用的更多有趣情況。 您可以單擊鏈接下載整個應用程序的源代碼。 
翻譯自: https://www.javacodegeeks.com/2013/05/spring-mvc-form-handling-vol-2-checkbox-processing.html
總結
以上是生活随笔為你收集整理的Spring MVC:表单处理卷。 2 –复选框处理的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 农行债市宝如何赚钱?
- 下一篇: 通过Spring Social发推Sta
