練習用にswitchFacetを作りたいのですが、だめです。実際、どこから始めればよいかわかりません。これはjavaだけで書けますか?これが私のコードです。sessionScope を介して変数を渡そうとします。ボタンは値を更新しますが、ファセットは更新しません。URL をクリックしてから ENTER をクリックすると、ファセットの値が変わります。
これは私の Xpage です:
<xc:FacetContainerCC viewPanelTest="#{sessionScope.VarTest}">
<xp:this.facets>
<xp:div xp:key="SecondCC"><xc:SecondCC></xc:SecondCC></xp:div>
<xp:div xp:key="FirstCC"><xc:FirstCC></xc:FirstCC></xp:div>
</xp:this.facets>
<xp:button value="#{javascript:sessionScope.VarTest}" id="button1">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:if (sessionScope.get("VarTest") == "First")
sessionScope.put("VarTest", "Second"); else sessionScope.put("VarTest","First");}]]>
</xp:this.action>
</xp:eventHandler>
そして私の側面:
<xp:callback id="callback1">
<xp:this.facetName><![CDATA[#{javascript:
var viewPanelTest = sessionScope.get("VarTest");
if (viewPanelTest == "First") return "FirstCC";
else return "SecondCC";}]]>
</xp:this.facetName>
ボタンによるページの更新と URL の再入力には違いがあることに気付きました。ボタンは POST リクエスト、URL を再入力すると GET リクエストになります。FirstCC と SecondCC は、ファセットにドロップされたカスタム コンポーネントです。そして...同じ名前のsessionScope変数がクライアントとサーバーに共存していますよね?