Actions的作用
Actions是Struts2框架的核心,因爲它們適用於任何MVC(Model View Controller)框架。 每個URL映射到特定的action,其提供處理來自用戶的請求所需的處理邏輯。
但action還有另外兩個重要的功能。 首先,action在將數據從請求傳遞到視圖(無論是JSP還是其他類型的結果)方面起着重要作用。 第二,action必須協助框架確定哪個結果應該呈現在響應請求的視圖中。
Action詳解
Struts2中actions的唯一要求是必須有一個無參數方法返回String或Result對象,並且必須是POJO。如果沒有指定no-argument方法,則默認是使用execute()方法。
你還可以擴展ActionSupport類,該類可實現六個接口,包括Action接口。Action的接口如下:
public interface Action {
public static final String SUCCESS = "success";
public static final String NONE = "none";
public static final String ERROR = "error";
public static final String INPUT = "input";
public static final String LOGIN = "login";
public String execute() throws Exception;
}
1). ActionSupport 是默認的 Action 類: 若某個 action 節點沒有配置 class 屬性, 則 ActionSupport 即爲待執行的 Action 類. 而 execute 方法即爲要默認執行的 action 方法
<action name="testActionSupport"
class="com.opensymphony.xwork2.ActionSupport"
method="execute">
<result>/testActionSupport.jsp</result>
</action>
等同於
<action name="testActionSupport">
<result>/testActionSupport.jsp</result>
</action>
2). 在手工完成字段驗證, 顯示錯誤消息, 國際化等情況下, 推薦繼承 ActionSupport.
演示
所以,在業務稍微複雜些後,推薦繼承 ActionSupport.
創建Action
public class HelloWorldAction extends ActionSupport{
private String name;
public String execute() throws Exception {
if ("SECRET".equals(name))
{
return SUCCESS;
}else{
return ERROR;
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
在這個例子中,我們在execute方法中使用一些邏輯來查看name屬性。如果屬性等於字符串“SECRET”,我們返回SUCCESS作爲結果,否則我們返回ERROR作爲結果。因爲我們已經擴展了ActionSupport,所以我們可以使用String常量、SUCCESS和ERROR。