3

私はStruts2とstruts2-convention-pluginSongCrudActionを使用して最初のステップを実行しており、現在、いくつかの典型的な、、およびアクションメソッドを使用してCRUDアクションクラス()にcreate()取り組んedit()view()delete()ます。これらのメソッドはすべて。で注釈が付けられてい@Actionます。

一般的に、便利なデフォルトの動作をから継承したいのですが、これにはメソッドActionSupportの継承も含まれます。execute()

song-crud構成ブラウザーを使用すると、それを指すという名前のアクションがあることがわかります。そのsong-crudアクションは廃止されており、必要なすべての操作に対して独自のアクションメソッドがあるため、これを削除したいと思います。Struts2の規則のおかげで、song-crud私はどこにも宣言していませんが、そのアクションが想定されていると思います。

この特定のケースでは、考えられる解決策の1つは、メソッドに合理的な意味を与えることです。execute()たとえば、view()操作に使用できます。欠点は、アクションクラスの名前をexecute()メソッドの動作に応じて(たとえばViewSongActionではなく)変更する(または注釈を付ける)必要があることですSongCrudAction。そうしないと、ビューアクションのURLが不適切になります(つまり/view-song?id=5、よりも適切になります/song-crud?id=5)。

一方、クラスの名前変更も醜いものになります。これは、単なるCRUDであり、ビューアクションクラスではないためです。

とにかく、一般的な問題は残っています:私がから継承するときはいつでも、それは私がしていることに役立つかもしれないし、そうでないかもしれないメソッドをActionSupport私に提示します。execute()

execute()したがって、Struts 2に、私のCRUDアクションクラスのメソッドを例外的に忘れるように指示するのは合理的と思われます。それは正しいですか、どうすればそれを達成できますか?より良い解決策はありますか?

4

1 に答える 1

0

アクション設定で属性をexecute指定しない場合、メソッドはデフォルトで実行されます。また、 DMIを使用してメソッドを実行しmethodない場合。インターフェイスを実装したので、メソッドはすでに実装されています。しかし、下の感嘆符の画像で表示されるメモは本当に奇妙に見えます。ActionSupportexecuteAction

executeメソッドがなく、構成に他のメソッドが指定されていない場合、フレームワークは例外をスローします。

それはとにかく真実です。executeメソッドと他のメソッドがある場合は逆になり、どのメソッドが実行されますか?methodアクション構成で属性を省略し、executeメソッドが指定されていない場合は、DMIを使用してメソッドを含むアクション内の任意のメソッドを呼び出すことができます。

于 2013-03-07T12:27:26.173 に答える