1

sessionScope変数に基づいてカスタムコントロールを追加するにはどうすればよいですか。ページコンテナコントロールを含めようとしましたが、うまくいきませんでした。

<xp:this.afterPageLoad><![CDATA[#{javascript:sessionScope.put("viewName","ccViewAll.xsp");}]]></xp:this.afterPageLoad>
<xp:text escape="true" id="computedField1">
    <xp:this.value><![CDATA[#{javascript:sessionScope.get("viewName")}]]></xp:this.value>
</xp:text>
<xc:appLayout>
    <xp:this.facets>
        <xp:panel xp:key="facetMiddle">
            <xp:include id="include1">
                <xp:this.pageName><![CDATA[${javascript:sessionScope.get("viewName")}]]>
                </xp:this.pageName>
            </xp:include>
        </xp:panel>
    </xp:this.facets>
</xc:appLayout>

上記のコードでエラーエラー404HTTPWebサーバー:アイテムが見つかりません例外が発生します。しかし、sessionScope.get( "viewName")ではなくccViewAll.xspであるビュー名をハードコーディングすると、正常に機能します。

-MAK

4

3 に答える 3

4

XPages用のExtLibがある場合は、動的コンテンツコントロールまたはswitchFacetコントロールを使用できます。Teamroomテンプレート(ExtLibに付属のデモアプリケーション)は、「allDocuments」Xpageまたは「allDocsAllTab」カスタムコントロールでこれらを使用します。これらは、確認するのに適した例です。

ExtLibがない場合は、カスタムコントロールのloaded / renderプロパティを使用して、どちらをロードするかを決定できます。

例えば

<xp:panel key="MiddleColumn">
   <xc:customControl1 loaded="${javascript: if(viewScope.control == "customControl1")}"></xc:customControl1>
   <xc:customControl2 loaded="${javascript: if(viewScope.control == "customControl2")}"></xc:customControl2>
</xp:panel>

load = falseは、このコントロールに対して何も行われないことを意味します。render = falseは、コントロールが作成されるが非表示になることを意味します。後でこれを変更して表示することができます。

たとえば、起動時にボタンがクリックされてロードされ、ユーザーがログインしている間は変更されない場合など、ボタンが変更される場合は、renderedを使用します。

于 2012-05-30T08:02:15.067 に答える
3

これを使用して、拡張ライブラリの「動的ビューパネル」コントロールを確認することをお勧めする他の選択に基づいて、ドミノデータベースに別のビューを表示する場合。

このコントロールを使用すると、使用するビューごとに異なるカスタムコントロールを作成する必要がなくなります。このコントロールを使用して単一のページを作成し、スコープ変数を介して表示する正しいビューを指定するだけです。

各ビューの表示方法をカスタマイズする必要がある場合は、viewControl Beanを作成して、表示されているビューに基づいて追加のプロパティを設定できます。

于 2012-05-30T14:12:52.047 に答える
0

言及する価値のあることは、ExtLibを使用しない場合-部分更新を使用している場合は、ロードされたプロパティはpageLoadでのみ計算できるため、レンダリングされたプロパティを使用する必要があるということです。

私の理解では、これはすべてのカスタムコントロールがサーバーによって計算されることを意味し、おそらくそれはあなたが望むものではありません。(1つには、オーバーヘッドが追加されました。)

/ J

于 2012-05-31T06:51:57.590 に答える