3

Spring MVC を使用して、「設定より規約」全体を試しています。Spring には、これを支援するあらゆる種類のツールがあり、私はそれらのいくつかを試しています。しかし、私たちのチームの構成が Spring の要求と完全に一致しないという問題に遭遇しました。

問題は、" http://ourSite/SomePage.do " のような URL を取得し、それらを "SomePageController" に渡し、"somePage.jsp" でレンダリングすることです。SomePage.do は大文字で始まり、somePage.jsp は大文字ではないことに注意してください。Spring の DefaultRequestToViewNameTranslator は大文字を保持しているようで、ViewResolvers はその最初の文字を小文字にする方法を理解できません。

最初の文字を小文字にするように NameTranslator または ViewResolver を構成する方法はありますか?

4

1 に答える 1

3

DispatcherServletのJavadocでは、「viewNameTranslator」の決定方法が指定されています。

ビューまたはビュー名がユーザーによって提供されない場合、構成された RequestToViewNameTranslator は現在のリクエストをビュー名に変換します。対応する Bean 名は " viewNameTranslator" です。デフォルトは ですDefaultRequestToViewNameTranslator

したがって、「ビュー名トランスレーター」の動作を少しだけ変更したい場合は、独自のインスタンスを提供する必要があります。おそらく簡単にサブクラス化DefaultRequestToViewNameTranslatorして、ファイル名の大文字と小文字に関するロジックを追加できます。

しかし、正直なところ、コントローラーが名前付きビューを返し、ビュー名が URI と同じであることに依存する必要がないことを強くお勧めします。これにより、複数の URL/コントローラーに同じビューを使用できるようになり、URL から「ビュー」の概念を真に抽象化することができます。

(正直に言うと、Spring MVC をかなり大きなアプリで約 5 か月使用しており、このDefaultRequestToViewNameTranslatorクラスがフレームワークにあることや、「viewNameTranslator」が DispatherServlet で使用されるものであることさえ知りませんでした!)

于 2009-05-11T20:20:01.327 に答える