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

Struts 2 動態結果配置:通配符映射與屬性驅動視圖解析

     編輯:Java 綜合教學

Struts 2 動態結果配置:通配符映射與屬性驅動視圖解析

Struts 2 支援動態結果配置,減少重複 <result> 宣告。兩大核心機制:通配符映射與Action 屬性驅動視圖。

一、通配符映射(test_* 模式)

利用 {1} 佔位符捕獲通配符匹配部分,同時作為方法名與視圖資源名。

struts.xml 配置

<action name="test_*" class="testAction.TestAction" method="{1}">
    <result name="error">error.jsp</result>
    <result>{1}.jsp</result>
</action>

運作流程

  1. 請求 test_success.action 匹配 test_*。
  2. {1} 捕獲 success。
  3. 呼叫 Action 的 success() 方法。
  4. 邏輯視圖名 success 映射至物理視圖 success.jsp。

二、Action 屬性驅動視圖(${property} 語法)

視圖資源路徑由 Action 實例的屬性值動態決定。

1. Action 類別

public class Test1Action extends ActionSupport {
    private String name; // 對應表單輸入欄位

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }

    public String execute() {
        return "jiagoushi".equals(name) ? SUCCESS : ERROR;
    }
}

2. 表單頁面 (welcome.jsp)

<form action="test1" method="post">
    <input type="text" name="name">
    <input type="submit" value="提交">
</form>

3. 物理視圖資源

建立 jiagoushi.jsp、error.jsp 等對應頁面。

4. struts.xml 配置

<action name="test1" class="testAction.Test1Action">
    <result name="error">error.jsp</result>
    <result>${name}.jsp</result>  <!-- 動態解析 name 屬性 -->
</action>

運作流程

  1. 使用者輸入 jiagoushi 送出表單。
  2. Struts 2 自動將參數 name 注入 Action 屬性。
  3. execute() 回傳 SUCCESS。
  4. 結果配置 ${name}.jsp 解析為 jiagoushi.jsp。

進階語法:OGNL 運算式

${} 內支援完整 OGNL 運算式:

  • ${name}:直接屬性值。
  • ${name.toUpperCase()}:方法呼叫。
  • ${user.profile.theme}:巢狀屬性導航。
  • ${(status == 'ok') ? 'success' : 'error'}:三元運算。

注意事項

  • 動態結果解析發生在 Action 執行之後,屬性值必須在 execute() 前已注入完畢。
  • 屬性值包含非法路徑字符時會導致錯誤,建議在 Action 內做驗證或過濾。
  • 過度使用動態結果會降低配置可讀性,核心流程建議保持靜態配置。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved