Struts2讲义21(转载)

5.5  Struts2 表单标签简介

如果有对 HTML 比较熟悉的读者,肯定知道诸如 select chekbox 这些 HTML 标签的使用方式。这些标签其实是可以归类为表单标签。在 Struts2 中除了这些基本的 HTML 标签的定义外,它还定义了许多特殊的但又基于前述这些 HTML 表单标签的个性化标签。这些表单标签各具特色,是很值得介绍的。在开发中负责 view 层功能开发的开发人员如果使用这些标签,就能发现 Struts2 提供了多么丰富的 view 层功能。

5.5.1   基础表单标签使用介绍

技术要点

本节代码具体介绍各个基础表单标签的使用方式。这些标签其实都可以用 HTML 的表单标签来实现。读者可以了解 Struts2 的这部分表单标签和原有 HTML 表单标签实现功能几乎是相同的。

基础表单标签使用。

基础表单标签功能演示。

演示代码

基础表单标签的 JSP 文件:

Java代码 Struts2讲义21(转载)
  1. <!------------------文件名:basicFormTag.jsp--------------->   
  2. <%@ page language="java" contentType="text/html; charset=gb2312"   pageEncoding="gb2312"%>   
  3. <%@ taglib prefix="s" uri="/struts-tags"%>   
  4. ………   
  5.          <body>   
  6.                    <h3 align="left">   
  7.                             基础表单标签使用范例(可使用HTML标签替代)   
  8.                    </h3>   
  9.                    <h3 align="left">   
  10.                             checkbox标签使用范例   
  11.                    </h3>   
  12.                    <p>   
  13.                             <s:checkbox label="别墅" name="bieshu" value="true" />   
  14.                             <s:checkbox label="公寓" name="gongyu" />   
  15.                    </p>   
  16.                    <h3 align="left">   
  17.                             checkboxlist标签使用范例   
  18.                    </h3>   
  19.                    <p>   
  20.                             <s:checkboxlist label="材料" list="{'进户门套油漆', '踢脚线', '大理石', '吊顶'}"  
  21.                                      name="material" />   
  22.                    </p>   
  23.                    <h3 align="left">   
  24.                             file标签使用范例   
  25.                    </h3>   
  26.                    <p>   
  27.                             <s:file name="file" accept="text/*" />   
  28.                             <s:file name="file" accept="image/jpeg"></s:file>   
  29.                    </p>   
  30.                    <h3 align="left">   
  31.                             select标签使用范例   
  32.                    </h3>   
  33.                    <p>   
  34.                             <s:select label="下拉框示例" name="material" headerKey="0" headerValue=" "  
  35.                                      list="#{'01':'进户门套油漆','02':'踢脚线','03':'大理石','04':'吊顶'}" />   
  36.                    </p>   
  37.                    <h3 align="left">   
  38.             optgroup标签使用范例   
  39.         </h3>   
  40.         <p>   
  41.            <s:select label="示例" name="material" headerKey="0" headerValue=" "  
  42.                 list="#{'01':'进户门套油漆','02':'踢脚线','03':'大理石','04':'吊顶'}" >   
  43.                   
  44.   
  45.                 <s:optgroup label="材料品牌"  
  46.   
  47.                 list="#{'01':'多乐士超易洗','02':'绿太阳'}"/>   
  48.   
  49.         </s:select>   
  50.   
  51.         </p>   
  52.   
  53.                    <h3 align="left">   
  54.   
  55.             radio标签使用范例   
  56.   
  57.         </h3>   
  58.   
  59.         <p>   
  60.   
  61.             <s:radio label="材料" list="{'进户门套油漆', '踢脚线', '大理石', '吊顶'}"  
  62.   
  63.                 name="material"/>   
  64.   
  65.         </p>   
  66.   
  67.         <h3 align="left">   
  68.   
  69.             textarea标签使用范例   
  70.   
  71.         </h3>   
  72.   
  73.         <p>   
  74.   
  75.             <s:textarea label="输入文本" labelposition="left" name="textarea" cols="40" rows="10"/>   
  76.   
  77.         </p>   
  78.   
  79.         <h3 align="left">   
  80.   
  81.             textfield标签使用范例   
  82.   
  83.         </h3>   
  84.   
  85.         <p>   
  86.   
  87.             <s:textfield label="输入文本"  name="textfield" size="40" maxlength="10"/>   
  88.   
  89.         </p>   
  90.   
  91.         <h3 align="left">   
  92.   
  93.             password标签使用范例   
  94.   
  95.         </h3>   
  96.   
  97.         <p>   
  98.   
  99.             <s:password label="输入密码"  name="password" size="20" maxlength="8"/>   
  100.   
  101.         </p>   
  102.   
  103.          </body>   
  104.   
  105. </html>  
