SpringMVC学习笔记(5)-----标签库

来源:互联网 发布:市场上主流单片机 编辑:程序博客网 时间:2024/06/06 05:34

文本框

<form:input path="XXX" />会被解析成:<input id="XXX" name="XXX" type="text" value=""/>
这里写图片描述

密码处理

<form:password path="XXX" />会被解析成:<input id="XXX" name="XXX" type="password" value=""/>
这里写图片描述

文本域

<form:textarea path="XXX" rows="5" cols="30"/>会被解析成:<textarea id="XXX" name="XXX" rows="5" cols="30"/>
这里写图片描述

复选框

有三种checkbox标签的使用方法满足你对checkbox的需求。

第一种用法:若绑定值是java.lang.Boolean类型,则值为true时,input(checkbox)就标记为选中。其value属性对应于setValue(Object)值的属性的解析值。

<form:checkbox path="XXX"/>

第二种用法:若绑定值是array或java.util.Collection类型,则当设定的setValue(Object)值出现在绑定的Collection中时,input(checkbox)就标记为选中。

<form:checkbox path="XXX" value="A"/>
<form:checkbox path="XXX" value="B"/>
<form:checkbox path="XXX" value="C"/>

第三种用法:若绑定值为其他类型,则当设定的setValue(Object)与其绑定值相等时,input(checkbox)才标记为选中。

<form:checkbox path="XXX" value="DDD"/>

这里写图片描述

三种方法的CheckBox生成的HTML语句都是一样的。

<form:checkbox path="XXX" />会被解析成:

<input id="XXX1" name="XXX" type="checkbox" value="true"/><input type="hidden" name="_XXX" value="on"/>

对于每个checkbox都包含了一个下划线(”_”),再跟上一个隐藏参数。这样一来,就相当于告诉Spring“这个checkbox在表单中是可见的,并且希望表单数据将要被绑定到的对象能够反映出任意的checkbox的状态”。

复选框(多选)

(1)控制器中增加一个列表项,用@ModelAttribute注释

  @ModelAttribute("likeSportsList")  public List<String> getLikeSportsList() {    List<String> list = new ArrayList<String>();    list.add("足球");    list.add("篮球");    list.add("排球");    list.add("乒乓球");    list.add("羽毛球");    return list;  }

(2)JSP页面中使用如下代码:

<tr>    <td><form:label path="likeSports">喜欢的运动</form:label></td>    <td><form:checkboxes items="${likeSportsList}" path="likeSports" /></td></tr>

这里写图片描述

其中items的值与控制器中的列表项的ModelAttribute的value相同。
path要与model(student)中的变量名相同。

(3)在显示页面使用如下代码:

<tr>  <td>喜欢的运动</td>  <td>    <c:forEach var="sport" items="${student.likeSports}">      <c:out value="${sport}" />    </c:forEach>  </td></tr>

PS:JSTL标签可以支持EL表达式,但是JAVA程序片方式不太容易实现获取到EL表达式的值。 有大佬看到会的话,求告知

单选按钮

使用<form:radiobutton path="XXX" value="XXX的值" label="显示的值"/>会被解析成:

<input id="XXX1" name="XXX" type="radio" value="XXX的值" checked="checked"/><label for="XXX1"></label>

这里写图片描述

可以在Controller中的跳转该显示页面的方法中,为其设置默认值,因为有一个已经初始化的student对象,名为command

单选多按钮

(1)首先在控制器中使用@ModelAttribute注释,来注释getXXXList方法,该方法返回一个List。
(2)需要表格的JSP页面中使用<form:radiobuttons path="XXX" items="${XXXList}" />,将会被解析成:

<input id="XXX1" name="XXX" type="radio" value="XXXList的第一个值"/><label for="XXX1">XXXList的第一个只</label><!--List中的剩下选项-->

这里写图片描述

下拉选项(Select)

(1)同样需要一个List作为下拉选项列表的载体。在拦截该URL的控制器中增加一个返回列表的方法,使用@ModelAttribute进行注释。

  @ModelAttribute("countryList")  public List<String> getCountryList() {    List<String> list = new ArrayList<String>();    list.add("华东");    list.add("华中");    list.add("华北");    list.add("华南");    list.add("西南");    return list;  }

(2)在该JSP中使用如下标签:

<form:select path="XXX">    <form:option value="NONE" label="请选择..." />    <form:options items="${XXXList}" /></form:select>

这里写图片描述

以上所有path都是指Model中的变量名,需要一致。

列表多选框(没啥用)

(1)既然是多选框,又要使用List作为多选框的载体。在控制器的增加一个方法返回该list对象。

  @ModelAttribute("skillsList")  public List<String> getSkillsList() {    List<String> list = new ArrayList<String>();    list.add("JAVA");    list.add("C");    list.add("C++");    list.add("Python");    return list;  }

(2)JSP中使用如下标签:

<form:select path="skills" items="${skillsList}" multiple="true"></form:select>

这里写图片描述

隐藏字段域(Hidden)

在上面的checkbox复选框中,SpringMVC标签会被解析成的HTML标签中就含有Hidden字段。具体作用可以查询HTML的Hidden的作用。
使用<form:hidden path="XXX" value="AAA"/>被解析成:<input id="XXX" name="XXX" type="hidden" value="AAA"/>

原创粉丝点击