何年にもわたって、私はModel-View-Controllerデザインパターンとそれが提供する利点にかなりの愛情を抱きました。しかし、Webアプリケーションに関しては、これらの利点を最大限に活用するのに苦労しています。
UsersComponentというコンポーネントを作成する場合、次のもので構成されます。
- ユーザーのリスト
- このユーザーリストをアクティブにフィルタリングするテキストフィールド
次に、Java Swingでは、JPanelを拡張したクラスUserComponentを簡単に実行でき、UserComponent内で、クラスのモデル化、表示、および制御を行うことができます。そして、非常に簡単に再利用可能なコンポーネントになります。
さて、私がやりたいのは、Java-EEでこれを模倣することです。文字列テンプレートは、このための解決策を提供するようです。しかし、さらにひねりを加えました。私はウェブデザイナーが好きです。また、開発者を関与させたり、使用するエントリポイントに多くのことを入れたりすることなく、コンポーネントを追加する機会を提供したいと思います。
たとえば、ベースページテンプレートがあり、設計者がこのページのどこかにUserComponentコンポーネントを追加したいとします。次に、ほとんどの場合、いくつかのリクエストパラメータに基づいてモデルにデータを入力する必要があります。
それで、これが実際の質問です。特定のテンプレートにどのテンプレートが含まれているかを判断する方法を知っている人はいますか。したがって、このテンプレートを実行時に(または変更するたびに)分析し、メインページコントローラーで適切なハウスキーピングを実行できますか?
基本的に、私はこれを達成することができました:
- Designerはstringtemplateを作成します。言う、MyPage.st
- モジュールを書き換えると、www.mydomain.com / IgnoredFolderNameForSeo/MyPageがwww.mydomain.com/pagerenderservlet?templateName=MyPageに変更されます。
- ページレンダリングサーブレットは、パラメータに基づいてstringtemplateをロードし、それを分析して文字列テンプレート内で使用されているコンポーネントを判別し、必要に応じてそれらを初期化します。
現在、私が思いついた最善の解決策は、ベースページごとに異なるサーブレットを用意することです。これにより、機能のさまざまなサブセットが公開されます。しかし、私はこの解決策にまったく満足していません。動的に処理する可能性があれば、とてもきれいになります。基本的に、サポートされているすべてのコンポーネントのハンドラーがありますが、実際に必要なコンポーネントのみを初期化/処理します。
私はこれについてあなたたちの考えを聞いてみたいです:)
** アップデート **
私のスイングについての言及は、この問題を少し混乱させたと思います。私がやりたいのは、文字列テンプレートを介してWebデザイナーが利用できるコンポーネントを作成することです。このコンポーネントは、任意の文字列テンプレートに含めることができます。
だから私はそれがすべてこれに帰着すると思います。
文字列テンプレートフレームワークを知っている人はいますか?実行時に、他のどの文字列テンプレートが文字列テンプレートに含まれているかを判断できます。