1

コントローラー クラスを解決するときに、Spring MVC を Stripes のように機能させることができるかどうかを知りたいです。

通常、コントローラー@RequestMappingをその URL にマップするために、コントローラーに注釈を付けることができます。

しかし、私の上司は、Stripes から派生した設定より規約のメカニズムを求めました。これは、何年にもわたる雇用の後、次第に放棄されています。

ご覧のとおり、ストライプは、名前Actionsに含まれるパッケージの下のクラスパスでスキャンされます。stripes.action各サブパッケージは仮想ディレクトリであり、最終的に名前付きのクラスSomethingActionが url にマップされSomething.actionます。

私がする必要があるのは次のとおりです。

com.example.product.web.controllers.secure.admin.UserController/secure/admin/user com.example.something.different.from.before.web.controllers.pub.WelcomeController mappingへのマッピング/pub/welcome

基本的に、すべてのコントローラーで使用するのではなく、完全なクラス名に従ってSpring MVCにコントローラーを自動的にマップさせたいと思い@RequestMappingます。

重要!Spring MVC にすでに命名規則がある場合、その命名規則 ( )は正確には必要ありません。web.controllers私は単にそれが必要です。

私はこれまで手がかりを見つけていません。ありがとう

4

1 に答える 1

1

ControllerClassNameHandlerMappingは、期待どおりの機能を備えています。

基本パッケージを設定するだけcom.example.product.web.controllersで、サブパッケージがパスとしてマップされます。API ドキュメントから引用するには

「com.mycompany.myapp」のような基本パッケージを指定して、その基本パッケージ内にサブパッケージをパス要素として含めます。たとえば、クラス名「com.mycompany.myapp.mymodule.BuyForm」のパス「/mymodule/buyform」を生成します。

サブパッケージ階層は、個々のパス要素として表されます。たとえば、クラス名「com.mycompany.myapp.mymodule.mysubmodule.BuyForm」の場合は「/mymodule/mysubmodule/buyform」です。

単一の基本パッケージのみを持つように制約されていることに注意してください。スキャンするパッケージ階層が異なる場合は、ControllerClassNameHandlerMappingそれに応じて の動作をカスタマイズする必要があります。

于 2015-08-21T10:28:55.083 に答える