checkbox標籤java
這個標籤生成一個「checkbox」類型的HTML「input」標籤。spring
讓咱們假設咱們的User有好比新聞訂閱和其餘一組業餘愛好這樣的偏好。下面就是一個Preferences類的例子:服務器
public class Preferences {jsp private boolean receiveNewsletter;ui private String[] interests;this private String favouriteWord;spa public boolean isReceiveNewsletter() {rest return receiveNewsletter;orm }對象 public void setReceiveNewsletter(boolean receiveNewsletter) { this.receiveNewsletter = receiveNewsletter; } public String[] getInterests() { return interests; } public void setInterests(String[] interests) { this.interests = interests; } public String getFavouriteWord() { return favouriteWord; } public void setFavouriteWord(String favouriteWord) { this.favouriteWord = favouriteWord; } } |
form.jsp以下:
<form:form> <table> <tr> <td>Subscribe to newsletter?:</td> <%-- Approach 1: Property is of type java.lang.Boolean --%> <td><form:checkbox path="preferences.receiveNewsletter"/></td> </tr> <tr> <td>Interests:</td> <td> <%-- Approach 2: Property is of an array or of type java.util.Collection --%> Quidditch: <form:checkbox path="preferences.interests" value="Quidditch"/> Herbology: <form:checkbox path="preferences.interests" value="Herbology"/> Defence Against the Dark Arts: <form:checkbox path="preferences.interests" value="Defence Against the Dark Arts"/> </td> </tr> <tr> <td>Favourite Word:</td> <td> <%-- Approach 3: Property is of type java.lang.Object --%> Magic: <form:checkbox path="preferences.favouriteWord" value="Magic"/> </td> </tr> </table> </form:form> |
有三種checkbox標籤的使用方法知足你對checkbox的需求。
· 第一種用法:若綁定值是java.lang.Boolean類型,則值爲true時,input(checkbox)就標記爲選中。其value屬性對應於setValue(Object)值的屬性的解析值。
· 第二種用法:若綁定值是array或java.util.Collection類型,則當設定的setValue(Object)值出如今綁定的Collection中時,input(checkbox)就標記爲選中。
· 第三種用法:若綁定值爲其餘類型,則當設定的setValue(Object)與其綁定值相等時,input(checkbox)才標記爲選中。
注意,無論使用哪一種方法,生成的HTML結構都是相同的。
下面是包含一些checkbox的HTML片斷:
<tr> <td>Interests:</td> <td> Quidditch: <input name="preferences.interests" type="spring.framework.eckbox" value="Quidditch"/> <input type="hidden" value="1" name="_preferences.interests"/> Herbology: <input name="preferences.interests" type="spring.framework.eckbox" value="Herbology"/> <input type="hidden" value="1" name="_preferences.interests"/> Defence Against the Dark Arts: <input name="preferences.interests" type="spring.framework.eckbox" value="Defence Against the Dark Arts"/> <input type="hidden" value="1" name="_preferences.interests"/> </td> </tr> |
也許沒有注意到的是在每一個checkbox背後還隱藏了其餘字段(field)。當一個HTML頁面中的checkbox沒有被選中時,它的值不會在表單提交時做爲HTTP請求參數的一部分發送到服務器端,所以咱們須要給這個HTML的奇怪動做想出一個變通方案,來讓Spring的表單數據綁定能夠工做。checkbox標籤遵循了Spring現有的慣例,就是對於每一個checkbox都包含了一個下劃線("_"),再跟上一個隱藏參數。這樣一來,就至關於告訴Spring「這個checkbox在表單中是可見的,而且但願表單數據將要被綁定到的對象可以反映出任意的checkbox的狀態」。
checkboxes 標籤
這個標籤生成多個「checkbox」類型的HTML「input」標籤。
這一節創建在上一節checkbox標籤的例子之上。有時傾向於並不在JSP頁面中列出所有可能的業餘愛好,而是想在運行時提供一個可用選項的清單,並把它傳遞給相應標籤。這就是checkboxes標籤的目標。傳入一個Array、List,或者Map,並把可用選項包含在「items」屬性中。典型的狀況是,這個綁定的屬性是一個集合,這樣它才能持有用戶選擇的多個值。下面是使用了這個標籤的JSP的一個例子:
<form:form> <table> <tr> <td>Interests:</td> <td> <%-- Property is of an array or of type java.util.Collection --%> <form:checkboxespath="preferences.interests"items="${interestList}"/> </td> </tr> </table> </form:form> |
這個例子假定了「interestList」是一個List,做爲模型屬性它包含了用於被選擇的字符串的值。而在使用一個Map的狀況下,map條目的鍵被用做值,map條目的值被用做顯示的文本標記。也可使用一個定製的對象,提供「itemValue」屬性存放值,「itemLabel」屬性存放文本標記。