Struts2 中 Action 是否必須實現 execute() 方法,取決於 Action 類的繼承體系 與 struts.xml 配置 兩個因素。
不需要 顯式實現 execute() 方法。
ActionSupport 已提供默認實現:public String execute() { return SUCCESS; };struts.xml 中配置 <result name="success"> 對應的視圖頁面即可。<action name="doRevenuesMaintenance">
<interceptor-ref name="novatar-webStack-baseparam">
<param name="security.actionType">PRIVATE</param>
</interceptor-ref>
<result name="success">incomeMaintenance.jsp</result>
</action>
對應的 Action 類可無任何方法:
public class RevenuesAction extends ActionSupport {
// 無需 execute(),直接跳轉 incomeMaintenance.jsp
}
必須 實現 execute() 方法,除非 在 struts.xml 中通過 method 屬性指定其他方法。
execute() 作為入口;public String execute() { return "success"; }<action name="myAction" class="com.example.MyAction" method="customMethod">
<result name="success">success.jsp</result>
</action>
<action> 標籤的 method 屬性優先級最高,可覆蓋默認約定:
<action name="userAction" class="com.example.UserAction" method="list">
<result name="success">/user/list.jsp</result>
</action>
此時 UserAction 只需提供 public String list(),無需 execute()。
execute() 返回 SUCCESS,減少樣板代碼;list、add、edit、delete),REST 風格更清晰;| 場景 | 是否需 execute() | 備註 |
|---|---|---|
| 繼承 ActionSupport/BaseAction + 無 method 配置 | 否 | 默認 execute() 返回 SUCCESS |
| 繼承 ActionSupport/BaseAction + 有 method 配置 | 否 | 按 method 指定方法執行 |
| 不繼承 + 無 method 配置 | 是 | 否則報錯 |
| 不繼承 + 有 method 配置 | 否 | 按 method 指定方法執行 |