我试图通过将selectedTab ID存储在sessionScope变量中,然后将此值指定为' selectedTab'来保留动态手风琴控件的最后一个选定状态。当控件加载/刷新而不是默认为第一个选项卡时,Accordion Container的参数。
下面的代码是一个简单的XPage,它演示了我当前的位置,它存储了所选Accordion Tab的ID,但是继续默认为刷新时的第一个标签.....有人可以指出我在哪里&#39我错了。
'在页面创建时创建控件'被检查(真实)
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xe="http://www.ibm.com/xsp/coreex"
xmlns:debug="http://www.openntf.org/xsp/debugtoolbar">
<xp:this.beforePageLoad><![CDATA[#{javascript:sessionScope.tabLabels = ["Tab1","Tab 2","Tab 3"];
if (!sessionScope.containsKey("openTab")){sessionScope.openTab = ""};
}]]></xp:this.beforePageLoad>
<xe:djAccordionContainer id="djAccordionContainer1"
selectedTab="#{javascript:sessionScope.openTab}">
<xp:repeat id="repeat1" rows="30" value="#{sessionScope.tabLabels}"
var="tabs" indexVar="tabIndex" repeatControls="true">
<xe:djAccordionPane style="font-weight:bold"
title="#{javascript:tabs}">
<xe:this.id><![CDATA[${javascript:"djAccordionPane" + tabIndex}]]>
</xe:this.id>
<xp:label value="Label" id="label7"></xp:label>
<xp:br></xp:br>
<xp:label value="Label" id="label8"></xp:label>
<xp:br></xp:br>
<xp:label value="Label" id="label9"></xp:label>
<xp:eventHandler event="onShow" submit="true"
refreshMode="complete">
<xe:this.action><![CDATA[#{javascript:sessionScope.openTab =
this.getParent().getId();}]]></xe:this.action>
</xp:eventHandler>
</xe:djAccordionPane>
</xp:repeat>
<xe:this.dojoAttributes>
<xp:dojoAttribute name="doLayout" value="false"></xp:dojoAttribute>
</xe:this.dojoAttributes>
</xe:djAccordionContainer>
<xp:span style="font-weight:bold"></xp:span>
</xp:view>