0

Spring mvc 3.1 バージョンと Apache Tiles 2.2.2 バージョンを使用しています。アプリケーション ページでいくつかの共通モジュールを定義したいと考えています。たとえば、上部、左側、右側にメニューを定義したい..すべてのページにこれらのブロックが表示されます。タイルを使用してさまざまなブロックを定義しています。データベースから情報を取得し、ユーザーがログに記録されているかどうかを知る必要があるため、タイルの一部はViewPreparerを実装しています...各タイルは独自のモジュールを担当しています(データを取得し、 jsp...)。

いくつかのモジュールを作成するのは良い方法ですか? または、データ、ビジネスを定義するコントローラーを定義する必要があります...すべてのページモジュールに? (左側、右側、メニュー...)

4

2 に答える 2

0

共通モジュールが HTML のみで構成されている場合は、それをどのように行うかは問題ではありません。タイル テンプレートで十分です。

問題は、共通モジュールがモデルをコントローラーに取り込む必要がある場合です。ビューに共通モジュールが含まれているすべてのコントローラーでコードを複製したくありません。

取ることができる 1 つのアプローチは、共通のモジュール モデルを生成するクラスを使用してコントローラーをサブクラス化することです。次に例を示します。

public class CommonHandler {

  @ModelAttribute("loggedInUser")
  public UserInfo getLoggedInUser() {
    // check and return logged in user if any here..
  }

}

@Controller
public class MyController extends CommonHandler (

  @RequestMapping(..)
  public String myHandler() {
    // ...
  }

}

上記の例では、myHandlerが要求された場合、getLoggedInUserfromCommonHandlerクラスが自動的に呼び出されてloggedInUserモデルにデータが入力されます。あなたの見解では、それを使用して取得するだけです${loggedInUser}

于 2013-09-01T23:44:54.097 に答える
0

ViewPreparer を実装する ViewPreparerSupport を使用すると、非常にうまく機能します。

@Component
public class MyPreparer extends ViewPreparerSupport {

        @Autowired
        private UtilisateurService utilisateurService;

        @Override
        public void execute(TilesRequestContext tilesContext,
                        AttributeContext attributeContext) {
                //information to set for the jsp tile
        }


}
于 2013-09-03T09:36:04.800 に答える