2

App1 と App2 という 2 つの Web アプリケーションを作成しました。

App1 には複数のページ (Page1.jsp および Page2.jsp) があります。App1 は、2 つのページにリンクするメニューを持つスタンドアロン アプリケーションです。

App2 には複数のページ (Page3.jsp および Page4.jsp) があります。App2 は、2 つのページにリンクするメニューを持つスタンドアロン アプリケーションでもあります。

ここで、App1 または App2 を変更せずに、App1 と App2 をスーパー アプリケーションに結合したいと考えています。このスーパー アプリケーションには、App1/Page1.jsp、App1/Page2.jsp、App2/Page3.jsp、および App2/Page4.jsp にリンクするメニューが必要です。

これを行うためのいくつかのアプローチを考えています。

解決策 1: フレーム

App1 と App2 のページにリンクするメニューを持つメニュー フレームを作成できます。

App1 と App2 のコンテンツを表示するために使用される別のフレームを持つことができます。

ただし、フレーム ( http://www.html-faq.com/htmlframes/?framesareevil ) を使用することに熱心ではありません。

解決策 2: URL パラメーターに基づいてメニューを動的に構築する

スーパー アプリケーションには、App1 と App2 にリンクする div ベースのメニューを含めることができます。App1/Page1.jsp?parent=SuperApp など、URL にパラメータを渡すことができます。

App1 と App2 は、親パラメーターに基づいてメニューを動的に構築できます。

たとえば、parent パラメータが存在しない場合、App1 は Page1.jsp と Page2.jsp にリンクする通常のメニューを使用します。

ただし、parent パラメータが存在する場合、App1 は SuperApp メニュー (SuperApp/header.html) を使用します。この HTML は JSP ページに動的に含まれます。この SuperApp メニューは、App1 と App2 で提供されるすべてのページにリンクします。

この 2 番目の解決策は、フレームを使用しなくても機能しますが、考慮していない他の解決策があるかどうかを調べたいと思いました。

4

2 に答える 2

2

メニューを担当する 3 番目の Web アプリケーションを用意するのはどうでしょうか。

ここに画像の説明を入力

各ページに非常に小さな JavaScript コンポーネントを構成して、メニュー アプリケーションに AJAX 呼び出しを行い、メニュー アプリケーションにデータを設定します。通常、これは空<div>の特別なクラスまたは ID で実装されます。メニューを見つけて追加するスクリプト (MenuApp からダウンロード) も<div>あります。

いくつかのアイデア:

  • 最も単純な実装は、MenuApp がサーブレット構成を使用してメニュー オプションを構成することです。より柔軟なアプローチでは、SQL または NoSQL DB を使用できます
  • パラメータ化された呼び出し。呼び出しページはメニュー コンテキスト (LoggedIn、AdvancedUser、Configuration など) で呼び出すことができ、MenuApp はメニュー項目の適切なサブセットを返します。
  • さらに高度: ユーザーは自分のお気に入りを設定できます

これの主な欠点は追加のコールバックですが、既に AJAX を使用している場合、これは非常に低いオーバーヘッドになる可能性があります。

ところで、これは、FaceBook、Google+、Twitter、Pinterest などで Like、PlusOne などのボタンを実装する方法と似ていますが、サードパーティの Web アプリケーションへの侵入は最小限に抑えられています。例: https://developers.google.com/+/plugins/+1button/

于 2013-02-18T07:04:25.083 に答える
0

考えられる解決策の1つは、2つのアプリケーションを一緒に使用する場合にポートレットを使用することです。展開は同じで、App1とApp2に変更を加える必要はありません。使用するポートレットコンテナによって構成は異なりますが、最終的には、アプリケーションごとに1つのポートレットがあり、そのポータルのメニューを構成して、各アプリケーションのURLをターゲットにします。

考えられる2つの解決策は、LiferayJetspeedです。二人で働いた。また、JBossGateInポートレットコンテナもあります。

于 2013-02-24T21:32:45.563 に答える