gpt4 book ai didi

xpages - SSJS 脚本库中的全局变量未按预期工作

转载 作者:行者123 更新时间:2023-12-02 08:30:37 24 4
gpt4 key购买 nike

使用 8.5.3 UP1。我在使用 SSJS 脚本库时遇到问题,该脚本库用于“hide/when”或更准确地说是在 xpages“show/ifs”中。无论如何,全局变量似乎采用我上次保存脚本库时的值。他们似乎没有根据文档的当前值进行计算。这是已知的事情吗(显然我不知道。)。以下是演示该问题的示例页面和脚本库:

示例 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;
}
}

有什么想法吗?谢谢

最佳答案

脚本库中的变量本质上是 transient 的。根据系统负载,库可能会在调用之间卸载。全局变量的正确位置是作用域(这就是它们的用途)。在您的示例中, View 范围似乎是合适的。斯文关于计算的看法也是正确的。此外,最好不要有侧面依赖。如果您添加另一个具有不同名称的数据源,您将无法重用您的 ssjs 库。您可以将数据源作为参数移交,例如在渲染结果之前:setstatusDraftVisible(document1,'状态','草稿')在这样的函数中,您检查字段(第二个参数)是否存在并且具有第三个参数的值,然后设置:viewScope.statusDraftVisible=true;//或错误

然后你已经渲染了=“#{JavaScript:viewscope.statusDraftVisible}”

当您的应用程序更加复杂并且需要进行大量此类检查时,您可能会考虑使用 viewScope“支持 bean”(也称为托管 bean)。这可能会减少渲染到渲染=“#{beanName.statusDraftVisible}”

哪个更快。

关于xpages - SSJS 脚本库中的全局变量未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10077178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com