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

OGNL 三大符號(#、%、$)在 Struts2 中的核心用法詳解

     編輯:Java 綜合教學

OGNL 表達式語言符號速查

Struts2 值棧機制中,OGNL 三種特殊符號各司其職,掌握它們是高效開發的關鍵。

1. # 符號:非根對象訪問與集合操作

核心用法

  • 訪問非根對象屬性:Struts2 值棧視為根對象,訪問 ActionContext、Session、Request 等非根對象需加 # 前綴。實際上 # 等價於 ActionContext.getContext()
  • 集合過濾與投影:persons.{? #this.age > 20} 篩選年齡大於 20 的元素
  • 構造 Map 字面量:#{ 'foo1':'bar1', 'foo2':'bar2' }

2. % 符號:強制表達式求值

核心場景

當標籤屬性類型為字符串時,% 強制計算 OGNL 表達式值而非按字面量處理。

代碼對比示例

<!-- 構建 Map 放入值棧 -->
<s:set name="foobar" value="#{'foo1':'bar1', 'foo2':'bar2'}" />

<p>直接取值:<s:property value="#foobar['foo1']" /></p>

<p>不使用 %:<s:url value="#foobar['foo1']" /> <!-- 輸出字面字符串 --></p>

<p>使用 %:<s:url value="%{#foobar['foo1']}" /> <!-- 輸出解析後的值 'bar1' --></p>

3. $ 符號:配置文件與國際化資源中的表達式引用

兩大應用場景

  1. 國際化資源文件:key=Welcome, ${username} 在頁面顯示時解析變量
  2. Struts 配置文件:<result name="success">/user/${userId}/profile</result> 動態構建結果路徑

實戰總結表

符號核心作用典型場景
# 非根對象訪問、集合操作、Map 構造 #session.user、list.{? #this.active}、#{k:v}
% 字符串屬性中強制求值 <s:url value="%{actionName}" />
$ 配置/資源文件中變量插值 struts.xml、messages.properties

記憶口訣:# 找對象、% 求值、$ 填模板。

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