Struts 2アクションの操作

Struts 2アクションの操作

Struts 2では、ほとんどの時間をアクションの操作に費やします。 アクションクラスには、ビジネスロジック、リソースバンドルの取得、データの保持、検証が含まれ、ユーザーに送り返す必要がある結果の表示ページを選択します。 Struts 2の中心であるため、アクションの基本概念を理解する必要があります。

1. アクション

Struts 2アクションでは、インターフェースの実装やクラスの拡張は強制されません。必要なのは、どの結果ページを返すかを示す文字列を返すexecute()メソッドを実装することだけです。

package com.example.user.action;

public class LoginAction{

    //business logic
    public String execute() {
        return "success";
    }

}

struts.xmlで、action tagclass attributeを使用してアクションクラスを構成します。 result tagを使用してユーザーに返す結果ページと、name attributeを使用してこのアクションクラスにアクセスするために使用できるアクションの名前を定義します。



  
    pages/welcome.jsp
  

これで、.action拡張子のサフィックスを介してアクションにアクセスできます。

http://localhost:8080/Struts2Example/User/validateUser.action

デフォルトの.actionは構成可能です。「http://www.example.com/struts2/how-to-remove-the-action-suffix-extension-in-struts-2/[struts.action.extension]」を変更するだけです。 」あなたのニーズに合う値。

2. オプションのアクションインターフェイス

Struts 2には、オプションのアクションインターフェイス(com.opensymphony.xwork2.Action)が付属しています。 このインターフェースを実装することにより、いくつかの便利な利点がもたらされます。ソースコードを参照してください。

package com.opensymphony.xwork2;

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;

}

このインターフェースは本当にシンプルで、5つの一般的に使用される定数値success, error, none, input and logicが付属しています。 これで、アクションクラスは定数値を直接使用できます。

package com.example.user.action;

import com.opensymphony.xwork2.Action;

public class LoginAction{

    //business logic
    public String execute() {
        return SUCCESS;
    }

}

多くのStruts開発者がこのActionインターフェースの実装を好む理由がわかりません。ActionSupportを拡張する方が良いでしょう。

3. アクションサポート

インターフェースのデフォルト実装を提供する一般的な方法であるサポートクラス。

ActionSupport(com.opensymphony.xwork2.ActionSupport)、いくつかの重要なインターフェースのデフォルト実装を提供する非常に強力で便利なクラス:

public class ActionSupport implements Action, Validateable,
   ValidationAware, TextProvider, LocaleProvider, Serializable {
 ...
}

ActionSupportクラスは、次のことを実行する機能を提供します。

1. Validation – validate()メソッドを宣言し、検証コードを内部に配置します。
2. Text localization – GetText()メソッドを使用して、リソースバンドルからメッセージを取得します。

package com.example.user.action;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{

    private String username;
    private String password;

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    //business logic
    public String execute() {

        return "SUCCESS";

    }

        //simple validation
    public void validate(){
        if("".equals(getUsername())){
            addFieldError("username", getText("username.required"));
        }
        if("".equals(getPassword())){
            addFieldError("password", getText("password.required"));
        }
    }
}

ほとんどの場合、理由がない限り、すぐに使える便利な機能のためにこのクラスを拡張する必要があります。 これは、重要なStruts 2インターフェースのいくつかの実装方法を理解するための非常に優れた学習クラスでもあります。

4. アクション注釈

Struts 2はアノテーションを非常によくサポートしており、XMLファイルを削除して、アクションクラスの@actionに置き換えることができます。

package com.example.user.action;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.ResultPath;

import com.opensymphony.xwork2.ActionSupport;

@Namespace("/User")
@ResultPath(value="/")
public class ValidateUserAction extends ActionSupport{

    @Action(value="Welcome", results={
        @Result(name="success",location="pages/welcome_user.jsp")
    })
    public String execute() {

        return SUCCESS;

    }
}

Struts 2アノテーションについて詳しく知りたい場合は、練習用にこのStruts 2 annotation exampleをダウンロードしてください。

結論

簡単なことではなく、ActionSupportクラスを拡張するだけで、ほとんどの場合に適しています。