2011-07-20 6 views
0

私のプロジェクトでは、Apache Meshのタイルを使用しています。私はタイルでレンダリングされた単一のページに複数のフォームを持っています。Apache MVC 3.0 with Apache Tiles - 1つのページに複数のフォームがあります。

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

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

コードのこの部分を共通の場所またはグローバルコントローラに移動する方法はありますか?書いたすべてのコントローラにこれらの2行を書き込む必要はありませんか?

答えて

2

あなたはpostHandleでこれを行うためにインターセプタを使用することができます。

<mvc:interceptors> 
    <bean class="my.package.DefaultModelInterceptor"/> 
</mvc:interceptors> 
:これは、あなたの春のサーブレットの設定に配線することができ

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); 
    } 
} 

関連する問題