0

XPage には、選択した項目に基づいて sessionScope 変数を設定するナビゲーターがあります。次に、SwitchFacet でその値を使用して、いくつかの異なるビューの 1 つを表示していました。これはうまくいきましたが、switchFacet はすべてのビューのツリー全体をロードし、dynamicContent コントロールは選択したパネルのツリーのみをロードすることを理解しています。そこで、次のコードを使用して、XPage の panelAll 内に dynamicContent コントロールを作成しました (Navigator は panelAll onClick の部分的なリフレッシュを行います)。

<xp:panel id="panelAll" style="width:auto">
  <xe:dynamicContent id="dynamicContent1">
    getComponent("dynamicContent1").show(sessionScope.get("ssSelectedView");
    <xp:this.facets>
      <xp:panel xp:key="vwProfile">
        <xc:ccProfileView></xc:ccProfileView>
      </xp:panel>
      <xp:panel xp:key="vwPending">
        <xc:ccTransactionView></xc:ccTransactionView>
      </xp:panel>
      <xp:panel xp:key="vwAgentLog">
        <xc:ccAgentView></xc:ccAgentView>
      </xp:panel>

    </xp:this.facets>
  </xe:dynamicContent>
</xp:panel>

問題は、switchFacet のようにビューが変更されないことです。sessionScope 変数 ID が正しく設定されており、onClick の部分的な更新によって panelAll が更新され、別のパネルを選択して読み込む必要があることはわかっていますが、vwProfile ビューのみが表示されます。動的コンテンツを機能させるために他に何かする必要がありますか?

4

2 に答える 2

1

残念ながら、dynamicContent コントロールは部分的な更新では機能せず、ページの完全な再読み込みでのみ機能します。私も数ヶ月前に同じことを試しましたが、うまくいきませんでした。

回避策を使用して、「動的コンテキスト」の一部をカスタム コントロールに配置し、それらのrenderedプロパティを使用して、sessionScope 変数の状態に応じてそれらを表示しました。

XPages エンジンは常にすべてのカスタム コントロールのすべてのコンテンツをツリーに保持するため、完全ではありませんが、中程度の複雑なアプリケーションでは問題ありません。

于 2013-10-18T05:37:41.190 に答える
1

に電話する必要がありますdynamicContent.show("yourFacetName")。このように、私にとってはうまくいきます。部分更新 (および部分実行モード) を使用していますが.show()、ファセット内から呼び出しています。それが違いを生むかどうかはわかりません。このようなもの:

<xe:dynamicContent id="dynamicContent1"
defaultFacet="read">
 <xp:this.facets>
  <xp:panel xp:key="read">
   <xp:link>
    <xp:eventHandler event="onclick"
submit="true" refreshMode="partial" refreshId="tableRow"
execMode="partial" execId="tableRow">
     <xp:this.action><![CDATA[#{javascript:var c = getComponent("dynamicContent1");
c.show("edit");}]]></xp:this.action>
    </xp:eventHandler>
   </xp:link>
  </xp:panel>
  <xp:panel xp:key="edit">
 </xp:this.facets>
</xe:dynamicContent>
于 2013-10-18T06:04:00.733 に答える