### 常用的Struts 2.0标签介绍 #### 非UI标签 Struts 2框架中,非UI标签主要用于控制流程和逻辑处理,而非直接与用户界面交互。下面详细介绍两种非UI标签:`<s:if>`、`<s:elseif>`、`<s:else>`以及`<s:iterator>`。 ##### `<s:if>`、`<s:elseif>` 和 `<s:else>` 标签 这组标签用于根据条件执行不同的代码块,类似于Java中的if-else语句。 **参数** - **test**: 必须参数,布尔类型的表达式,用于判断是否执行该标签内部的内容。 - **id**: 可选参数,用于标识元素的ID,在UI和表单中可以作为HTML的ID属性。 **示例代码** ```html <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Condition Flow</title> </head> <body> <h3>Condition Flow</h3> <!-- 小技巧:可以通过 #parameters.name[0] 来获取请求中 name 的值。 但在 include 示例中,无论使用 param 标签给 name 赋什么值,#parameters 都会为空。 原因是当使用 include 标签时,被包含页面(included)里的 #parameters 拿到的是包含页面的请求参数。 因此,这里需要手动调用 request.getParameter("name")。 --> <s:set name="name" value="<%="'"+request.getParameter("name")+"'"%>"/> <s:if test="#name == 'Max'"> Max's file here </s:if> <s:elseif test="#name == 'Scott'"> Scott's file here </s:elseif> <s:else> Other's file here </s:else> </body> </html> ``` **解释**: 1. **`<s:set>`** 标签用于设置变量 `name` 的值。 2. **`<s:if>`** 标签检查变量 `name` 是否等于 `'Max'`,如果是,则显示 “Max's file here”。 3. **`<s:elseif>`** 如果前面的 `<s:if>` 条件不成立,且 `name` 等于 `'Scott'`,则显示 “Scott's file here”。 4. **`<s:else>`** 如果前面的所有条件都不满足,则显示 “Other's file here”。 ##### `<s:iterator>` 标签 用于遍历集合或数组,提供了一种简洁的方式来进行迭代操作。 **参数** - **value**: 可选参数,表示要遍历的可枚举的数据源,例如集合或数组。 - **id**: 可选参数,用于标识元素的ID,在UI和表单中可以作为HTML的ID属性。 - **status**: 可选参数,如果设置了该参数,则会在每次迭代时压入一个 `IteratorStatus` 对象到栈中,用于获取当前迭代的状态信息。 **示例代码** ```html <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@page import="java.util.List"%> <%@page import="java.util.ArrayList"%> <%@taglib prefix="s" uri="/struts-tags"%> <% List<String> list = new ArrayList<>(); list.add("Max"); list.add("Scott"); list.add("Jeffry"); list.add("Joe"); list.add("Kelvin"); request.setAttribute("names", list); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Iterator</title> </head> <body> <h3>Names:</h3> <ol> <s:iterator value="#request.names" status="stuts"> <s:if test="#stuts.odd == true"> <li>White<s:property/></li> </s:if> <s:else> <li style="background-"> </s:else> </s:iterator> </ol> </body> </html> ``` **解释**: 1. **创建列表**: 创建了一个名为 `list` 的 `ArrayList`,并添加了一些字符串。 2. **设置属性**: 将列表 `list` 作为 `names` 属性设置到 `request` 对象中。 3. **迭代列表**: 使用 `<s:iterator>` 遍历 `names` 属性对应的列表,其中 `status="stuts"` 表示每次迭代都会将 `IteratorStatus` 对象压入栈中。 4. **条件判断**: 利用 `<s:if>` 和 `<s:else>` 标签判断当前迭代项的索引是否为奇数,如果是,则显示白色背景的列表项,并显示当前名字;如果不是,则显示无背景颜色的列表项。 通过以上示例可以看出,Struts 2 中的非UI标签能够极大地简化代码结构,提高代码的可读性和维护性。开发者可以根据具体需求灵活运用这些标签,从而实现更为复杂的功能。
- 粉丝: 1
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助