Struts2--表单标签

Struts2 的表单标签用于向服务器提交用户输入的信息,绝大多数的表单标签都有其对应的 HTML 标签。

表单标签的公共属性

每一个表单标签在 Struts2 核心 JAR 文件的 org.apache.struts2.components 包中都有一个对应的类,这些对应的类都继承自 UIBean 类。

UIBean 类提供了一组公共属性,这些属性是所有表单标签的通用属性,具体如下表所示:

属性名主题数据类型说明
titlesimpleString设置表单元素的 title 属性
disabledsimpleString设置表单元素是否可用
labelxhtmlString设置表单元素的 label 属性
labelPositionxhtmlString设置 label 元素的显示位置,可选值为 top 和 left(默认)
namesimpleString设置表单元素的 name 属性,与 Action 中的属性名对应
valuesimpleString设置表单元素的值
cssClasssimpleString设置表单元素的 class
cssStylesimpleString设置表单元素的 style 属性
requiredxhtmlBoolean设置表单元素为必填项
requiredpositionxhtmlString 设置必填标记(默认为*)相对于 label 元素的位置,可选值为 left 和 right(默认)
tabindexsimpleString设置表单元素的 tabindex 属性

注意: 表单标签的 name 和 value 属性基本等同于 HTML 组件的 name 和 value,但也有所不同:表单标签在生成 HTML 时,如果标签没有设置 value 属性,则会从值栈中按照 name 获取相应的值,并把这个值设置成 HTML 组件的 value。

<s:form>标签

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

属性名是否必填类型说明
actionString指定提交时对应的 action,不需要 action 后缀
enctypeStringHTML 表单 enctype 属性
methodStringHTML 表单 method 属性
namespaceString所提交 action 的命名空间

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

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

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

<s:textfield> 标签的用法:

<s:textfield label="用户名" name="username"/>

<s:textarea> 标签的用法:

<s:textarea label="描述" name="description"/>

在上述两个用法中,name 属性用于指定单行/多行文本框的名称,在 Action 中,通过 name 属性即可获取单行/多行文本框的值。

此外, 标签还可以通过 value 属性指定单行/多行文本框的当前值,通过 cols 和 rows 属性分别指定多行文本框的列数和行数。

<s:passWord>标签

<s:password> 标签用于创建一个密码输入框,它可以生成 HTML 中的 标签。<s:password> 标签的常用属性说明如下表所示。

属性名说明
name用于指定密码输入框的名称
size用于指定密码输入框的显示宽度,以字符数为单位
maxlength用于限定密码输入框的最大输入字符串个数
showPassword是否显示初始值,即使显示也仍为密文显示,用掩码代替

<s:password> 标签的使用方法如下所示:

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

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

<s:radio>标签

<s:radio> 标签用于创建单选按钮,生成 HTML 中的 标签。<s:radio> 标签的常用属性说明如下表所示。

属性名是否必填类型说明
listCollection,Map Enmumeration,Iterator,Array用于生成单选框中的集合
listKeyString指定集合对象中的哪个属性作为选项的 value
listValueString指定集合对象中的哪个属性作为选项的内容

表中的三个属性必须要配合使用,由 list 属性指定从集合中获得元素,由 listKey 属性指定获得元素之后使用元素的哪个属性作为生成 的 value 属性,由 listValue 属性指定生成的 后展示给用户的内容。

<s:reset>标签

<s:reset> 标签用于创建一个重置按钮,会生成 HTML 中的 标签,该标签的使用比较简单,其常用属性为 name 和 value。

其中,name 属性用于指定重置按钮的名称,在 Action 中,可以通过 name 属性获取重置按钮的值,value 属性用于显示按钮的值。该标签的用法如下所示:

<s:reset value="reset"/>
<s:reset name="reset" value="重置"/>
<s:submit>标签

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

