Struts2的表单标签

本文记录Java学习过程中遇到的Struts2的表单标签~

Struts2的表单标签用来向服务器提交用户输入的信息,绝大多数的表单标签都有其对应的HTML标签,通过表单标签可以简化表单开发,还可以实现HTML中难以实现的功能。

表单标签的公共属性

Struts2的表单标签用来向服务器提交用户输入信息,在org.apache.struts2.components包中都有一个对应类,所有表单标签对应的类都继承自UIBean类。UIBean类提供了一组公共属性,这些属性是完全通用的。具体如下:

需要注意的是,表单标签的name和value属性基本等同于HTML组件的name和value,但是也有些不同的地方:表单标签在生成HTML的时候,如果标签没有设置value属性的话,就会从值栈中按照name获取相应的值,把这个值设置成的HTML组件的value。简单的说,就是表单标签的value在生成HTML的时候会自动设置值,其值从值栈中获取。

<s:form>标签

<s:form>标签用来呈现HTML语言中的表单元素,其常用属性如下:

  • action:非必需属性,String类型,指定提交时对应的Action,不需要.action后缀;
  • enctype:非必需属性,String类型,对应HTML表单enctype属性;
  • method:非必需属性,String类型,对应HTML表单method属性;
  • namespace:非必需属性,String类型,所提交Action的命名空间。

在使用<s:form>标签时,一般会包含其他的表单元素,如textfild和radio等标签,通过这些表单元素对应的name属性,在提交表单时,将其作为参数传入Struts2框架进行处理。

<s:submit>标签

<s:submit>标签主要用于产生HTML中的提交按钮。该表单元素中,可以指定提交时的Action对应的方法。通常与<s:form>标签一起使用,该标签的常用属性如下:

  • action:非必需属性,String类型,指定提交时对应的Action;
  • method:非必需属性,String类型,指定Action中调用的方法。

<s:textfield>和<s:textarea>标签

<s:textfield>和<s:textarea>标签的作用比较相似,都用于创建文本框,区别在于<s:textfield>创建的是单行文本框,而<s:textarea>创建的是多行文本框。二者使用也比较简单,一般指定其label和name属性即可。

示例代码:

<s:textfield label="用户名" name="username"/>
<s:textarea label="描述" name="description"/>

name属性用来指定单行/多行文本框的名称,在Action中,通过该属性获取单行/多行文本框的值。其value属性用来指定单行/多行文本框的当前值。

此外,<textarea>标签可以通过使用cols和rows属性分别指定多行文本框的列数和行数。

<s:password>标签

<s:password>标签用于创建一个密码输入框,它可以生产HTML中的<input type="password"/>标签,常用在登录表单中输入用户的登录密码。<s:password>标签的常用属性如下:

name:用于指定密码输入框的名称;
size:用于限定密码输入框的显示宽度,以字符数为单位;
maxlength:用于限定密码输入框的最大输入字符串个数;
showPassword:是否显示初始值,即使显示也仍为密文显示,用*遮挡。

示例代码:

<s:password label="password" name="password" maxlength="15"/>

需要注意的是<s:password>标签与HTML中的<input type="password"/>标签有些不同:<input type="password"/>标签只要设置value属性就可以将value属性的值作为默认显示值;而Struts2的<s:password>标签除了要设置value属性,还要设置showPassword属性为true。

<s:radio>标签

<s:radio>标签用于创建单选按钮,生产HTML中的<input type="radio"/>标签。<s:radio>标签常用属性如下:

  • list:必需属性,类型可以是:Collection、Map、Enmumeration、Iterator、Array等,用于生成单选框中的集合;
  • listKey:非必需属性,String类型,指定集合对象中的哪个属性作为选项的value;
  • listValue:非必需属性,String类型,指定集合对象中的哪个属性作为选项的内容。

这三个属性必须要配合使用,由list属性指定从集合中获得元素,由listKey属性指定获得元素之后使用元素的哪个属性作为生成<input type="radio"/>的value属性,由listValue属性指定生产的<input type="radio"/>后给用户看的文字。

<s:checkboxlist>标签

<s:checkboxlist>标签用于一次性创建多个复选框,用户可以选择创建零个到多个,它用来产生一组<input type="checkbox"/>标签,这个标签的常用属性如下:

  • Name:非必需属性,String类型,指定该元素的name;
  • List:必需属性,类型可以是Collection、Map、Enmumeration、Iterator、Array等,用于生成多选框的集合;
  • listKey:非必需属性,String类型,生成checkbox的value属性;
  • listValue:非必需属性,String类型,生成checkbox后面显示的文字。

需要注意的是,listKey和listValue属性主要用在集合中,其中存放的是JavaBean,可以使用这两个从JavaBean众多属性中筛选需要的值。

示例代码:

<s:checkboxlist label="爱好" name="interesters" list="{'足球','篮球','游泳'}" labelposition="left"/>
<s:checkboxlist label="课程" name="class" list="#{'a':'语文','b':'数学','c':'外语'}" labelposition="left" listKey="key" listValue="value"/>

<s:select>标签

<s:select>标签用于创建一个下拉列表框,生成HTML中的<select>标签。该标签常用的属性如下:

  • list:必需属性,类型可以是Collection、Map、Enmumeration、Iterator、Array等,用于生成下拉框的集合;
  • listKey:非必需属性,String类型,生成选项的value属性;
  • listValue:非必需属性,String类型,生成选项的显示文字;
  • headerKey:非必需属性,String类型,在所有的选项前再加额外的一个选项作为其标题的value值;
  • headerValue:非必需属性,String类型,显示在页面中header选项的内容;
  • Multiple:非必需属性,Boolean类型,指定是否多选,默认为false;
  • emptyOption:非必需属性,Boolean类型,是否在标题和真实的选项之间加一个空选项;
  • Size:非必需属性,Integer类型,下拉框的高度,即最多可以同时显示多少个选项。

在表中,headerKey和headerValue属性需要同时使用,可以在所有的真实选项之前加一项作为标题项。比如,选择省份的时候,可以在所有的具体省份之前加一项“请选择”,这个项不作为备选的值。

multiple属性和size属性类似于HTML的<select>标签,size属性可以让下拉框同时显示多个值,multiple属性让用户同时选择多个值,只是在后台的Action接收下拉框值的时候,不能使用String类型,而应该使用String[]或者List<String>。

<s:hidden>标签

<s:hieedn>标签用于创建隐藏表单元素,生成HTML中的隐藏域标签<input type="hidden">。该标签在页面上没有任何显示,可以保存或交换数据。其使用也比较简单,通常只设置其name和value属性即可。

示例代码:

<s:hidden name="id" value="%{id}"/>

该标签主要是需要提交的表单传值的时候使用,比如需要提交表单时,要传一个值到请求参数中去,就可以使用该标签。

<s:reset>标签

<s:reset>标签用来创建一个重置按钮,会生成HTML中的<input type="reset"/>标签,该标签的使用比较简单,其常用属性为name和value。其中,name属性用于指定重置按钮的名称,在Action中,可以通过name属性来获取重置按钮的值,value属性用来显示按钮的值。

示例代码:

<s:reset value="reset"/>
<s:reset value="reset" value="重置"/>

标签: none