0

完了後に一般的なページ (showStuff) にリダイレクトする複数のアクションがあります。リダイレクトアクションごとにパラメーターのリストを繰り返さない方法を探しています。

私が持っているのはこれです:

<action name="doThis" class="com.domain.package.MyAction" method="doThis">
    <result type="redirectAction">
        <param name="actionName">showStuff</param>
        <param name="parse">true</param>
        <param name="selectedYear">${selectedYear}</param>
        <param name="selectedMonth">${selectedMonth}</param>
        <param name="selectedDay">${selectedDay}</param>
    </result>
</action>
<action name="doThat" class="com.domain.package.MyAction" method="doThat">
    <result type="redirectAction">
        <param name="actionName">showStuff</param>
        <param name="parse">true</param>
        <param name="selectedYear">${selectedYear}</param>
        <param name="selectedMonth">${selectedMonth}</param>
        <param name="selectedDay">${selectedDay}</param>
    </result>
</action>

パラメータ リストを showStuff アクション定義内に保持したい場合は、次のように使用します。

<action name="doThis" class="com.domain.package.MyAction" method="doThis">
    <result type="redirectAction">
        <param name="actionName">showStuff</param>
    </result>
</action>
<action name="doThat" class="com.domain.package.MyAction" method="doThat">
    <result type="redirectAction">
        <param name="actionName">showStuff</param>
    </result>
</action>

出来ますか?

4

3 に答える 3

1

いくつかのオプションがあります。

正直なところ、私は回避策のほとんどをスキップして、それらをセッションに入れます。

それらがセッションに入ったら、インターセプターとインターフェース (Dateableまたは何か) を作成します。インターセプターで変数のセッションをチェックし (以下を参照)、アクションが の場合は、Dateableそれらをアクションに設定すれば完了です。

もう 1 つのオプションは、これらの変数を日付としてカプセル化し、組み込みのコンバーターを使用するか、独自のコンバーターを使用することです。そうすれば、必要なパラメーターは 1 つだけです。このオプションは、インターセプターのアイデアでも機能します。

于 2012-07-31T14:22:37.530 に答える
0

結局のところ、それは非常に可能です。これはあなたがそれを行う方法です:

グローバル結果を追加します。

<global-results>
    <result name="show-stats" type="redirectAction">    
        <param name="actionName">showStats</param>
        <param name="parse">true</param>
        <param name="selectedYear">${selectedYear}</param>
        <param name="selectedMonth">${selectedMonth}</param>
        <param name="selectedDay">${selectedDay}</param>
  </result>

そして、アクションについて:

<action name="doThis" class="com.domain.package.MyAction" method="doThis"/>
<action name="doThat" class="com.domain.package.MyAction" method="doThat"/>

最後に、Java コードで、次のようにします。

return "show-stats";

これで完了です。

余談ですが、非常に基本的な DRY 原則を守るために、なぜこれほど多くの時間を費やさなければならないのでしょうか? これらのフレームワークはすべて、単純化する必要があるのではないでしょうか? ただ疑問に思っている...

于 2012-08-03T11:59:36.727 に答える
0

私は、パラメーターの無限のリストがどんどん長くなり、いくつかの場所で繰り返されるという同じ問題に直面していました。私がやったことは、外部ファイルを作成し、struts.xml でエンティティとして宣言し、すべてのパラメーターを繰り返す代わりにそれを含めることでした。

これは doctype タグに入ります

<!ENTITY referenceName SYSTEM "fileName">

次に、そのように含めます

&referenceName;
于 2014-08-04T16:04:28.220 に答える