0

いくつかのリクエストパラメータに応じて異なるビューをレンダリングするために、いくつかの既存のアプリケーションを変更する必要があります。このアプリケーションはタイルを使用しています。これまでタイルを使用したことがないので、これを行う方法について少しヒントが必要です。

タイルは次のように定義されます。

<bean id="viewResolver"class="org.springframework.web.servlet.view.UrlBasedViewResolver"><property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" /></bean>

リクエストにいくつかのパラメータがある場合、私がwelcome.tileを持っているとしましょう。id=xyzおよび tile xyz.welcome.tileが存在します。これをレンダリングしたいと思います。存在しない場合は、デフォルトをレンダリングしたいと思います。私のコントローラーは、 welcome.tileをビューとして返しますが、コントローラーにコードを追加したくありません。これをできるだけ簡単に行いたいと考えています。

私の考えは、何らかの形でビューの解像度を傍受して、リクエストに応じてパラメーターをチェックし、パラメーターからのプレフィックスを持つ特定のタイルが存在するかどうかを確認し、存在する場合はそれを使用することでした。しかし、どこから始めればよいかわかりません。

これは古いコードなので、残念ながらあまり変更する余裕はありません。

よろしくお願いします

4

1 に答える 1

1

UrlBasedViewResolver希望のリクエストパラメーターを読み取り、この情報でビュー名を構築するバージョンで拡張できると思います。ViewResolver インターフェイスが HttpRequest のインスタンスを提供しないことを知っているので、org.springframework.web.util.RequestHolder.currentRequest()静的メソッドを使用して取得できます。

このように、リクエストが (たとえば)/mvc/dailyReport/criticalStuffの場合、viewName は次のようになります。dailyReport.criticalStuff

を要求した場合 /mvc/dailyReport/criticalStuff?printable、viewName は、dailyReport.criticalStuff.printableこれがビューの印刷可能なバージョンであるとして解決できdailyReport.criticalStuffます。

それが役に立てば幸い

于 2010-09-16T15:31:11.380 に答える