Struts 2アクションの操作
Struts 2では、ほとんどの時間をアクションに費やしています。アクション・クラスにはビジネス・ロジックが含まれ、リソース・バンドルを取得し、データを保持し、検証し、ユーザーに戻すビュー結果ページを選択します。それはStruts 2の心臓部なので、アクションの基本的な概念を理解する必要があります。
1.アクション
Struts 2のアクションでは、インターフェイスや拡張クラスを実装する必要はありませんが、結果ページを返す文字列を返す
execute()
メソッドを実装するだけで済みます。
package com.mkyong.user.action;
public class LoginAction{
//business logic
public String execute() {
return "success";
}
}
<package name="user" namespace="/User" extends="struts-default">
<action name="validateUser" class="com.mkyong.user.action.LoginAction">
<result name="success">pages/welcome.jsp</result>
</action>
<package>
これで、.action拡張子の接尾辞を使用してアクションにアクセスできます。
http://localhost:8080/Struts2Example/User/validateUser.action
デフォルトの.actionは設定可能ですが、必要に応じて ”
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つの一般的な定数を使用しています:
成功、エラー、なし、入力とロジック
。これで、アクションクラスは定数値を直接使用できます。
package com.mkyong.user.action;
import com.opensymphony.xwork2.Action;
public class LoginAction{
//business logic
public String execute() {
return SUCCESS;
}
}
Strutsの多くの開発者がこのActionインタフェースを実装するのが好きな理由は分かりませんが、ActionSupportを拡張する方が良いでしょう。
3. ActionSupport
サポートクラス。インタフェースのデフォルト実装を提供するための一般的なプラクティスです。
ActionSupport(
com.opensymphony.xwork2.ActionSupport
)は、いくつかの重要なインターフェースのデフォルト実装を提供する非常に強力で便利なクラスです:
public class ActionSupport implements Action, Validateable,
ValidationAware, TextProvider, LocaleProvider, Serializable {
...
}
-
ActionSupport ** クラスでは、次のことが可能です。
-
1。 Validation
– validate()メソッドを宣言し、内部に検証コードを入れます。
2。テキストローカライゼーション** – リソースバンドルからメッセージを取得するには、GetText()メソッドを使用します。
package com.mkyong.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.mkyong.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アノテーションについてもっと知りたい場合は、このリンクをダウンロードしてください://struts2/struts-2-hello-world-annotation-example/[Struts 2アノテーションの例]