我没有对这个数据库进行任何更改,突然间,我在加载各种Xpages时出现(500)错误。在这个,当我在数据库属性的xpages选项卡上切换到“显示Xpage运行时错误”时,它会在web下面显示错误。
如果我删除了包含此客户端代码的按钮(之前它完全可以验证编辑框),则错误只会移到页面上的下一段JavaScript并产生类似的错误。
我试过“清理”项目。我尝试使用服务器ID对整个数据库进行签名。
非常感谢任何帮助!
The runtime has encountered an unexpected error.
Error source
Page Name:/msr.xsp
Control Id: _id20
Exception
Error while executing JavaScript computed expression
Script interpreter error, line=3, col=8: [ReferenceError] 'XSP' not found
------按钮控件:
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action>
<xp:actionGroup>
<xp:actionGroup>
<xp:modifyField
name="Status">
<xp:this.value><![CDATA[#{javascript:if (document1.isNewNote()) {
"Submitted to Project Officer";
}
else if (document1.Status == "Submitted to Project Officer"){
"Submitted to Supervisor";
}
else{
"Completed";
}}]]></xp:this.value>
</xp:modifyField>
<xp:saveDocument
var="document1">
</xp:saveDocument>
<xp:changeDocumentMode
mode="readOnly" var="document1">
</xp:changeDocumentMode>
</xp:actionGroup>
</xp:actionGroup>
</xp:this.action>
<xp:this.script>
<xp:executeClientScript>
<xp:this.script><![CDATA[#{javascript:
if(XSP.getElementById("#{id:ProjectTitle}").value == ""){
XSP.getElementById("#{id:ProjectTitle}").focus();
XSP.getElementById("#{id:ProjectTitle}").style.backgroundColor = "pink";
alert("Please enter a Project Title.");
return false;
}
else{
XSP.getElementById("#{id:ProjectTitle}").style.backgroundColor = "#ffe";
}
///NOT sole source
if(XSP.getElementById("#{id:RT}").innerHTML == "MSR"){
if(XSP.getElementById("#{id:SoleSource}").checked == false){
if(XSP.getElementById("#{id:SS_Name1}").value == ""){
XSP.getElementById("#{id:SS_Name1}").focus();
XSP.getElementById("#{id:SS_Name1}").style.backgroundColor = "pink";
alert("Please fill in the Name of Suggested Source 1.");
return false;
}
else{
XSP.getElementById("#{id:SS_Name1}").style.backgroundColor = "#ffe";
}
}
}
}]]></xp:this.script>
</xp:executeClientScript>
</xp:this.script></xp:eventHandler>
</xp:button>
答案 0 :(得分:8)
script
操作的executeClientScript
属性看起来像是在计算中。源应该看起来像这样:
<xp:executeClientScript>
<xp:this.script>
<![CDATA[if(XSP.getElementById("#{id:ProjectTitle}").value == ""){...
]]></xp:this.script>
</xp:executeClientScript>
相反,你有这个:
<xp:executeClientScript>
<xp:this.script>
<![CDATA[#{javascript:if(XSP.getElementById("#{id:ProjectTitle}").value == ""){...
}]]></xp:this.script>
</xp:executeClientScript>
该语法意味着,您不是简单地输入客户端JavaScript来执行,而是运行服务器 -side JavaScript来计算客户端JavaScript应该是什么是。服务器端JavaScript没有像客户端JavaScript那样定义全局XSP
对象,这就是为什么你得到ReferenceError
。
从#{javascript:
块的开头删除CDATA
,从最后删除最后的}
,您的代码将在您预期的上下文中执行。