Struts HTML 标记可以大致地分为以下几个功能:
显示表单元素和输入控件
显示错误信息
显示其他HTML 元素
struts 将HTML 表单与为表单操作而定义的ActionForm bean 紧密联系在一起。表单输入字段的名称与ActionForm bean 里定义的属性名称是对应的。当第一次显示表单时,表单的输入字段是从ActionForm bean 中移植过来的,当表单被提交时,请求参数将移植到
ActionForm bean 实例。
所有可以在<form>标记中使用的用来显示HTML 输入控件的内嵌标记都使用下列属性来定义JavaScript 事件处理器。
属性 描述
Onblur 字段失去了焦点
Onchange 字段失去了焦点并且数值被更改了
Onclick 字段被鼠标点击
Ondblclick 字段被鼠标双击
Onfocus 字段接收到输入焦点
Onkeydown 字段拥有焦点并且有键按下
onkeypress 字段拥有焦点并且有键按下并释放
Onkeyup 字段拥有焦点并且有键被释放
onmousedown 鼠标指针指向字段并且点击
onmousemove 鼠标指针指向字段并且在字段内移动
onmouseout 鼠标指针指向控件,但是指针在元素外围移动
onmouseover 鼠标指针没有指向字段,但是指针在元素内部移动
Onmouseup 鼠标指针指向字段,并且释放了鼠标按键
<form>元素中能够被定义的其他一般属性有:
属性 描述
Accesskey 定义访问输入字段的快捷键
Style 定义输入字段的样式
styleClass 定义输入字段的样式表类
Tabindex 输入字段的tab 顺序
表单标记
<html:form>标记用来显示HTML 标记,可以指定AcitonForm bean 的名称和它的类名。
如果没有设置这些属性,就需要有配置文件来指定ActionMapping 以表明当前输入的是哪个JSP 页,以及从映射中检索的bean 名和类。如果在ActionMapping 指定的作用域中没有找到指定的名称,就会创建并存储一个新的bean,否则将使用找到的bean。
<form>标记能够包含与各种HTML 输入字段相对应的子标记。
<html:form>标记属性如下:
属性 描述
Action 与表单相关的操作。在配置中,这个操作也用来标识与表单相关的ActionForm bean
Enctype 表单HTTP 方法的编码类型
Focus 表单中需要初始化焦点的字段
Method 表单使用的HTTP 方法
Name 与表单相关的ActionForm bean 的名称。如果没有设置这个属性,bean 的
名称将会从配置信息中获得
Onreset 表单复位时的JavaScript 事件句柄
Onsubmit 表单提交时的JavaScript 事件句柄
Scope 搜索ActionForm bean 的范围。如果没有设置,将从配置文件中获取
Style 使用的格式
styleClass 这个元素的格式表类
Type ActionForm bean 的完整名称。如果没有设置,将从配置文件获得
例如:
<html:form action=”validateEmploee.do” method=”post”> </html:form>
与表单相关的操作路径是validateEmployee,而表单数据是通过POST 传递的。对于这
个表单来说,ActionForm bean 的其他信息,如bean 名称类型,作用域,都是从表单指定
操作的ActionMapping 中检索得到的:
<form-beans> <form-bean name=”empForm” type=”com.example.EmployeeForm”/> </form-beans> <action-mappings> <action path=”/validateEmployee” type=”com.example.ValidateExampleAction” name=”empForm” scope=”request” input=”/employeeInput.jsp”> <forward name=”success” path=”/employeeOutput.jsp”> </action> </action-mapping>
如果配置文件中包含上述信息,并且请求URI 的*.do 被映射到ActionServlet,与表单相关的ActionForm bean 的名称,类型和作用域分别是empForm,com.example.EmployeeForm
和request.这些属性也可以使用<html:form>标记属性进行显示的定义。以下标记必须嵌套在<html:form>标记里按钮和取消标记
<html:button>标记显示一个按钮控件;<html:cancel>标记显示一个取消按钮。属性如下:
属性 描述
Property 定义在表单被提交时返回到服务器的请求参数的名称
Value 按钮上的标记
复位和提交标记
<html:reset>和<html:submit>标记分别能够显示HTML 复位按钮和提交按钮。
文本和文本区标记
<html:text>和<html:textarea>标记分别HTML 文本框和文本区,属性如下:
属性 描述
Property 定义当表单被提交时送回到服务器的请求参数的名称,或用来确定文本元素
当前值的bean 的属性名称
Name 属性被查询的bean 的名称,它决定了文本框和文本区的值。如果没有设置,将使用与这个内嵌表单相关的ActionForm 的名称
<html:text>标记还有以下属性:
属性 描述
Maxlength 能够输入的最大字符数
Size 文本框的大小(字符数)
<html:textarea>标记特有的属性如下:
属性 描述
Rows 文本区的行数
Cols 文本区的列数
检查框和复选框标记<html:checkbox>标记能够显示检查框控件。<html:multibox>标记能够显示HTML 复选框控件,请求对象在传递检查框名称时使用的getParameterValues()调用将返回一个字符串数组。
属性如下:
属性 描述
Name Bean 的名称,其属性会被用来确定检查是否以选中的状态显示。如果没有设置,将使用与这个内嵌表单相关的ActionFrom bean 的名称。
Property 检查框的名称,也是决定检查框是否以选中的状态显示的bean 属性名称。在复选框的情况下,这个属性必须是一个数组。
Value 当检查框被选中时返回到服务器的请求参数的值
例如:
<html:checkbox property=”married” value=”Y”/>
一个名为married 的检查框,在表单提交时会返回一个”Y”.文件标记<html:file>标记可以显示HTML 文件控件。属性如下:
属性 描述
Name Bean 的名称,它的属性将确定文件控件中显示的内容。如果没设置,将使用与内嵌表单相关的ActionForm bean 的名称
property 这个属性定义了当表单被提交时送回到服务器的请求参数的名称,以及用来确定文件控件中显示内容的bean 属性名称
Accept 服务器能够处理的内容类型集。它也将对客户浏览器对话框中的可选文件类型进行过滤
Value 按钮上的标记,这个按钮能够在本地文件系统中浏览文件
单选钮标记
<html:radio>标记用来显示HTML 单选钮控件,属性如下:
属性 描述
Name Bean 的名称,其属性会被用来确定单选钮是否以选中的状态显示。如果没有设置,将使用与这个内嵌表单相关的ActionFrom bean 的名称。
property 当表单被提交时送回到服务器的请求参数的名称,以及用来确定单选钮是否
Value 当单选钮被选中时返回到服务器的值
隐藏标记
<html:hidden>标记能够显示HTML 隐藏输入元素,属性如下:
属性 描述
Name Bean 的名称,其属性会被用来确定隐藏元素的当前值。如果没有设置,将使用与这个内嵌表单相关的ActionFrom bean 的名称。
property 定义了当表单被提交时送回到服务器的请求参数的名称,以及用来确定隐藏元素当前值的bean 属性的名称
Value 用来初始化隐藏输入元素的值
密码标记
<html:password>标记能够显示HTML 密码控件,属性如下:
属性 描述
maxlength 能够输入的最大字符数
Name Bean 的名称,它的属性将用来确定密码元素的当前值。如果没有设置,将使用与这个内嵌表单相关的ActionFrom bean 的名称。
property 定义了当表单被提交时送回到服务器的请求参数的名称,以及用来确定密码元素当前值的bean 属性的名称
redisplay 在显示这个字段时,如果相应的bean 属性已经被设置了数据,这个属性决定了是否显示密码的内容
Size 字段的大小
选择标记
<html:select>标记能够显示HTML 选择控件,属性如下:
属性 描述
multiple 表明这个选择控件是否允许进行多选
Name Bean 的名称,它的属性确定了哪个。如果没有设置,将使用与这个内嵌表单相关的ActionFrom bean 的名称。
property 定义了当表单被提交时送回到服务器的请求参数的名称,以及用来确定哪个选项需要被选中的bean 属性的名称
Size 能够同时显示的选项数目
Value 用来表明需要被选中的选项
选项标记(这个元素需要嵌套在<html:select>标记里)
<html:option>标记用来显示HTML 选项元素集合,属性如下:
属性描述
collection Bean 集合的名称,这个集合存储在某个作用域的属性中。选项的数目与集合中元素的数目相同。Property 属性能够定义选项值所使用的bean 属性,而labelProperty 属性定义选项标记所使用的bean 的属性
labelName 用来指定存储于某个作用域的bean,这个bean 是一个字符串的集合,能够定义<html:option>元素的标记(如果标志与值不相同)labelProperty 与collection 属性共同使用时,用来定义了存储于某个作用域的bean,这个bean 将返回一个字符串集合,能够用来写入<html:option>元素的value 属性
Name 如果这是唯一被指定的属性,它就定义了存储于某个作用域的bean,这个bean 将返回一个字符串集合,能够用来写入<html:option>元素的value属性
property 这个属性在与collection 属性共同使用时,定义了每个要显示选项值的独立bean 的name 属性。如果不是与collection 属性共同使用,这个属性定义了由name 属性指定的bean 的属性名称(如果有name 属性),或是定义了一个ActionForm bean,这个bean 将返回一个集合来写入选项的值
我们看一下这个标记的一些例子:
<html:option collection=”optionCollection” property=”optionValue”
labelProperty=”optionLabel”/>
标记假设在某个作用域中有一个名为optionCollection 的集合,它包含了一些具有optionValue 属性的独立的bean,每个属性将作为一个选项的值。每个选项的标志由bean的optionLabel 属性属性进行定义。
<html:option name=”optionValues” labelName=”optionLabels”/>
标记中optionValues 代表一个存储在某个作用域中的bean,它是一个字符串集合,能够用来写入选项的值,而optionLabels 代表一个存储在某个作用域中的bean,它也是一个字符串集合,能够用来写入选项的标志。
<html:errors>标记能够与ActionErrors 结合在一起来显示错误信息。这个标记首先要从当前区域的资源文件中读取消息关键字errors.header,然后显示消息的文本。接下去它会在ActionErrors 对象(通常作为请求参数而存储在Action.ERROR_KEY 关键字下)中循环,读取单个ActionError 对象的消息关键字,从当前区域的资源文件中读取并格式化相应的消息,并且显示它们。然后它读取与errors.footer 关键字相对应的消息并且显示出来。
通过定义property 属性能够过滤要显示的消息,这个属性的值应该与ActionErrors对象中存储ActionError 对象的关键字对应。属性如下:
属性描述
Bundle 表示应用程序作用域属性的名称, 它包含着消息资源, 其默认值
Acion.MESSAGE_KEY
Locale 表示会话作用域属性的名称,它存储着用户当前登录的区域信息。其默认值
是Action.ERROR_KEY
Name 表示请求属性的名称, 它存储着ActionErrors 对象。其默认值是
Action.ERROR_KEY
property 这个属性指定了ActionErrors 对象中存储每个独立ActionError 对象的关键字,它可以过滤消息
例子:
<html:errors/>
显示集合中所有的错误。
<html:errors property=”missing.name”/>
显示存储在missing.name 关键字的错误。
struts HTML 标记还定义了下列标记来显示其他HTML 元素:
<html:html> : 显示HTML 元素
<html:img> : 显示图象标记
<html:link> : 显示HTML 链接或锚点
<html:rewrite> : 创建没有锚点标记的URI
这些标记的详细内容请参照struts 文档。