首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Struts2 進階:OGNL 表達式、值棧操作與標籤庫完整指南

     編輯:Java 綜合教學

Struts2 進階:OGNL、值棧與標籤庫

一、OGNL(Object-Graph Navigation Language)

強大的表達式語言,支援:屬性存取、方法呼叫、靜態成員、集合操作、運算、型別轉換。

二、OGNL 存取值棧與上下文

1. 值棧

  • 本質是 Map,儲存當前 Action 實例及其屬性
  • Struts2 建立 Action 實例 → 執行邏輯 → 將 Action 壓入值棧
  • JSP 使用 <s:property value="username"/> 直接取值
  • 除錯:<s:debug/> 查看值棧內容

2. Stack Context(上下文映射)

存取 request、session、application 需加 # 前綴:

  • #request.attrName
  • #session.userName
  • #application.config
  • #parameters.paramName(請求參數)
  • #attr.attrName(依序搜尋 page/request/session/application)

3. 集合操作

操作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]

三、Struts2 標籤庫分類

<%@ taglib uri="/struts-tags" prefix="s" %>

1. 通用標籤

資料標籤
  • <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:奇偶行

2. UI 標籤(表單元件)

主題: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 .../>:雙層聯動下拉選單

3. Ajax 標籤

Struts2 內建 Ajax 標籤(如 <s:datetimepicker/>),但現代專案建議使用 jQuery、Axios 等前端框架配合 REST API。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved