您的位置:首页 > 编程语言 > Java开发

SpringMVC表单标签(2)

2015-08-13 11:01 381 查看
1.2 input标签

SpringMVC的input标签会被渲染为一个type为text的普通Html
input标签。使用SpringMVC的input标签的唯一作用就是它能绑定表单数据。SpringMVC表单标签最大的好处就是它支持数据绑定,当我们的表单标签不需要绑定的数据的时候,我们应该使用普通的Html标签。关于input标签绑定表单数据的方法已经在介绍form标签的时候顺带介绍过了,这里就不再过多的赘述了。

Jsp代码 

<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>
<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标签会被渲染为一个type为hidden的普通Html input标签。用法跟input标签一样,也能绑定表单数据,只是它生成的是一个隐藏域。

1.4 checkbox标签

checkbox标签会被渲染为一个type为checkbox的普通HTML input标签。checkbox标签也是支持绑定数据的。我们知道checkbox就是一个复选框,有选中和不选中两种状态,那么我们在使用checkbox标签的时候是如何来设定它的状态的呢?checkbox标签的选中与否状态是根据它绑定的值来判断的。

1.4.1 绑定boolean数据

当checkbox绑定的是一个boolean数据的时候,那么checkbox的状态跟该boolean数据的状态是一样的,即true对应选中,false对应不选中。

Jsp代码 

<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>
<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属性为true则Male那一栏的复选框将会被选中。

1.4.2 绑定列表数据

这里的列表数据包括数组、List和Set。下面将以List为例讲一下checkbox是如何根据绑定的列表数据来设定选中状态的。现在假设有一个类User,其有一个类型为List的属性roles,如下所示:

Java代码 

publicclass User
{
 
private List<String> roles;
 
public List<String> getRoles() {
return roles;
}
 
publicvoid setRoles(List<String>
roles) {
this.roles = roles;
}
}
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代码 

<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>
<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结果跟当前checkbox的value进行比较,如果能够进行匹配则该checkbox将为选中状态。看这样一个例子,有一个User类代码如下:

Java代码 

publicclass User
{
 
private Blog blog;
 
public Blog getBlog() {
return blog;
}
 
publicvoid setBlog(Blog
blog) {
this.blog = blog;
}
}
public class User {

 

    private Blog blog;

  

    public Blog getBlog() {

       return blog;

    }

 

    public void setBlog(Blog blog) {

       this.blog = blog;

    }

}

Blog类的代码如下:

Java代码 

publicclass Blog
{
 
public String toString() {
return"HelloWorld";
}
 
}
public class Blog {

 

    public String toString() {

       return "HelloWorld";

    }

 

}

我们可以看到Blog类的toString方法已经被写死为“HelloWorld”了。这个时候假设我们往ModelMap中放了一个user对象,而且给该user对象设定了一个blog属性,那么当我们使用该ModelMap对象渲染如下视图代码时,checkbox标签的选中状态是怎样的呢?根据前面描述的当checkbox标签绑定的是一个Object对象的时候我们会拿该Object对象的toString和checkbox的value值进行比较,如果匹配则当前checkbox为选中状态,我们知道这里的checkbox将为选中状态。

Jsp代码 

<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>
<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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息