您好我是Xpages的新手,并且在搜索后遇到了一个我无法找到相关问题/答案的问题(请参阅搜索字词的标题)。
我很高兴能够深入了解如何解决以下问题。
我有一个包含3个Dojo Tab容器的嵌套,每个容器包含一个带有Dojo Tab Control的重复容器,最内层的Tab Control带有一个标准的checkBoxGroup。
从多维sessionScope变量中读取选项卡的计算标签,最终维度包含checkBoxGroup的计算“标签|值”对。数据绑定到文档。
我可以在各个选项卡之间切换并选择/取消选中复选框,并在切换选项卡之间时保持跟踪状态。但是,这是关键,只有最终选项卡上的checkBoxGroup值在提交时写回底层文档,其他最里面的选项卡上显示的checkBoxGroup值将被忽略。
感谢收到有关如何解决此问题的任何建议指导。
<xe:djTabContainer id="djTabContainer1"
style="height:600px;width:1200.0px"
doLayout="false">
<xe:this.rendered><![CDATA[#{javascript:control = getComponent("STP2radioGroup1");
control2 = getComponent("STP2radioGroup2");
if (control == null || control2 == null){return false;};
val = control.getValue();
val2 = control2.getValue();
if (val == "None" || val2 == "All") {
false ;
}
else {
true;
}}]]></xe:this.rendered>
<xp:repeat id="repeat1" rows="30"
value="${sessionScope.GHC}" var="GHCTabs" first="0"
indexVar="GHCTabIndex" repeatControls="true">
<xe:djTabPane id="djTabPane1"
title="#{javascript:GHCTabs}">
<xe:this.rendered><![CDATA[#{javascript:!empty(sessionScope.Services[GHCTabIndex])}]]></xe:this.rendered>
<xe:djTabContainer id="djTabContainer2"
style="height:550px" doLayout="false">
<xp:repeat id="repeat3" rows="30"
value="${sessionScope.Enviro}" var="EnviroTabLables"
indexVar="EnviroTabIndex" first="0" repeatControls="true">
<xe:djTabPane id="djTabPane2"
title="#{javascript:EnviroTabLables}">
<xe:this.rendered><![CDATA[#{javascript:!empty(sessionScope.Services[GHCTabIndex][EnviroTabIndex])}]]></xe:this.rendered>
<xe:djTabContainer
id="djTabContainer3" style="height:500px"
doLayout="false">
<xp:repeat id="repeat2"
rows="30" value="${sessionScope.Aspect}" var="AspectTabs"
indexVar="AspectTabIndex" first="0"
repeatControls="true">
<xe:djTabPane
id="djTabPane3" title="#{javascript:AspectTabs}">
<xe:this.rendered><![CDATA[#{javascript:try{
if (sessionScope.Services[GHCTabIndex][EnviroTabIndex][AspectTabIndex] == null){false}
else
{true}
}
catch(e){
dBar.error("Error in 'Visible' property for Aspect Tab for checkBoxGroup - " + e.toString)}}]]></xe:this.rendered><xp:checkBoxGroup
id="checkBoxGroup1" styleClass="threeColumnCheckboxGroup"
value="#{Subscription.Services}" style="width:100.0%">
<xp:selectItems>
<xp:this.value><![CDATA[${javascript:try{
if (sessionScope.Services[GHCTabIndex][EnviroTabIndex][AspectTabIndex] == null){
dBar.error("sessionScop.Services["+GHCTabIndex+"]["+EnviroTabIndex+"]["+AspectTabIndex+"] = null")}
else
{sessionScope.Services[GHCTabIndex][EnviroTabIndex][AspectTabIndex]}
}
catch(e){
dBar.error("checkBoxGroup")}}]]></xp:this.value>
</xp:selectItems>
</xp:checkBoxGroup>
</xe:djTabPane>
</xp:repeat>
</xe:djTabContainer>
</xe:djTabPane>
</xp:repeat>
</xe:djTabContainer>
</xe:djTabPane>
</xp:repeat>
</xe:djTabContainer>
答案 0 :(得分:1)
重复的所有行都绑定到同一个sessionScope变量。这意味着他们将替换而不是追加范围变量。
对于在重复中绑定可编辑字段,您需要按照Tim的答案to this question执行某些操作。我建议在所有重复上设置repeatControls="true"
,以便在加载页面时创建和绑定行。对于动态绑定的组件,您可能会得到不可预测的结果,因为在初始加载之后,它是从组件到存储值的任何位置的单向映射。如果重复的顺序发生变化,则组件值不会发生变化,因此这些值将与您的预期不一致。