翻译来源: http://xpageswiki.com/web/youatnotes/wiki-xpages.nsf/dx/Debugging_and_error_logging
显示错误页面:
默认的错误页面没有显示出错误的详细信息。
开发时勾选 应用程序属性-->Xpage--->"Display XPage runtime error page" 。
产品发布时重置该选项。
错误处理:
用错误处理语句包裹代码:
try {
...
} catch(e) {
print("error: "+e);
}
print()命令打印内容到服务器控制台或者dominodata/IBM_TECHNICAL_SUPPORT/console.log.
使用print函数:
可以在代码的任何地方使用print()函数打印内容到前述地方。
如果domino服务器在linux上,可能需要使用"tail -f <path to domino data>/IBM_TECHNICAL_SUPPORT/console.log".
记录错误:
在客户端可以使用window.onerror 事件来自动记录javascript错误:
window.onerror = function(errorMessage, url, line) {
var loggerUrl = "/<path to db>/logErrors?OpenAgent";
var parameters = "&description=" + escape(errorMessage)
+ "&url=" + escape(url)
+ "&line=" + escape(line)
+ "&parent_url=" + escape(document.location.href)
+ "&user_agent=" + escape(navigator.userAgent);
/** Send error to server */
new Image().src = loggerUrl + parameters;
};
然后创建一个lotusscript代理,该代理中通过CGI域NotesSession.documentContext.query_string(0)来获取URL中传递的内容,解析这些信息并把它存入日志或者进行其他操作。
自定义控件来打印所有作用域的变量:
可以定义一个如下的自定义控件:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:panel id="applicationVars" styleClass="debugPanel">
<xp:table styleClass="debug">
<xp:tr>
<th>Variable Name</th>
<th>Variable Content</th>
</xp:tr>
<xp:repeat id="varRepeat" rows="30" value="#{javascript:applicationScope.keySet();}" var="scopeData">
<xp:tr>
<xp:td>
<xp:text escape="true" id="varName" value="#{javascript:scopeData}" />
</xp:td>
<xp:td>
<xp:text escape="true" id="varValue" value="#{javascript:applicationScope.get(scopeData)}" />
</xp:td>
</xp:tr>
</xp:repeat>
</xp:table>
</xp:panel>
</xp:view>
在xpage页面中包括该控件,可以获取应用程序作用域的所有变量及其值。同样修改该代码可以获取会话作用域、视图作用域、请求作用域的变量
浏览器端调试:
使用火狐浏览器并安装Firbug及网页开发扩展组件。
如果在其他浏览器上,可以通过以下方式来使用8.5.1+ 提供的Firebug lite库:
使用菜单栏中 window->show eclipse views->other->java/package explorer
在page 透视图中,选择 WebCOntent/WEB-INF/xsp.properties
编辑xsp.properties 文件并增加以下行:
xsp.client.script.dojo.djConfig=isDebug:true
发布产品时注意删除该设置。