Xpages xp中的值:部分刷新后未更新确认。为什么?
在xpage上,我计算xp:confirm控件的消息:Xpages xp中的值:部分刷新后未更新确认。为什么?,xpages,xpages-ssjs,Xpages,Xpages Ssjs,在xpage上,我计算xp:confirm控件的消息: var arr = viewScope.get("attachmentsAll"); if(arr.length>0){ return ""; }else{ return arr.length + " Are you sure want to upload the file?"; } 执行事件后,将更新viewScope。我通过xp:text检查了这一点,我注意到这个假设是正确的 <xp:text escape
var arr = viewScope.get("attachmentsAll");
if(arr.length>0){
return "";
}else{
return arr.length + " Are you sure want to upload the file?";
}
执行事件后,将更新viewScope。我通过xp:text检查了这一点,我注意到这个假设是正确的
<xp:text escape="true" id="computedField1"><xp:this.value><![CDATA[#{javascript:var arr = viewScope.get("attachmentsAll")
return arr.length + " number?"}]]></xp:this.value></xp:text>
xp:confirm和xp:text位于事件后部分更新的同一面板中
有人能解释一下为什么viewScope变量的值在xp:text控件中更新而不是在xp:confirm控件中更新吗?我对上一个问题的主要想法是使用计算值来隐藏输入。如果您尝试使用xp:confirm而不是xp:confirm,并以相同的方式从隐藏的输入中获取确认消息,会怎么样
更新
不需要对现有xpage进行任何更改的原因和替代解决方案
结果表明,xp:confirm的后端实例正确地评估了新消息。新的值甚至与对ajax请求的响应一起发送到浏览器。但是XSP客户机模块的其中一个函数被构建,这样,如果已经存在同名的querySubmit侦听器函数,它就不会更新该函数。因此,我们只能使用包含旧消息的旧确认函数。有一种方法可以在不破坏任何其他功能的情况下覆盖此行为。我试过这个,它对我有效
在客户端创建一个新的JavaScript库。添加代码:
如果XSP.U推送器{
XSP.uuPushListener=XSP.pushListener;
XSP._pushListener=函数x_upllisteners,formId,clientId,scriptId,listener{
如果scriptId&&scriptId.endsWith\u确认{
对于变量i=0;i