私はStrutsを初めて使用し、Strutsには基本的な疑問があります。
10個のリンク(link1、link2、...... link10)を含む新しいWebページを作成しました。各リンクをクリックすると、対応するページにリンクする必要があります。私の質問は、リダイレクトを実行するために10個の新しいStruts Actionクラスを作成する必要があるのか、それとも10個のリンクすべてを処理できる単一のStrutsActionクラスを処理する他の方法があるのかということです。
私はStrutsを初めて使用し、Strutsには基本的な疑問があります。
10個のリンク(link1、link2、...... link10)を含む新しいWebページを作成しました。各リンクをクリックすると、対応するページにリンクする必要があります。私の質問は、リダイレクトを実行するために10個の新しいStruts Actionクラスを作成する必要があるのか、それとも10個のリンクすべてを処理できる単一のStrutsActionクラスを処理する他の方法があるのかということです。
これは、これらの10個のリンクすべてが実行する内容によって異なります。ここにはいくつかのオプションがあります。
S2は、各アクションマッピングのメソッドを定義する方法を提供し、メソッド名に基づいて、S2はアクションの尊重されたメソッドを次のように呼び出します。
<action name="action1" class="myActionClass" method="method1"/>
<action name="action2" class="myActionClass" method="method2"/>
リダイレクトなどを行う前に何らかのロジックを実装する必要がある場合にのみ、メソッドを使用してActionクラスを作成することに注意してください。
単純な1ページから他のページへのリダイレクトの場合、S2は、実行時にexecuteメソッドを使用して空のアクションを作成し、常にSUCCESS
これを返す非常に洗練された方法を提供します。
<action name="Hello">
// ...
</action>
上記の場合、アクションマッピングのクラス属性を空白のままにすると、com.opensymphony.xwork2.ActionSupportクラスがデフォルトとして使用されます。詳細については、このページのアクション構成を参照してください
Struts 2では、URLごとに個別のアクションを実行する必要はありません。単一のクラスで作業できます。リンクごとに個別の関数を作成するだけです。
struts.xmlのアクション定義の例:
<action name="Link1" class="com.project.YourActionClass" method="handleLink1">
........
</action>
<action name="Link2" class="com.project.YourActionClass" method="handleLink2">
.........
</action>
リンクごとに個別のアクションクラスを作成する必要はありません。メソッド属性を使用して各リンクをクリックして呼び出すメソッド名を構成する必要があります。1つのアクションクラスで十分であり、アクションマッピングを支柱で構成する必要があります。 xml。
これはstruts2.xmlの利点ですが、struts1と同様に、特定のメソッドを呼び出すにはディスパッチアクションを使用する必要があると思います。