<!------------------文件名:basicFormTag.jsp--------------->
<%@ page language="java" contentType="text/html; charset=gb2312"   pageEncoding="gb2312"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
………
         <body>
                   <h3 align="left">
                            基础表单标签使用范例(可使用HTML标签替代)
                   </h3>
                   <h3 align="left">
                            checkbox标签使用范例
                   </h3>
                   <p>
                            <s:checkbox label="别墅" name="bieshu" value="true" />
                            <s:checkbox label="公寓" name="gongyu" />
                   </p>
                   <h3 align="left">
                            checkboxlist标签使用范例
                   </h3>
                   <p>
                            <s:checkboxlist label="材料" list="{'进户门套油漆', '踢脚线', '大理石', '吊顶'}"
                                     name="material" />
                   </p>
                   <h3 align="left">
                            file标签使用范例
                   </h3>
                   <p>
                            <s:file name="file" accept="text/*" />
                            <s:file name="file" accept="image/jpeg"></s:file>
                   </p>
                   <h3 align="left">
                            select标签使用范例
                   </h3>
                   <p>
                            <s:select label="下拉框示例" name="material" headerKey="0" headerValue=" "
                                     list="#{'01':'进户门套油漆','02':'踢脚线','03':'大理石','04':'吊顶'}" />
                   </p>
                   <h3 align="left">
            optgroup标签使用范例
        </h3>
        <p>
           <s:select label="示例" name="material" headerKey="0" headerValue=" "
                list="#{'01':'进户门套油漆','02':'踢脚线','03':'大理石','04':'吊顶'}" >
               

                <s:optgroup label="材料品牌"

                list="#{'01':'多乐士超易洗','02':'绿太阳'}"/>

        </s:select>

        </p>

                   <h3 align="left">

            radio标签使用范例

        </h3>

        <p>

            <s:radio label="材料" list="{'进户门套油漆', '踢脚线', '大理石', '吊顶'}"

                name="material"/>

        </p>

        <h3 align="left">

            textarea标签使用范例

        </h3>

        <p>

            <s:textarea label="输入文本" labelposition="left" name="textarea" cols="40" rows="10"/>

        </p>

        <h3 align="left">

            textfield标签使用范例

        </h3>

        <p>

            <s:textfield label="输入文本"  name="textfield" size="40" maxlength="10"/>

        </p>

        <h3 align="left">

            password标签使用范例

        </h3>

        <p>

            <s:password label="输入密码"  name="password" size="20" maxlength="8"/>

        </p>

         </body>

</html>

 

 

功能演示如图 5.18 和图 5.19

Struts2讲义21(转载)

 

5.18  基础表单标签范例图 1

Struts2讲义21(转载)

 

5.19  基础表单标签范例图 2

代码解释

1 checkbox 标签的功能是显示一个可以让用户选择的复选框。其中 label 属性是显示复选框在页面上的选择项名字。 name 是定义该复选框的名字。而 value 属性则是表示是否选中。其中如果为“ true ”则表示被选中,在页面上该复选框中则会以“√”显示。反之则复选框中为空。

2 checkboxlist 标签的功能是根据一个数据集合来显示多个可以让用户选择的复选框。其中 label 属性是显示复选框在页面上的选择项名字。 List 是来指定数据集合,它实际上是一个 map 类型的数据集合。默认情况下,它的 key 就赋值给 value 属性,它自己的 value 则对应页面上显示的复选框内容。在代码中笔者向读者表示了基本的 checkboxlist 用法。它还有两个可以不写的属性,一个是 listKey ,它指定了集合中哪个属性作为复选框的 value 。另外一个属性为 listValue ,该属性指定集合中哪个属性作为在页面上显示的复选框内容。

3 file 标签 的功能是显示文件上传的输入框。该标签 在前面文件上传下载章节的代码中有过记述。这里重新记述,除了让读者加深理解之外,还向读者记述它的 accept 属性。该属性限定了上传的文件类型,文件类型的表示在前面章节也已说明。如果读者在 file 标签中上传了非 accept 属性指定的文件类型,则表单提交时候会报错。

4 select 标签的功能是提供一个下拉框。其中 list 属性也是指定一个数据集合,以 map list 类型显示。如果是 map 类型,则 key value 可以显示指定为下拉框中每个元素的值。集合中数据就是下拉框中的内容。 headerKey headerValue 属性是表明下拉框缺省显示的值和内容。 listKey listValue 属性则和 checkboxlist 标签中相同,都是表明值和在页面上显示的内容。它还有一个 multiple 属性,代码中笔者没有显示给读者看,它是表明下拉框中内容是否可以多选即同时选中下拉框中多项元素。

5 optgroup 标签的功能是配合 select 标签,在下拉框中显示一个选项组。它在页面上显示和 select 标签相同。所不同的是下拉框中选择内容的显示。读者请看图 5.20 5.21

Struts2讲义21(转载)

 

5.20  select 标签下拉框内容

Struts2讲义21(转载)

 

5.21  select optgroup 标签联合使用中下拉框内容

它的 list 属性其实就是指定了选择组中的内容。在该示例中就是显示了“材料品牌”这个选项组。选中“材料品牌”即表明下面两个品牌内容都被选中。

6 radio 标签 的功能是显示一个单选框。它的属性和 checkboxlist 标签属性相同。

7 textarea 标签的功能是显示一个文本输入框。它的 label name 属性和之前标签属性相同。它还有 rows cols 两个属性,这两个属性表示该文本输入框的行数和每行允许显示字数多少。

8 textfield 标签的功能是显示一个单行文本输入框。在之前章节有很多代码示例。这里就不多记述了。

9 password 标签的功能是显示一个输入密码的文本输入框。它输入的文字都不会显式的显示在页面上。而是用“●”来显示。