2012-05-12 6 views
1

Struts2で複数のアクションをシングルアクションクラスで作成する方法は? 例を挙げてください。 インターネット検索で次のコードが見つかりましたが、エラーが発生しています。リクエストごとに別々のアクションクラスを作成する必要がありますか?Struts2で複数のアクションを作成する

+2

あなたはどのようなコードを試してみましたか? Apache StrutsのWebサイトを見ましたか?別のマッピングを提供するだけで、複数のアクション間でアクションクラスを再利用することができます。これらのマッピングでは、署名が同意できる限り、デフォルトの「execute」以外のメソッドをオプションで指定できます。 – Quaternion

+0

ここでの質問のタイプ: http://stackoverflow.com/a/16505496/1490962 –

答えて

4

@Quaternionによると、S2アクション自体はJavaクラスであり、何を求めているのか分かりません(シングルアクションクラスのStruts2での複数のアクション)。

は、我々はここでのように異なる別名を持つ

地図シングルアクションクラスそれらのいくつかはある単一S2アクションクラスを使用するには、いくつかの方法があります。

<action name="A" class="MyActionClass"> 
    <result type="redirectAction">Menu</result> 
    <result name="input">/Logon.jsp</result> 
</action> 


<action name="B" class="MyActionClass"> 
    <result type="redirectAction">Menu</result> 
    <result name="input">/Logon.jsp</result> 
</action> 

しかし、私はあなたが別のアクションメソッドに異なるアクションリクエストをマップしたいと思うと思います。 S2は任意の数のメソッドを定義する方法を提供し、UIからどのアクションクラスのどのメソッドを呼び出すかをS2に指示することができます。例えばのための

のは、我々は異なる作成する必要はありません。このため

  1. ログイン
  2. ログアウト
  3. 登録

のように、我々はユーザーとの対話を処理する責任があるUserActionクラスを持っているとしましょうアクションクラスですが、私たちはUserActionという単一のアクションクラスを作成し、それには別のメソッドを定義することができ、012を別のメソッド、例えば

<action name="Logon" class="UserAction" method="logon"> 
    <result type="redirectAction">Menu</result> 
    <result name="input">/Logon.jsp</result> 
</action> 

<action name="Logout" class="UserAction" method="logout"> 
    <result type="redirectAction">Menu</result> 
    <result name="input">/Logon.jsp</result> 
</action> 

<action name="Register" class="tUserAction" methood="register"> 
    <result type="redirectAction">Menu</result> 
    <result name="input">/Logon.jsp</result> 
</action> 

これは上記のユースケースMyActionClassでは、あなたの疑問

をクリアするためにあなたを助けるかもしれない希望は2つのエイリアスAとBとのマッピングされており、あなたは任意の番号にマッピングすることができます。

2

別の方法:

はここでここ3つのアクション(実行、アクション1、アクション2)

public class MyAction extends ActionSupport{ 

    public String execute(){ 
    return SUCCESS; 
    } 

    public String action1(){ 
    return SUCCESS; 
    } 

    public String action2(){ 
    return SUCCESS; 
    } 
} 

を持つアクションクラスが設定されている。

<action name="myAction" class="MyAction"> 
    <result>showMe.jsp</result> 
    <result name="input">showMe.jsp</result> 
</action> 

アクション "実行"デフォルトで呼び出されます。 アクション "action1"または "action2"を呼び出すには、 "method:action1"または "method:action2"という名前でリクエストにパラメータを入力する必要があります。

  • コールデフォルトのアクション(実行): /path_to_action/myAction.action
  • コールアクション1: /path_to_action/myAction.action?method:action1
  • コールアクション2:/path_to_action/myAction.action?方法:アクション2

あなたのデフォルトの方法を変更することができます。

<action name="myAction" class="MyAction" method="action1"> 
    <result>showMe.jsp</result> 
    <result name="input">showMe.jsp</result> 
</action> 

だから、あなたの通話/path_to_action/myAction.action、アクション1が実行されるとき。

2

あなたは、単一の場所でコードを追加/編集/削除するように選択されたアクションに基づいて、単一のアクションで複数のリダイレクトを書きたいと思っています。あなたの要件のためにDispatchActionを探す必要があります。

以下にいくつかの例を示します。すべては、DispatchActionの実装方法を示しています。

Link1 Link2 Link3

+0

OPがStruts2に具体的にコメントしている間にStruts1を使用していた場合はこれがこれです。 – Naros

+0

そのクランクランを指摘してくれてありがとう。あなたは自分の答えのバージョンを自由に追加することができます。 –

関連する問題