強大的表達式語言,支援:屬性存取、方法呼叫、靜態成員、集合操作、運算、型別轉換。
<s:property value="username"/> 直接取值<s:debug/> 查看值棧內容存取 request、session、application 需加 # 前綴:
#request.attrName#session.userName#application.config#parameters.paramName(請求參數)#attr.attrName(依序搜尋 page/request/session/application)| 操作 | OGNL 表達式 |
|---|---|
| List 索引存取 | userList[0] |
| List 物件屬性 | userList[0].userName |
| List 大小 | userList.size() |
| Map 鍵值存取 | userMap['key'] 或 userMap.key |
| Map 鍵集合 | userMap.keys |
| Map 值集合 | userMap.values |
| Set 轉陣列存取 | userSet.toArray()[0] |
<%@ taglib uri="/struts-tags" prefix="s" %>
<s:property value="..."/>:輸出值,支援 default、escapeHtml<s:date name="now" format="yyyy-MM-dd"/>:日期格式化<s:set var="name" value="user.name" scope="session"/>:設定變數到指定作用域<s:url value="/action" var="myUrl"><s:param name="id" value="1"/></s:url>:生成 URL<s:a href="%{#myUrl}">連結</s:a>:生成超連結<s:include value="fragment.jsp"/>:包含頁面片段<s:if test="...">...</s:if> <s:else>...</s:else><s:iterator value="userList" var="user" status="stat">:
#stat.index:索引(從 0 開始)#stat.count:計數(從 1 開始)#stat.even / #stat.odd:奇偶行主題:simple、xhtml、css_xhtml、ajax。可在 struts.xml 統一設定:
<constant name="struts.ui.theme" value="simple"/>
<s:form action="save" method="post"><s:textfield name="username" label="用戶名"/><s:password name="pwd" label="密碼"/><s:select name="dept" list="deptList" listKey="id" listValue="name"/><s:doubleselect .../>:雙層聯動下拉選單Struts2 內建 Ajax 標籤(如 <s:datetimepicker/>),但現代專案建議使用 jQuery、Axios 等前端框架配合 REST API。