意外错误:执行JavaScript / Reference错误

时间:2013-09-23 14:20:32

标签: xpages

我没有对这个数据库进行任何更改,突然间,我在加载各种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>

1 个答案:

答案 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,从最后删除最后的},您的代码将在您预期的上下文中执行。