属性名是否必填类型说明
actionString指定提交时对应的 Action
methodString指定 Action 中调用的方法
示例
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户注册</title>
</head>
<body>
    <s:form action="">
        <s:textfield name="" label="昵称"/>
        <s:textfield name="" label="用户名"/>
        <s:password name="" label="密码"/>
        <s:password name="" label="确认密码"/>
        <s:radio name="" label="性别" list="#{0:'',1:''}" listKey="key" listValue="value" value="0"/>
        <s:textarea label="个性签名" name="" rows="3" cols="17"/>
        <s:reset value="重置"/>
        <s:submit value="注册"/>
    </s:form>
</body>
</html>

效果:
在这里插入图片描述

<s:checkboxlist>标签

<s:checkboxlist> 标签用于一次性创建多个复选框,用户可以选择创建零到多个复选框,它可以产生一组标签。

属性名是否必填类型说明
nameString指定该元素的 name
labelString指定复选框前显示的文本
listlist定义集合变量
listKeyString指定集合对象中的哪个属性作为选项的 value
listValueString指定集合对象中的哪个属性作为选项的内容

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

<s:select>标签

<s:select> 标签用于创建一个下拉列表框,它会生成 HTML 中的 标签。<s:select> 标签的常用属性及其说明如下表所示。

属性名是否必填类型说明
listCollection,Map Enmumeration,Iterator,Array用于生成下拉框的集合
listKeyString生成选项的 value 属性
listValueString生成选项的显示文字
headerKeyString在所有的选项前再添加一个额外的选项作为其标题的 value 值
headerValueString显示在页面中 header 选项的内容
multipleBoolean指定是否多选,默认为 false
emptyOptionBoolean是否在标题和真实的选项之间加一个空选项
sizeInteger下拉框的高度,即最多可以同时显示多少个选项

headerKey 和 headerValue 属性需要同时使用,使用时会在所有的真实选项之前加添一项作为标题项。如选择城市时,可以在所有的具体城市之前添加一项“请选择”,这一项不会作为备选的值。

size 属性可以让下拉框同时显示多个值,multiple 属性让用户同时选择多个值,只是在后台的 Action 接收下拉框值时,不能使用 String 类型,而是使用 String[] 或者 List。

<s:optgroup>标签

<s:optgroup> 标签用于生成选项组,通常作为 <s:select> 标签的子标签使用。由于在一个下拉列表框中可以包含多个选项组,所以 <s:select> 标签也能够包含多个 <s:optgroup> 标签。

使用 <s:optgroup> 标签时,也需要指定该标签的 list、listKey、listValue 等属性,这些属性的含义与 <s:select> 标签的相应属性含义相同。此外,<s:optgroup> 标签的 label 属性表示选项组的组名,选项组的组名是不能被选中的。

示例:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>optgroup标签</title>
</head>
<body>
<s:form>
<s:select label="请选择所在城市" name="city"
  list="#{'BJ':'北京','SH':'上海' }"
  listKey="key" listValue="value">
  <s:optgroup label="河北"
   list="#{'BD':'保定','HS':'衡水','SJZ':'石家庄'}"
   listKey="key" listValue="value"/>
  <s:optgroup label="河南"
   list="#{'LY':'洛阳','KF':'开封','SQ':'商丘'}"
   listKey="key" listValue="value"/>
</s:select>
</s:form>
</body>
</html>

在这里插入图片描述

<s:file>标签

<s:file> 标签用于创建一个文件选择框,它会生成 HTML 中的 标签。该标签常用的属性及其说明如下表所示。

属性名是否必填类型说明
nameString指定表单元素名
acceptString指定可接收的文件 MIME 类型,默认为input
<s:hidden>标签

<s:hidden> 标签用于创建隐藏表单元素,它会生成 HTML 中的隐藏域标签 。该标签在页面上没有任何显示,可用于保存或交换数据,如需要提交表单时,要传递一个值到请求参数中,就可以使用该标签。

该标签的使用非常简单,通常只需要设置 name 和 value 属性即可,其使用语法如下所示:

<s:hidden name="id" value="%{id}"/>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值