目录
Struts 2标签
Struts 2标签提供了功能强大的标签库,并且远远超出了传统标签库的基本功能:数据显示和数据输出。
Struts 2标签主要分为两类:
①UI标签(UI Tag)
②通用标签(Generic Tag)
Struts 2标签在使用时,首先需要进行标签库的导入,导入语法与使用JSTL标签相同,在JSP页面中导入Struts 2标签库,语法:
<%@ taglib uri=”/struts-tags” prefix=”s”%>
(1)UI标签
Struts 2的UI标签可分为三类:表单标签、非表单标签、Ajax标签
表单标签
有name、label、list等属性
标签 | 描述 |
---|---|
<s:from> </s:from> | 获取相应from的值 |
<s:textfieId> </s:textfieId> | 文本输入框 |
<s:password> </s:password> | 密码输入框 |
<s:textarea> </s:textarea> | 文本域输入框 |
<s:radio> </s:radio> | 单选按钮 |
<s:checkbox> </s:checkbox> | 复选框 |
<s:submit/> | 提交按钮 |
<s:reset/> | 重置按钮 |
<s:hidden/> | 隐藏域标签 |
1、要使用标签,必须修改web.xml,让控制器拦截所有请求
<url-pattern>/*</url-pattern>
2、Struts 2提供了功能强大的标签库,JSP页面导入标签库:
<%@ taglib prefix="s" uri="/struts-tags"%>”
3、设置用户界面主题,默认值为xhtml风格
<constant name="struts.ui.theme" value="simple"/>
非表单标签
标签 | 描述 |
---|---|
actionerror | 用于输出Action实例的getActionErrors()方法返回的错误提示信息 |
actionmessage | 用于输出Action实例的getActionMessage()方法返回的错误提示信息 |
component | 用于生成一个自定义组件 |
tree | 用于生成一个树状结构 |
treenode | 用于生成树状结构的节点,与tree标签一起使用 |
Ajax标签
Struts 2对Ajax提供了很好的支持
Struts 2.1提供了基于Dojo的Ajax标签,对Ajax操作进行了进步封装,可以更快捷容易的使用Ajax
Ajax标签 | 描述 |
---|---|
<sx:div> | 创建一个div区域,可以通过Ajax向其中加载内容,以实现局部刷新 |
<sx:submit> | 通过Ajax来更新某个元素的内容或提交表单 |
<sx:a> | 通过Ajax来更新某个元素的内容或提交表单 |
<sx:tabbedPanel> | 创建一个标签面板,由<s:div>来提供内容 |
<sx:autocompleter> | 根据用户输入提供输入建议,或者帮助用户自动完成输入 |
<sx:tree> | 创建一个支持Ajax的树形组件(Widget) |
使用Struts 2.1的Ajax标签前必须进行如下操作
- 将struts2-dojo-plugin-2.1.x.x.jar复制到WEB-INF\lib目录
- 在JSP页面中导入Ajax标签
<!-- 引入Ajax标签 -->
<%@ taglib uri="/struts-dojo-tags" prefix="sx"%>
- 在JSP页面中加入head标签,负责在页面上导入Dojo所需要的CSS库和JavaScript库
<head>
<!-- 在JSP页面中加入head标签负责在页面上导入Dojo所需要的CSS库和JavaScript库 -->
<sx:head />
</head>
通用标签
条件标签
根据表达式的值,判断将要执行的内容
<s:if> </s:if>
<s:elseif> </s:elseif>
<s:else> </s:else>
迭代标签
用于遍历集合
<s:iterator> </s:iterator>
1.if/elseif/else标签
都是进行条件判断、分支控制标签;只有if标签可以单独使用
三个标签可以组合使用,但是<s:elseif ……/>标签与<s:else ……/>标签不能独立使用,必须与<s:if>标签结合使用
<s:if>可以与多个<s:elseif>结合使用,但是只能与一个<s:else>结合在一起
<s:if test=”表达式”>
<!-- 需要执行的代码 -->
</s:if>
<s:elseif test=”表达式”>
<!-- 需要执行的代码 -->
</s:elseif>
<s:else test=”表达式”>
<!-- 需要执行的代码 -->
</s:else>
2.iterator迭代标签
语法:
<s:iterator value=”集合对象” status=”status” id=”name”>
<!-- 读取集合对象并输出显示 -->
</s:iterator>
iterator属性 | 描述 |
---|---|
value | 需要进行遍历的集合对象 |
status | 当前迭代元素的一个实例,通过该属性可以判断当前迭代元素的属性,如元素的索引 |
id | 当前迭代元素的id,通过这个id可以直接访问到当前的迭代元素 |