1

ヘッダー セクション (Apache タイル属性) は、複数のビューで共有されます。ページがロードされたときにオブジェクトを期待し、オブジェクトが見つからない場合は文句を言うフォームがあります。現時点では、オブジェクトをモデルに配置し、このレイアウトを継承するビューを作成するたびにコントローラーを使用してビューに渡しています。

コントローラー全体で行を繰り返しているため、このアプローチはかなり面倒に思えます。一度追加して完了できるようにしたいです。

私は Apache Tiles にあまり詳しくありませんが、私が気付いていない単純な解決策があるかもしれません。

役立つヒントを探しています。

ありがとう

4

2 に答える 2

0

これを行うには、いくつかのオプションがあります。あなたができる私の頭の上から。

  1. Tiles ビュー プリペアラーを使用します。簡単な例はこちら
  2. どこでもコードを繰り返す代わりに、Spring インターセプターや AOP などのメカニズムを使用して、オブジェクトをモデルに自動的に追加します。

それは、追加するオブジェクトの性質と、必要なコンテキストの量に大きく依存します。

于 2013-01-23T16:10:05.703 に答える
0

HandlerInterceptorAdapterクラスとメソッドを使用して、postHandleそのようなことを実現できます。短所として、オブジェクトをモデルにいつ追加する必要があるかを知るのに役立つルールを定義する必要があります。それはパスまたはURLの何かである可能性があり、テンプレートがどのように構成されているかによって異なります。これは、そのようなことをしているインターセプターの例です。

インターセプターの定義:

<mvc:interceptors>
    <bean class="your.package.HeaderModelInterceptor"/>
</mvc:interceptors>

インターセプタークラス:

public class HeaderModelInterceptor extends HandlerInterceptorAdapter {

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
        ModelAndView modelAndView) throws Exception {

        // Check if you need to add the object
        if (Your rule) {
            modelAndView.addObject("headerObject", headerObject);
        }

        super.postHandle(request, response, handler, modelAndView);
    }
}
于 2013-01-23T16:16:42.890 に答える