3

1 つの XPages アプリケーションで複数のテーマを使用し、各テーマをアプリケーションの別のセクションでアクティブにする方法を探しています。たとえば、公開 Web サイト (カスタム テーマ) と OneUI テーマの CMS の両方で単一の .nsf アプリケーションをサポートする場合などです。

アプリケーション プロパティの XPage プロパティ タブで、アプリケーション全体で使用するテーマを設定できます。次のコードを使用して、ユーザーのセッションのテーマを変更することもできます。

context.setSessionProperty("xsp.theme", <theme_id>)

しかし、どちらのオプションも現在の .nsf 内のすべてのページのテーマを設定します。アプリケーションの一部にテーマ X を指定し、別の部分にテーマ Y を指定する方法を探しています。

これは可能ですか?

4

5 に答える 5

3

上記のすべてを試しましたが、どれもうまくいきませんでした。しかし、私は解決策を見つけました:

これをビューの beforeRenderResponse イベントに貼り付けます。

context.setSessionProperty("xsp.theme", "yourAlternateThemeName")

1 つの問題があります。一度この方法を使用すると、ログインしている限り保存されるセッション プロパティが設定されるため、常にすべてのページで使用する必要があります。

于 2013-05-02T15:24:33.833 に答える
3

代替テーマを使用する必要があるページでは、次の構文を使用してプロパティをビュー ルートに直接適用します。

<xp:view>
<xp:this.properties>
<xp:parameter name="xsp.theme" value="alternateThemeName" />
</xp:this.properties>
</xp:view>
于 2012-02-20T20:18:06.527 に答える
1

あなたが説明している特定のユースケースに基づいて、ページ固有のテーマを持つという考えが好きですが、これを行う「正しい」方法は、2 つの別個の XPage アプリケーションを同じバックエンドデータストアにバインドすることです。これにより、それぞれに異なるテーマを簡単に指定できるようになるだけでなく、ACL も簡素化され (公開サイトと CMS にアクセスする人が異なると仮定して)、アプリケーションごとに異なる設定を使用することでパフォーマンスの調整が容易になります。 、およびアプリケーション固有の設定がなくても、Java クラスローダーの動作により、パフォーマンスがわずかに向上するはずです。各 NSF は個別の ClassLoader として機能し、NSF 内の各 XPage またはカスタムコントロールは個別のクラスファイルのストレージになります。したがって、理論的には、公開サイトの機能で 5 つの XPage を作成する必要があり、CMS 機能が 10 の XPage にまたがる場合、単純にこれらを 2 つの個別のアプリに分割するだけで、ユーザーがロードするページのクラスをクラス ローダーが取得しやすくなります。その時点で必要な 1 つのクラスを見つけるためだけに、そのユーザーが必要としないクラスを無視する必要はありません。そのため、ページ固有のテーマを「クール」な要素だけで機能させる方法を見つけたいと思っていますが、この特定の目的のために、それぞれに異なるテーマを割り当てて、2 つの異なるアプリケーションを完全に使用することをお勧めします。 . その時点で必要な 1 つのクラスを見つけるためだけに、そのユーザーが必要としないクラスを無視する必要はありません。そのため、ページ固有のテーマを「クール」な要素だけで機能させる方法を見つけたいと思っていますが、この特定の目的のために、それぞれに異なるテーマを割り当てて、2 つの異なるアプリケーションを完全に使用することをお勧めします。 . その時点で必要な 1 つのクラスを見つけるためだけに、そのユーザーが必要としないクラスを無視する必要はありません。そのため、ページ固有のテーマを「クール」な要素だけで機能させる方法を見つけたいと思っていますが、この特定の目的のために、それぞれに異なるテーマを割り当てて、2 つの異なるアプリケーションを完全に使用することをお勧めします。 .

于 2012-02-22T18:29:22.317 に答える
1

同僚のトニー・マクガッキンと話をしたところです。

ページごとにテーマを変更できます。XPage のすべてのプロパティで data-properties を選択し、名前が「xsp.theme」で値が「yourThemeName」の新しいプロパティを作成します。

于 2012-02-21T12:59:34.283 に答える
0

私はテーマについてあまり知りませんが、正しいスタイル、css、およびその他のリソースが含まれているviewroot(idで?)にあるテーマ(いくつかのssjsを使用)をチェックインできませんか?

于 2012-02-21T02:28:30.583 に答える