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

Struts2 Result Type 完整屬性指南:chain、dispatcher、stream、redirect、redirectAction 等 12 種類型深度解析與參數配置實戰

     編輯:Java 相關知識

Struts2 <result> 的 type 屬性決定視圖渲染方式。本文系統整理 12 種內建 Result 類型、對應類、適用場景、關鍵參數,並重點解析 redirect vs redirectAction 差異、redirectAction 參數傳遞、JSON 插件集成等實戰技巧。

12 種 Result 類型速查表

Type實現類用途關鍵參數
chainActionChainResultAction 鏈,保留 Request 屬性-
dispatcherServletDispatcherResult默認,轉發到 JSP/頁面location (默認)
freemarkerFreemarkerResult渲染 FreeMarker 模板location
httpheaderHttpHeaderResult控制 HTTP 狀態碼/頭status, headers
streamStreamResult輸出 InputStream(文件下載/AJAX)inputName, contentType, contentDisposition, bufferSize
velocityVelocityResult渲染 Velocity 模板location
xsltXSLTResultXML/XSLT 轉換location, stylesheet
plainTextPlainTextResult直接輸出文本(源碼查看)location, charSet
redirectServletRedirectResult重定向 URL,Request 丟失location, parse
redirectActionServletActionRedirectResult重定向到 Action,Request 丟失actionName, namespace, suppressEmptyParameters
redirect-actionServletActionRedirectResult同 redirectAction(別名)同上
jsonJSONResult序列化 Action 屬性為 JSONincludeProperties, excludeProperties, root

redirect vs redirectAction 核心差異

維度redirectredirectAction
後綴需 .action無需後綴
命名空間可跨命名空間僅同一命名空間
參數傳遞手動拼接 URL原生支持 OGNL/EL 表達式

示例對比

<!-- redirect 需完整路徑 -->
<result name="success" type="redirect">viewTask.action</result>

<!-- redirectAction 僅需 Action 名 -->
<result name="success" type="redirectAction">viewTask</result>

redirectAction 參數傳遞實戰

<action name="enterpreinfo" class="preinfoBusinessAction" method="enterPreinfoSub">
  <result name="success" type="redirectAction">
    showpreinfo?preinfo.order_number=${preinfo.order_number}&amp;preinfo.company_name=${preinfo.company_name}
  </result>
  <result name="error" type="redirect">
    <param name="location">/error.jsp</param>
  </result>
</action>

注意:XML 中 & 必須轉義為 &amp;,否則解析報錯。

JSON 插件集成示例

<package name="struts2" extends="json-default" namespace="/">
  <action name="login" class="loginAction" method="login">
    <result type="json">
      <param name="includeProperties">success,result</param>
    </result>
  </action>
  <action name="main" class="loginAction" method="main">
    <result name="main">/index.jsp</result>
  </action>
</package>

Action 需提供 success、result 屬性及 Getter,includeProperties 以逗號分隔指定序列化字段。

選型建議

  • 頁面跳轉:dispatcher (默認)
  • 文件下載/AJAX 流:stream
  • POST 後重定向防重複提交:redirectAction
  • REST API 返回 JSON:json (需 struts2-json-plugin)
  • Action 之間傳遞 Request 數據:chain
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved