使用 8.5.3 UP1。我在用于“隐藏/何时”或更确切地说在 xpages“显示/ifs”中使用的 SSJS 脚本库存在问题。无论如何,全局变量似乎采用了我上次保存脚本库的值。他们似乎没有根据文档的当前值进行计算。这是一个已知的事情(显然我不知道。)。这是一个示例页面和脚本库来演示该问题:
示例 XPage:
<xp:this.resources>
<xp:script src="/ssjsVisTest.jss" clientSide="false"></xp:script>
</xp:this.resources>
<xp:inputText id="inputText1" value="#{document1.StatusTX}"></xp:inputText>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:button value="Save" id="SaveBtn">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action>
<xp:saveDocument var="document1"></xp:saveDocument>
</xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:label id="label1" value="Status is Draft"
rendered="#{javascript:statusVisibleDraft()}">
</xp:label>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:label id="label2" value="Status is Pending"
rendered="#{javascript:statusVisiblePending()}">
</xp:label>
<xp:br></xp:br>
<xp:br></xp:br>
</xp:view>
示例 SSJS 脚本库:
var status = document1.getItemValueString('StatusTX');
function statusVisibleDraft() {
x = (status == "Draft") ? 1 : 0;
if(x > 0) {
return true;
} else {
return false;
}
}
function statusVisiblePending() {
x = (status == "Pending") ? 1 : 0;
if(x > 0) {
return true;
} else {
return false;
}
}
有任何想法吗?谢谢