2012-05-07 7 views
3

私は、Java、Spring、Struts 2、およびHibernateにweb-appを持っており、複数のクライアントをサーバーしています。複数のユーザーを持つ各クライアント。各クライアントのための個人的な感触を作成するために、私は各クライアントのヘッダーをカスタマイズしたいと思います。 私はデコレータとしてsitemeshを使用しており、ヒントや例、またはベストプラクティスでこれを実現する方法について正しい方向に向けることができる人物を探しています。マルチクライアントWebアプリケーションをデコレートする

あなたはどう思いますか? header.jspで直接コード化する必要がありますか?ログインしたユーザーに関する情報を抽出し、そのコードからカスタムヘッダーを作成しますか?それとももっと巧妙な解決策がありますか?

ありがとうございます!

アップデート:さらに、私が欲しいものclearifyする

:クライアントごとに異なる特性 -ファイルはオプションではありません。我々は、数百のクライアントを見ている。データベース駆動型である必要があります。しかし、それは簡単な部分です。情報をdbに格納し、必要に応じて抽出することは問題ありません。

これを行うための標準的な方法があるかどうかを確認しようとしています。デモレータに正しい情報を提供するsitemeshデコレータの前に実行される何らかのフィルタまたはアクション?

+0

どのようにクライアントを区別しますか? – user497087

+0

クライアントID。私はログインしたユーザーから取得します。 – user829237

答えて

1

Struts2は、アプリケーションにグローバルな変数のアプリケーションスコープを提供します。

すべての顧客固有の文字列を#applicationスコープに読み込みます(アプリケーション起動時にspringを使用します)。そこから文字列を参照することはかなり明白です:#application.greeting私は傍受するものがないので、傍受者を使う考えが嫌いです。私はあなたがアプリケーションスコープをやっていることが完璧な場所だと言うでしょう。単一のクライアントシステムであれば、アプリケーションスコープに何かが格納される理由はわかりません。

脇腹:タイルは、サイトメッシュとは異なるテンプレートパラダイムを使用しますが、目的はわずかです。したがって、2つは相補的であり得る。 XML定義に依存しているタイルは、定義がDBに格納されていることがありますが、異なるUIコンポーネント間の相互作用がある場合や、sitemeshを使用する必要があるページに表示される異種要素がある場合は、だから、基本的なテンプレートの必要性のタイルはすべてを行い、理解するのは簡単ですが、ヘッダーに追加する必要があるJSに依存する特定のウィジェットをページの中央に追加したいとします(ただし、明白な解決策は、サイトの特定の部分ですべての可能な使用のために1つのJSファイルにJS機能をロールすることです)。

asside 2:タイルと組み合わせて速度やフリーマーカなどのビューテクノロジを使用すると、ビューレイヤ全体をデータベースに移動することが考えられます。私はちょうどそれが非常に有益であるかもしれないいくつかのメンテナンスの問題について言及すると思った。

+0

ありがとうございますが、データベース駆動型である必要があります。私の更新された説明を見てください。 – user829237

+0

答えを書き換えました。これらの文字列を一度だけロードする(または、管理ページから再ロード可能だが、アプリケーション全体のすべてのページをロードする必要はありません)。これは非常に簡単ですむため、時期尚早の最適化ではありません。使いやすい。 – Quaternion

+0

もう一度ありがとうございます。私は今、これを実装するために私の道にあります。起動時にコンテキスト内にHashMap を配置しています。これはJSPでアクセス可能です。今度は、clientIdを渡してマップから正しいプロパティを取得するだけです。私はここで暗闇の中で掴んでいるので、どのようにjspで正しくアクセスするためのヒントは非常に役立つだろう! – user829237

0

Sitemeshは、要求されたURL文字列に基づいてどのような装飾を使用するかを決定します。したがって、メインURL文字列の一部または既知のパラメータとしてクライアントにすべてのURLを参照する必要がない限り、箱の中は助けにならない。

これは、あなたが望むものを達成するいくつかの可能性を残します。すべての着信要求に

1)例えば、追加Sitemesh前に実行されるフィルタを書く、「&はclientIdを=」XX」。

どこSitemeshついに用Sitemesh &一見のためのソースコードに2)ダイブ

3)jspページ内のスタイルシート定義をOGNL式にして、次のように指定します。あなたのすべてのアクションが拡張するベースアクションクラス内のその情報。この方法で、クライアントごとに異なるCSSファイルを(潜在的に)完成させ、 CSSによるカスタマイズ

これが役立つことを願っています。

関連する問題