Struts2的表单标签

  • 内容
  • 评论
  • 相关

Struts2 的表单标签用于向服务器提交用户输入的信息,绝大多数的表单标签都有其对应的 HTML 标签。读者可以结合 HTML 的标签对比学习 Struts2 的表单标签。

表单标签的公共属性

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

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

表 1 表单标签的通用属性
属性名 主题 数据类型 说   明
title simple String 设置表单元素的 title 属性
disabled simple String 设置表单元素是否可用
label xhtml String 设置表单元素的 label 属性
labelPosition xhtml String 设置 label 元素的显示位置,可选值为 top 和 left(默认)
name simple String 设置表单元素的 name 属性,与 Action 中的属性名对应
value simple String 设置表单元素的值
cssClass simple String 设置表单元素的 class
cssStyle simple String 设置表单元素的 style 属性
required xhtml Boolean 设置表单元素为必填项
requiredposition xhtml String 设置必填标记(默认为*)相对于 label 元素的位置,可选值为 left 和 right(默认)
tabindex simple String 设置表单元素的 tabindex 属性

除了这些常用的通用属性以外,表单标签还有很多其他属性。由于篇幅有限,这里就不再一一列举。

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

简单而言,就是表单标签的 value 在生成 HTML 时会自动设置值,而这个值是从值栈中获取的。关于值栈问题教程后面会进行讲解。

<s:form>标签

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

表 2 <form>标签的常用属性及描述
属性名 是否必填 类  型 说  明
action String 指定提交时对应的 action,不需要 action 后缀
enctype String HTML 表单 enctype 属性
method String HTML 表单 method 属性
namespace String 所提交 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 属性即可获取单行/多行文本框的值。

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

<s:passWord>标签

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

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

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

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

需要注意的是,Struts2 的 <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> 标签的常用属性说明如表 4 所示。

表 4 <s:radio>标签的属性及说明
属性名 是否必填 类  型 说  明
list Collection,Map Enmumeration,Iterator,Array 用于生成单选框中的集合
listKey String 指定集合对象中的哪个属性作为选项的 value
listValue String 指定集合对象中的哪个属性作为选项的内容

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

<s:reset>标签

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

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

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

<s:submit>标签

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

表 5 标签的常用属性
属性名 是否必填 类型 说明
action String 指定提交时对应的 Action
method String 指定 Action 中调用的方法

下面通过简单的用户注册案例,演示前几个小节中所讲解的标签的使用。在 struts2Demo04 项目的 WebContent 目录下创建一个名称为 register.jsp 的文件,编辑后如下所示。

<%@ 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="17" cols="3"/>
        <s:reset value="重置"/>
        <s:submit value="注册"/>
    </s:form>
</body>
</html>

上述代码中,分别使用了 <s:form>、<s:textfield>、<s:textarea>、<s:password>、<s:radio>、<s:reset> 和 <s:submit> 共 7 种标签编写了一个表单页面。

在 <s:radio> 标签中,使用 list 属性定义了一个 Map 集合,并使用 value 属性指定其默认显示值为男(value = 0 表示集合中 key 为 0 的元素)。在 <s:textarea> 标签中,使用 rows 属性和 cols 属性定义了多行文本框的列数为 3,行数为 17。

启动项目后,在浏览器的地址栏中输入地址 http://localhost:8080/struts2Demo04/register.jsp 访问 register.jsp,浏览器的显示结果如图 1 所示。

注册页面
图 1  注册页面

本文标题:Struts2的表单标签

本文地址:http://www.hosteonscn.com/5753.html

评论

0条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注