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

Java Struts2 重定向傳參:注解與配置方式

     編輯:程式設計綜合問答

問題

Struts2 中使用注解配置 Action 路徑,重定向時如何傳遞參數?

核心觀點

重定向通常在攔截器或 Action 方法返回結果碼時處理,不在類級注解上硬編碼重定向 URL。

正確做法

  1. Action 方法返回結果名,在 struts.xml 或注解 @Results 中定義重定向結果:
    @Action(value = "login", results = {
        @Result(name = "success", type = "redirect", location = "/welcome.jsp?user=${username}"),
        @Result(name = "error", location = "/login.jsp")
    })

    ${username} 會自動取 Action 的 getUsername() 值(OGNL 表達式)。

  2. 攔截器中重定向(如登錄檢查):
    public String intercept(ActionInvocation invocation) {
        if (!loggedIn) return "loginRedirect"; // 在 struts.xml 定義 loginRedirect 為 redirect 類型
        return invocation.invoke();
    }
  3. Action 內程序化重定向(不推薦,破壞關注點分離):
    ServletActionContext.getResponse().sendRedirect("/welcome.jsp?user=" + username);
    return null; // 告訴框架不再處理結果

建議

  • 類級注解 @Namespace、@Action 僅定義映射路徑,**不寫死重定向 URL**。
  • 參數傳遞利用 OGNL ${property} 自動注入,避免手動拼接字符串。
  • 重定向屬於「視圖導航」邏輯,配置在結果視圖層最清晰。

Struts2 設計哲學:**Action 處理業務返回邏輯結果名,結果視圖決定如何渲染/重定向**。

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