1

私はStruts 2 Webアプリケーションに取り組んでおり、コンベンションプラグインを使用して注釈を介してすべてを構成しています。複数の親パッケージを使用したいアクション クラスのいくつかで問題が発生しています。私はApacheのサイトでそれを行う手段を見つけましたが、それは非推奨のようです. タイプの不一致をスローして機能しません。エラーString[]に変換できません。String

@ParentPackage({"my-parent-package1, my-parent-package2"})
package com.mycompany.myapp.actions

import org.apache.struts2.config.ParentPackage;

Struts 2.2.1 を使用しています。注釈を介してアクションに複数の親パッケージを付与することは可能ですか? 彼らがこれを機能として削除したのは奇妙に思えます。

4

2 に答える 2

2

注釈ではできませんが、XML 構成を介して可能です。javadoc は言う

この注釈により、アクションは使用している親パッケージを変更できます。XWork パッケージは、アクションが存在する Java パッケージを介してコンベンション プラグインによって作成されるため、同じパッケージ内の 2 つのアクションが異なる親と衝突のない名前空間。

これを正しく処理するために、アクションが配置される XWork パッケージの名前は、次の形式を使用して作成されます。

<java-package>#<parent-xwork-package>#<namespace>

これは、Java パッケージに複数の親パッケージを含めることができることを意味します。ただし、同じクラスまたはパッケージに 2 つ以上の@ParentPackageアノテーションを配置することはできません。お気づきのように、親パッケージの配列を持つことはできません。ただし、パッケージ定義に 1 つ、アクション クラスにもう 1 つ、少なくとも 2 つの親パッケージを持つことができます。残念なことに、構成ビルダーはこの注釈に対して 2 つの構成を作成しますが、アクション構成は注釈を持つものに対してのみ作成されます。

于 2013-01-08T11:17:47.230 に答える
1

確認org.apache.struts2.convention.annotation.ParentPackageしましたが、複数の親パッケージを定義することは許可されていません。ここにスニペットがあります:

@Target({ElementType.TYPE, ElementType.PACKAGE})
@Retention(value = RetentionPolicy.RUNTIME)
public @interface ParentPackage {
    /**
     * @return  The parent package.
     */
    String value();
}
于 2013-01-08T08:05:50.963 に答える