0

xpage にセクションがあり、デフォルトで開いています。セクションを閉じて部分的に更新すると、セクションが再び開きます。

これを防ぐ簡単な方法はありますか?

4

1 に答える 1

0

Hehe、あなたの問題によると、ここでコメントしたことをテストするために小さな XPage を作成しました。

<xp:panel id="refresh">
    <xp:section id="section1" initClosed="false">
        <xp:panel id="innerRefresh">Section content</xp:panel>
    </xp:section>
</xp:panel>

<xp:button value="refresh inner div" id="button3">
    <xp:eventHandler event="onclick" submit="true" refreshMode="partial"
        refreshId="innerRefresh">
        <xp:this.action><![CDATA[#{javascript://refresh}]]></xp:this.action>
    </xp:eventHandler>
    </xp:button>

<xp:button value="refresh outer div" id="button4">
    <xp:eventHandler event="onclick" submit="true" refreshMode="partial"
        refreshId="refresh">
        <xp:this.action><![CDATA[#{javascript://refresh}]]></xp:this.action>
    </xp:eventHandler>
    </xp:button>

<xp:button value="refresh section" id="button1">
    <xp:eventHandler event="onclick" submit="true" refreshMode="partial"
        refreshId="section1">
        <xp:this.action><![CDATA[#{javascript://refresh}]]></xp:this.action>
    </xp:eventHandler></xp:button>

    <xp:button value="full refresh" id="button2">
    <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
        <xp:this.action><![CDATA[#{javascript://refresh}]]></xp:this.action>
    </xp:eventHandler></xp:button>

さまざまな方法でセクションを更新しようとして、各ボタンを 1 回または 2 回押して約 1 秒間隔を置いても異常は見られませんでしたが、「セクションの更新」ボタンを複数回押すと、セクションが再び開きます。この効果は、IE8 と Firefox 19.0.2 で動作します。セクションの周りに panel/div を使用し、セクション direkt の代わりに更新することをお勧めします。

アップデート:

これを試してください。最大 3 つのセクションが動的に作成され、それぞれが独自のボタンで更新可能であり、それらは閉じたままになります。

<xp:this.beforePageLoad><![CDATA[#{javascript:var sectioncount:java.util.Vector = @Explode("1,2,3",",");
viewScope.put("sectioncount",sectioncount);
viewScope.put("selectedSection", sectioncount)

}]]></xp:this.beforePageLoad>

<xp:checkBoxGroup id="checkBoxGroup1"
        value="#{viewScope.selectedSection}">
        <xp:this.defaultValue><![CDATA[#{javascript:return viewScope.get( "sectioncount" );}]]></xp:this.defaultValue>
        <xp:eventHandler event="onchange" submit="true"
            refreshMode="complete">
            <xp:this.action><![CDATA[#{javascript:// full update //partial update}]]></xp:this.action>
        </xp:eventHandler>
        <xp:selectItems>
            <xp:this.value><![CDATA[#{javascript:return viewScope.get( "sectioncount" );}]]></xp:this.value>
        </xp:selectItems>
</xp:checkBoxGroup>


    <xp:repeat id="repeat2" rows="30" var="varcollection"
        repeatControls="true">
        <xp:this.value><![CDATA[#{javascript:return viewScope.get( "sectioncount" );}]]></xp:this.value>
            <xp:panel>
                            <xp:this.rendered><![CDATA[#{javascript:var vec:java.util.Vector = viewScope.get( "selectedSection" );
return @IsMember(varcollection,vec);
}]]></xp:this.rendered>
                            <xp:button value="refresh this section:" id="button3">
                <xp:eventHandler event="onclick" submit="true" refreshMode="partial"
                    refreshId="refresh">
                    <xp:this.action><![CDATA[#{javascript://refresh}]]></xp:this.action>
                </xp:eventHandler>
                </xp:button>
                <xp:panel id="refresh">
                    <xp:section id="section1" initClosed="false">
                        <xp:panel id="innerRefresh">

                            <xp:text>
                                <xp:this.value><![CDATA[#{javascript:var date:java.util.Date = new java.util.Date;
return date.toTimeString()}]]></xp:this.value>
                            </xp:text></xp:panel>
                    </xp:section>                   
                </xp:panel>
                </xp:panel>
     </xp:repeat>
于 2013-05-29T13:33:39.180 に答える