Spring MVC 標籤之checkbox與checkboxes

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)值的屬性的解析值。

·        第二種用法:若綁定值是arrayjava.util.Collection類型,則當設定的setValue(Object)值出如今綁定的Collection中時,input(checkbox)就標記爲選中。

·        第三種用法:若綁定值爲其餘類型,則當設定的setValue(Object)與其綁定值相等時,input(checkbox)才標記爲選中。

 

注意,無論使用哪一種方法,生成的HTML結構都是相同的。

下面是包含一些checkboxHTML片斷:

<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標籤的目標。傳入一個ArrayList,或者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」屬性存放文本標記。

相關文章
相關標籤/搜索