0

私のプロジェクトでは、Apache タイルで spring mvc (3.0) を使用しています。タイルを介してレンダリングされた 1 つのページに複数のフォームがあります。

ログインフォームと検索フォームはほとんどのページに共通です。タイル定義の「本体」は変化し続けます。

したがって、以下に示すように、すべての mvc コントローラーで、対応するモデルにコマンド オブジェクトを明示的に設定する必要があります。1. model.put("userBO", userBO); 2. model.put("searchBO", searchBO);

コードのこの部分を共通の場所またはグローバル コントローラーに移動して、作成するすべてのコントローラーでこれらの 2 行を記述する必要がないようにする方法はありますか?

4

1 に答える 1

2

postHandleでインターセプターを使用してこれを行うことができます。

public class DefaultModelInterceptor extends HandlerInterceptorAdapter {

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

    modelAndView.addObject("userBO", userBO);
    modelAndView.addObject("searchBO", searchBO);

    super.postHandle(request, response, handler, modelAndView);
    }
}

これは、Springサーブレット設定に配線できます。

<mvc:interceptors>
    <bean class="my.package.DefaultModelInterceptor"/>
</mvc:interceptors>
于 2012-05-14T11:42:48.247 に答える