Xpages 嵌套的 dojo 选项卡容器重复带有复选框组的 dojo 选项卡面板 - 不更新
Xpages nested dojo tab container repeat dojo tab panel with checkboxgroup - does not update
您好,我是 Xpages 的新手,遇到了一个问题,我在搜索后找不到相关的问题/答案(请参阅搜索词的标题)。
如果能深入了解如何解决以下问题,我将不胜感激。
我有一个 3 个 Dojo 选项卡容器嵌套,每个容器包含一个带有 Dojo 选项卡控件的重复容器,最里面的选项卡控件带有一个标准的 checkBoxGroup。
选项卡的计算标签是从 multi-dimensional sessionScope 变量中读取的,最终维度包含为 checkBoxGroup 计算的 'label|value' 对。数据绑定到文档。
我可以在各个选项卡和 select/deselect 复选框之间切换,并且在选项卡之间来回切换时状态仍然被跟踪。然而,这就是症结所在,只有最后一个选项卡上的 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>
repeat 的所有行都绑定到同一个sessionScope 变量。这意味着它们将 替换 而不是 附加到 作用域变量。
要在重复中绑定可编辑字段,您需要按照 Tim 的回答 to this question 做一些事情。我建议在所有重复项上设置 repeatControls="true"
,以便在加载页面时创建和绑定行。使用动态绑定的组件可能会得到不可预测的结果,因为在初始加载之后,它是从组件到存储值的任何位置的单向映射。如果重复的顺序发生变化,组件值不会,因此值将与您期望的值不一致。
您好,我是 Xpages 的新手,遇到了一个问题,我在搜索后找不到相关的问题/答案(请参阅搜索词的标题)。
如果能深入了解如何解决以下问题,我将不胜感激。
我有一个 3 个 Dojo 选项卡容器嵌套,每个容器包含一个带有 Dojo 选项卡控件的重复容器,最里面的选项卡控件带有一个标准的 checkBoxGroup。
选项卡的计算标签是从 multi-dimensional sessionScope 变量中读取的,最终维度包含为 checkBoxGroup 计算的 'label|value' 对。数据绑定到文档。
我可以在各个选项卡和 select/deselect 复选框之间切换,并且在选项卡之间来回切换时状态仍然被跟踪。然而,这就是症结所在,只有最后一个选项卡上的 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>
repeat 的所有行都绑定到同一个sessionScope 变量。这意味着它们将 替换 而不是 附加到 作用域变量。
要在重复中绑定可编辑字段,您需要按照 Tim 的回答 to this question 做一些事情。我建议在所有重复项上设置 repeatControls="true"
,以便在加载页面时创建和绑定行。使用动态绑定的组件可能会得到不可预测的结果,因为在初始加载之后,它是从组件到存储值的任何位置的单向映射。如果重复的顺序发生变化,组件值不会,因此值将与您期望的值不一致。