SpringMVC表單標籤(2)

1.2 input標籤

SpringMVCinput標籤會被渲染爲一個typetext的普通Html input標籤。使用SpringMVCinput標籤的唯一作用就是它能綁定表單數據。SpringMVC表單標籤最大的好處就是它支持數據綁定,當我們的表單標籤不需要綁定的數據的時候,我們應該使用普通的Html標籤。關於input標籤綁定表單數據的方法已經在介紹form標籤的時候順帶介紹過了,這裏就不再過多的贅述了。

Jsp代碼 

  1. <form:form action="formTag/form.do" method="head" modelAttribute="user" methodParam="requestMethod">
  2. <table>
  3. <tr>
  4. <td>Name:</td><td><form:input path="name"/></td>
  5. </tr>
  6. <tr>
  7. <td>Age:</td><td><form:input path="age"/></td>
  8. </tr>
  9. <tr>
  10. <td colspan="2"><input type="submit" value="提交"/></td>
  11. </tr>
  12. </table>
  13. </form:form>

<form:form action="formTag/form.do" method="head" modelAttribute="user" methodParam="requestMethod">

    <table>

        <tr>

            <td>Name:</td><td><form:input path="name"/></td>

        </tr>

        <tr>

            <td>Age:</td><td><form:input path="age"/></td>

        </tr>

        <tr>

            <td colspan="2"><input type="submit" value="提交"/></td>

        </tr>

    </table>

</form:form>

1.3 hidden標籤

hidden標籤會被渲染爲一個typehidden的普通Html input標籤。用法跟input標籤一樣,也能綁定表單數據,只是它生成的是一個隱藏域。

1.4 checkbox標籤

checkbox標籤會被渲染爲一個typecheckbox的普通HTML input標籤。checkbox標籤也是支持綁定數據的。我們知道checkbox就是一個複選框,有選中和不選中兩種狀態,那麼我們在使用checkbox標籤的時候是如何來設定它的狀態的呢?checkbox標籤的選中與否狀態是根據它綁定的值來判斷的。

1.4.1 綁定boolean數據

checkbox綁定的是一個boolean數據的時候,那麼checkbox的狀態跟該boolean數據的狀態是一樣的,即true對應選中,false對應不選中。

Jsp代碼 

  1. <form:form action="formTag/form.do" method="post" commandName="user">
  2. <table>
  3. <tr>
  4. <td>Male:</td><td><form:checkbox path="male"/></td>
  5. </tr>
  6. <tr>
  7. <td colspan="2"><input type="submit" value="提交"/></td>
  8. </tr>
  9. </table>
  10. </form:form>

<form:form action="formTag/form.do" method="post" commandName="user">

    <table>

        <tr>

            <td>Male:</td><td><form:checkbox path="male"/></td>

        </tr>

        <tr>

            <td colspan="2"><input type="submit" value="提交"/></td>

        </tr>

    </table>

</form:form>

看上面這段代碼,這個時候假設我們在渲染該視圖之前往ModelMap中添加了一個user屬性,並且該user對象有一個類型爲boolean的屬性male,那麼這個時候如果male屬性爲trueMale那一欄的複選框將會被選中。

1.4.2 綁定列表數據

這裏的列表數據包括數組、ListSet。下面將以List爲例講一下checkbox是如何根據綁定的列表數據來設定選中狀態的。現在假設有一個類User,其有一個類型爲List的屬性roles,如下所示:

Java代碼 

  1. publicclass User {
  2.  
  3. private List<String> roles;
  4.  
  5. public List<String> getRoles() {
  6. return roles;
  7. }
  8.  
  9. publicvoid setRoles(List<String> roles) {
  10. this.roles = roles;
  11. }
  12. }

public class User {

 

    private List<String> roles;

 

    public List<String> getRoles() {

       return roles;

    }

 

    public void setRoles(List<String> roles) {

       this.roles = roles;

    }

}

那麼當我們需要展現該User是否擁有某一個Role的時候,我們可以使用checkbox標籤來綁定roles數據進行展現。當checkbox標籤的value在我們綁定的列表數據中存在的時候該checkbox將爲選中狀態。來看下面一段代碼:

Jsp代碼 

  1. <form:form action="formTag/form.do" method="post" commandName="user">
  2. <table>
  3. <tr>
  4. <td>Roles:</td>
  5. <td>
  6. <form:checkbox path="roles" value="role1"/>Role1<br/>
  7. <form:checkbox path="roles" value="role2"/>Role2<br/>
  8. <form:checkbox path="roles" value="role3"/>Role3
  9. </td>
  10. </tr>
  11. </table>
  12. </form:form>

<form:form action="formTag/form.do" method="post" commandName="user">

    <table>

        <tr>

            <td>Roles:</td>

            <td>

               <form:checkbox path="roles" value="role1"/>Role1<br/>

               <form:checkbox path="roles" value="role2"/>Role2<br/>

               <form:checkbox path="roles" value="role3"/>Role3

            </td>

        </tr>

    </table>

</form:form>

就上面代碼而言就是當User擁有role1的時候對應的<form:checkbox path="roles" value="role1"/>就會爲選中狀態,也就是說roles列表中包含role1的時候該checkbox就會爲選中狀態。

1.4.3 綁定一個Object數據

checkbox還支持綁定數據類型爲Object的數據,這種情況下Spring會拿所綁定對象數據的toString結果跟當前checkboxvalue進行比較,如果能夠進行匹配則該checkbox將爲選中狀態。看這樣一個例子,有一個User類代碼如下:

Java代碼 

  1. publicclass User {
  2.  
  3. private Blog blog;
  4.  
  5. public Blog getBlog() {
  6. return blog;
  7. }
  8.  
  9. publicvoid setBlog(Blog blog) {
  10. this.blog = blog;
  11. }
  12. }

public class User {

 

    private Blog blog;

  

    public Blog getBlog() {

       return blog;

    }

 

    public void setBlog(Blog blog) {

       this.blog = blog;

    }

}

Blog類的代碼如下:

Java代碼 

  1. publicclass Blog {
  2.  
  3. public String toString() {
  4. return"HelloWorld";
  5. }
  6.  
  7. }

public class Blog {

 

    public String toString() {

       return "HelloWorld";

    }

 

}

我們可以看到Blog類的toString方法已經被寫死爲“HelloWorld”了。這個時候假設我們往ModelMap中放了一個user對象,而且給該user對象設定了一個blog屬性,那麼當我們使用該ModelMap對象渲染如下視圖代碼時,checkbox標籤的選中狀態是怎樣的呢?根據前面描述的當checkbox標籤綁定的是一個Object對象的時候我們會拿該Object對象的toStringcheckboxvalue值進行比較,如果匹配則當前checkbox爲選中狀態,我們知道這裏的checkbox將爲選中狀態。

Jsp代碼 

  1. <form:form action="formTag/form.do" method="post" commandName="user">
  2. <table>
  3. <tr>
  4. <td>HelloWorld:</td>
  5. <td>
  6. <form:checkbox path="blog" value="HelloWorld"/>
  7. </td>
  8. </tr>
  9. <tr>
  10. <td colspan="2"><input type="submit" value="提交"/></td>
  11. </tr>
  12. </table>
  13. </form:form>

<form:form action="formTag/form.do" method="post" commandName="user">

    <table>

        <tr>

            <td>HelloWorld:</td>

            <td>

               <form:checkbox path="blog" value="HelloWorld"/>

            </td>

        </tr>

        <tr>

            <td colspan="2"><input type="submit" value="提交"/></td>

        </tr>

    </table>

</form:form>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章