1

という名前の新しいクラスを作成しましたRegesterActionが、このクラスをどのパッケージにも保持しませんでした。でこのクラスを構成するにはどうすればよいstruts.xmlですか?

以下はstruts.xmlファイルですが、属性値"default"struts-default.

<struts>
    <package name="default" extends="struts-default">
        <action name="*Register" method="{1}" class="RegisterAction">
            <result name="populate">/register.jsp</result>
</package>
</struts>
4

3 に答える 3

2

Struts2 のパッケージは Java のパッケージとは少し異なりますが、使用方法は同じで、コードを独自の名前空間で使用される異なるモジュールに分割するため、アクション名と衝突しません。パッケージと名前空間の概念をよりよく理解するには、Struts 2 名前空間の構成例と説明のチュートリアルを参照してください。

クラスをソース フォルダーに保持し、遅かれ早かれパッケージに属さない場合、新しいクラスの名前付けと重いコード管理の問題が発生します。

Struts2 フレームワークには、この名前をタグの属性にstruts-default入れてパッケージを拡張することにより、アプリケーション構成で使用できるすべての必要なものを含むという名前のパッケージがあります。など、他のプラグインから他のデフォルトパッケージを含めることもできます。extends<package>json-default

名前空間がパッケージ名に関連している限り、Java 言語で使用されるパッケージ名と Struts2 フレームワークのパッケージ名前空間を比較すると、似ていることがわかるかもしれませんが、それらはまったく異なります。たとえば、Struts2 で使用されるデフォルトの名前空間は""、アクションまたは結果の名前が他のパッケージ/名前空間に見つからない場合に使用されます。namespace="/"アプリケーションのパッケージルートである whichを使用する場合、これはほぼ同等です。

defaultルート パッケージにどのように名前を付けるかは問題ではありませんがroot、フレームワークで既に使用されている名前ではありません。つまりstruts-defaultnamespace属性を省略すると、デフォルトの名前空間が使用されます。これは Java に似ています。パッケージ宣言を省略すると、デフォルトのパッケージが使用されます。

デフォルトの概念は、デフォルトのアクション、デフォルトの結果、デフォルトのインターセプター スタックなど、他の用語にも広がる可能性があります。フレームワークは、既知のインターフェイスのデフォルトの実装などにも名前defaultを使用します。defaultという単語に単数形の意味はありません。通常、コードで何かを省略した場合、フレームワークはそのデフォルト設定を使用します。

于 2013-05-18T13:15:08.950 に答える
1

パッケージ名は、コード成果物から完全に独立しています。

struts-defaultパッケージは... Struts 2 のデフォルト パッケージです。デフォルトの結果タイプ、インターセプター、インターセプター スタック、およびその他のいくつかのデフォルトが定義されています。拡張する必要はありませんが、拡張しない場合は、独自のパッケージでかなりの量の手作業を行う必要があります。

アクション クラスをパッケージに入れる必要があると思いますが、そうすることのベスト プラクティスに反対する合理的な理由は考えられません。繰り返しますが、アクション クラス パッケージは、パッケージ名や、パッケージが拡張するもの (存在する場合) から完全に独立しています。

于 2013-05-18T12:12:25.010 に答える
0

はい、両方をstruts.xmlに含めることができます。

<package name="default" extends="json-default,hibernate-default" namespace= "/">
于 2016-06-20T04:45:45.063 に答える