Struts2 标签库详解
Struts2 框架提供了一个强大的标签库,用于在 JSP、FreeMarker 和 Velocity 等模板引擎中构建动态网页。Struts2 标签库抽象了不同表示技术,现在主要支持三种表示技术:JSP、FreeMarker 和 Velocity。但部分的标签在三种表示技术下都可以使用,但是也有部分只能在某一种情况下使用。
标签的分类
----------------
Struts2 标签库中的标签可以分为两类:通用标签和 UI 标签。
### 通用标签
通用标签用来在页面表示的时候控制代码执行的过程,这些标签也允许从 Action 或者值堆栈中取得数据。例如地域、JavaBeans、URLs 和 action。
#### 控制标签
控制标签控制程序执行,例如:
* if 标签:用于控制基本的条件处理流程,通常和 else 标签或者 elseif 标签连用。
* elseif 标签:参考 if 标签。
* else 标签:参考 if 标签。
#### 数据标签
数据标签管理数据的取得和创建,例如:
* bean 标签:用于在 JSP 中使用 JavaBeans。
* push 标签:用于将数据推送到值堆栈中。
* i18n 标签:用于国际化和本地化。
### if 标签
if 标签用于控制基本的条件处理流程,通常和 else 标签或者 elseif 标签连用。
| 名字 | 是否必须 | 默认值 | 可否使用表达式 | 类型 | 描述 |
| --- | --- | --- | --- | --- | --- |
| test | 是 | | 是 | Boolean | 用来决定是否显示标签的内部内容 |
例子:
```jsp
<s:if test="%{false}">
<div>WillNotBeExecuted</div>
</s:if>
<s:elseif test="%{true}">
<div>WillBeExecuted</div>
</s:elseif>
<s:else>
<div>WillNotBeExecuted</div>
</s:else>
```
### elseIf 标签
elseIf 标签用于在 if 标签中提供多个条件判断。
### else 标签
else 标签用于在 if 标签中提供默认执行的内容。
### append 标签
append 标签用于做 iterator 标签的辅助,将不同 iterator 中的内容合并到一个 iterator 中。
| 名字 | 是否必须 | 默认值 | 可否使用表达式 | 类型 | 描述 |
| --- | --- | --- | --- | --- | --- |
例子:
```java
public class AppendIteratorTagAction extends ActionSupport {
private List myList1;
private List myList2;
private List myList3;
public String execute() throws Exception {
myList1 = new ArrayList();
myList1.add("1");
myList1.add("2");
myList1.add("3");
myList2 = new ArrayList();
myList2.add("4");
myList2.add("5");
myList2.add("6");
myList3 = new ArrayList();
myList3.add("7");
myList3.add("8");
myList3.add("9");
return SUCCESS;
}
}
```
Struts2 标签库提供了许多强大的标签,用于简化 Web 应用程序的开发。开发者可以根据需要选择合适的标签来构建动态网页。