0

JSP/Spring MVC を使用して Web アプリケーションを作成しており、それを使用する顧客に基づいて UI をカスタマイズする必要があります。画面の特定のセクションを非表示/表示し、特定のラベルとそのテキスト ボックスを非表示にして、さまざまな顧客に基づいてラベルを変更する必要があります。現在、ログインした顧客に基づいて、要素と div によって JSP の非表示/表示を制御しています。例えば:

if (customer= "A")

show this

else 

hide this

顧客を追加すると、コードが乱雑になり、JSP が肥大化します。私が考えたもう 1 つの代替案は、ページをセクションに分割し、セクションを同じ方法で制御することですが、JSP 全体でコードが繰り返される可能性があります。

例えば

if (customer = "A")

jsp:include headerA.jsp

else

jsp:include genericheader.jsp

もう 1 つの方法は、クライアントに基づいて異なる JSP とルートを作成することです。

この種の状況を処理するためのより良い方法はありますか。誰かがそのようなソリューションを実装するためのベストプラクティスを提案できますか?

ありがとう。

4

3 に答える 3

2

ユーザーごとに何をするかを選択する UI は、おそらくユーザー A と B を超えて拡張することはできません。ロールベースの認証および承認システムが必要です。

すでに Spring を使用しているので、Spring Security とその役割ベースの機能を検討することをお勧めします。参考になるタグがあります。

別の見方をすれば、このような役割ベースのロジックはタグに属さないということです。コントローラーに入れて、ページを組み立てさせることをお勧めします。

もう 1 つの可能性は、複合ビューを作成できる SiteMesh のようなものです。

もう 1 つ、jQuery は DOM を操作するために生まれました。CSSと合わせてご利用ください。

于 2012-10-09T23:25:05.050 に答える
0

人 A が 1 つのストアからログインする場合と、人 B が別のストアからログインする場合について述べました。言いたくないのですが、それは役割です。どう考えても、これはユーザーの承認に関連しています。

実装方法に関しては、さまざまなことを行うことができます。ログイン要求をインターセプトし、正しいビューを決定するために文字列を先頭に追加するセッション変数を設定できます (つまり、ユーザー a がログインすると、customerA を取得し、vsしたがって、ビューをレンダリングするときに値を取得し、「customerA/index」と「customerB/index」などをレンダリングします。

コントローラー内でのユーザーの役割を決定し、適切なビューをレンダリングすることもできますが、これはユーザーの役割をコントローラー ロジックに結合するため、私の意見ではお勧めできません。

このアプリに多くの異なるバックエンドが含まれる場合は、新しいストア バックエンドごとに Web アプリケーションを肥大化させるのではなく、アプリごとに新しいバックエンドを作成できるポートレットをお勧めします。

これらはほんのいくつかの方法です。これがお役に立てば幸いです。

于 2012-10-11T13:55:23.700 に答える
0

まず、顧客ではなく役割に基づく必要があり、各顧客には特定の役割があります。多くの顧客が同じ役割、画面アクセス、および UI を持っている可能性があります。

ロールに基づいて、Spring Secutiry を認証と承認に使用できます。

顧客の役割ごとにレイアウトを異なる方法で使用する必要がある場合は、Tiles、SiteMesh などのレイアウト マネージャーを使用することをお勧めします。

または、顧客ごとに異なるログイン ビューのポートレットを使用する

于 2012-10-11T06:18:05.063 に答える