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

Struts2 OGNL 訪問私有屬性原理:框架自動調用 Getter/Setter

     編輯:程式設計綜合問答

現象

JSP 中 user.username 直接訪問 JavaBean private String username,未調用 getUsername() 卻能取值/賦值。

核心機制:OGNL 表達式語言

  • Struts2 集成 **OGNL (Object-Graph Navigation Language)**。
  • 解析 user.username 時,OGNL 內部按規則查找:
  1. 嘗試調用 getUsername()。
  2. 若無 getter,嘗試直接訪問字段 username(需權限允許)。
  3. 賦值時調用 setUsername() 或直接設字段。

關鍵點

雖然看起來用的是「對象.屬性名」,**實際框架自動調用對應的 get/set 方法**。若類中沒有定義對應 getter/setter,頁面仍無法使用。

優勢

  • 視圖層代碼簡潔,無需寫冗長 user.getUsername()。
  • 統一訪問接口,屏蔽 JavaBean 規範細節。
  • 支持鏈式導航:user.address.city 自動鏈式調用 getter。

注意

  • 屬性名**首字母小寫**(username 對應 getUsername)。
  • Boolean 類型 getter 可能是 isXxx(),OGNL 兼容處理。
  • 性能:OGNL 解析有開銷,高頻調用可考慮預編譯或直接調用 getter。

**OGNL 是 Struts2 實現「對象導航」的核心,自動橋接屬性表達式與 JavaBean 規範。**

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