이전 게시물의 추가 정보입니다. 나는 그것을 할 수있는 한 간단한 사건으로 격리 할 수 있었다. 내가 작업하고있는 응용 프로그램에서 사용자가 문서를 열었을 때 변경할 수있는 applicationScope 변수의 값을 기반으로 조건부 부분 새로 고침을 수행하려고합니다. partialRefresh가 호출 될 때 partialRefresh 대상이 pageLoad 이벤트에서만 동적으로 평가되지 않는 것으로 나타나기 때문에 작동하지 않습니다. 이를 증명하기 위해 업데이트없이 True와 False 사이에서 viewScope 변수를 토글하는 작은 테스트 XPage를 만들었습니다. 그런 다음 panelTrue 또는 panelFalse를 새로 고칠 지 여부를 지정하는 partialRefresh 수식이있는 버튼입니다. 기본적으로 문서를 처음 열면 refshes되고 panelFalse가 표시됩니다. vsIsTrue가 null이고 False로 해석되기 때문입니다. vsISTrue를 True로 전환 한 다음 부분 새로 고침 단추를 클릭하면 panelFalse가 새로 고쳐진 패널이라는 것을 알 수 있습니다. 결코 패널이 아닙니다. 부분 새로 고침에 대한 수식에 주석을 추가하고 부분 새로 고침 수식을 새로 고칠 때마다 실행하고 올바른 프로세스를 반환하지만 패널을 실제로 panelTrue로 새로 고칠 수는 없습니다.조건부 부분 새로 고침
제 궁금한 점은 - 다른 방법이 있습니까? 어떻게 볼 수 없기 때문에. 나는 아래의 소스를 포함했다 - 당신이 dbBar 참조를 제거해야 할 수도 있으므로 :
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xc="http://www.ibm.com/xsp/custom">
<xc:ccDebugToolbar defaultCollapsed="false" collapseTo="left"></xc:ccDebugToolbar>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:button id="SetViewScope" value="Toggle View Scope">
<xp:eventHandler event="onclick" submit="true" refreshMode="norefresh">
<xp:this.action><![CDATA[#{javascript:(viewScope.get("vsIsTrue")) ? viewScope.put("vsIsTrue",false) : viewScope.put("vsIsTrue",true)}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:button value="Partial Refresh" id="PartialRefresh">
<xp:eventHandler event="onclick" submit="true" refreshMode="partial"
refreshId='#{javascript:if (viewScope.get("vsIsTrue")){
dBar.info("Refesh panelTrue");
return "panelTrue";
break;
}else {
dBar.info("Refresh panelFalse");
return "panelFalse";
break;
}}'>
</xp:eventHandler>
</xp:button>
<xp:panel id="panelTrue">
This is panelTrue - viewScope(vsIsTrue) =
<xp:text escape="true" id="computedField1" value="#{viewScope.vsIsTrue}"></xp:text>
</xp:panel>
<xp:panel id="panelFalse">
This is panelFalse - viewScope(vsIsTrue;) =
<xp:text escape="true" id="computedField2" value="#{viewScope.vsIsTrue}"></xp:text>
</xp:panel>
</xp:view>
그냥 당신이 특정 조건에서 새로 고침을 방지하고자하는 명확하거나 변경하고자 할 *는 새로 고침 :이 경우, 부분 새로 고침 버튼은 다음과 같이한다 ? 이전 질문에서 당신의 목표가 전자였던 것처럼 보였지만이 질문에 대해서는 후자를 시도하는 것처럼 보입니다. –
ExtLib은 옵션입니까? 스위치 구성 요소가 도움이됩니다. –
@Tim - 목표를 변경하고 싶습니다. 범위 변수가 변경 될 때 vsIsTrue = true이면 부분적 새로 고침을 수행하고 그렇지 않으면 업데이트를 수행하지 않는 것이 좋습니다. –