Xpages 为什么save在第二次发送错误时';过去的

Xpages 为什么save在第二次发送错误时';过去的,xpages,Xpages,我有一个带有计算定价库的订单。document1是主要的客户数据源,docLineItem是已订购的数据源。当用户输入要添加到订单中的项目时,代码将创建项目记录,并使用订单的总计(小计、扩展总计…)更新主document1记录。如果输入订单并输入客户并输入第一项,则会正确保存。当我输入第二项时,代码在document1 save上抛出一个错误(调用方法notesxpdocument.save()null时发生异常)。为什么要这样做 docLineItem.replaceItemValue

我有一个带有计算定价库的订单。document1是主要的客户数据源,docLineItem是已订购的数据源。当用户输入要添加到订单中的项目时,代码将创建项目记录,并使用订单的总计(小计、扩展总计…)更新主document1记录。如果输入订单并输入客户并输入第一项,则会正确保存。当我输入第二项时,代码在document1 save上抛出一个错误(调用方法notesxpdocument.save()null时发生异常)。为什么要这样做

    docLineItem.replaceItemValue("ItemPrice", Number(vQtyPrice));
    docLineItem.replaceItemValue("ItemExtPrice", Number(vExtPrice));
    docLineItem.replaceItemValue("IncenInd", viewScope.vsIncenInd);
    docLineItem.replaceItemValue("SplitInd", viewScope.vsSplitInd);
    docLineItem.save(true);

    document1.replaceItemValue("OrderSubTot", Math.round((vSubTot * 100) / 100));
    document1.replaceItemValue("OrderIncenTot", Math.round((vIncenTot * 100) / 100));
    document1.replaceItemValue("OrderTDTot", Math.round((vTDTot * 100) / 100));
    document1.replaceItemValue("OrderGTot", Math.round((vGTot * 100) / 100));
    document1.save();
堆栈跟踪:

    javax.faces.FacesException: Error while executing JavaScript action expression
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:102)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:96)
com.ibm.xsp.controller.FacesControllerImpl.execute(FacesControllerImpl.java:256)
com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:228)
com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:157)
com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160)
com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138)
com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103)
com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:576)
com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1335)
com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:853)
com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:796)
com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:565)
com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1319)
com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:662)
com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:482)
com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:350)
com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:306)
com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272)
com.ibm.xsp.exception.EvaluationExceptionEx: Error while executing JavaScript action expression
com.ibm.xsp.binding.javascript.JavaScriptMethodBinding.invoke(JavaScriptMethodBinding.java:126)
com.ibm.xsp.application.ActionListenerImpl.processAction(ActionListenerImpl.java:60)
javax.faces.component.UICommand.broadcast(UICommand.java:324)
com.ibm.xsp.component.UIEventHandler.broadcast(UIEventHandler.java:366)
com.ibm.xsp.component.UIDataPanelBase.broadcast(UIDataPanelBase.java:400)
com.ibm.xsp.component.UIViewRootEx.broadcast(UIViewRootEx.java:1535)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:307)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:428)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:94)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:96)
com.ibm.xsp.controller.FacesControllerImpl.execute(FacesControllerImpl.java:256)
com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:228)
com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:157)
com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160)
com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138)
com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103)
com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:576)
com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1335)
com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:853)
com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:796)
com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:565)
com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1319)
com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:662)
com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:482)
com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:350)
com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:306)
com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272)
com.ibm.jscript.InterpretException: Script interpreter error, line=327, col=19: [TypeError] Exception occurred calling method NotesXspDocument.save()
null
com.ibm.xsp.script.WrapperDominoEx$fct_DominoDocument.call(WrapperDominoEx.java:527)
com.ibm.jscript.types.FBSObject.call(FBSObject.java:161)
com.ibm.jscript.ASTTree.ASTCall.interpret(ASTCall.java:197)
com.ibm.jscript.ASTTree.ASTDebug.interpret(ASTDebug.java:148)
com.ibm.jscript.std.FunctionObject._executeFunction(FunctionObject.java:261)
com.ibm.jscript.std.FunctionObject.executeFunction(FunctionObject.java:185)
com.ibm.jscript.std.FunctionObject.call(FunctionObject.java:171)
com.ibm.jscript.types.FBSObject.call(FBSObject.java:161)
com.ibm.jscript.ASTTree.ASTCall.interpret(ASTCall.java:197)
com.ibm.jscript.ASTTree.ASTDebug.interpret(ASTDebug.java:148)
com.ibm.jscript.ASTTree.ASTProgram.interpret(ASTProgram.java:119)
com.ibm.jscript.ASTTree.ASTProgram.interpretEx(ASTProgram.java:139)
com.ibm.jscript.JSExpression._interpretExpression(JSExpression.java:435)
com.ibm.jscript.JSExpression.access$1(JSExpression.java:424)
com.ibm.jscript.JSExpression$2.run(JSExpression.java:414)
java.security.AccessController.doPrivileged(AccessController.java:362)
com.ibm.jscript.JSExpression.interpretExpression(JSExpression.java:410)
com.ibm.jscript.JSExpression.evaluateValue(JSExpression.java:251)
com.ibm.jscript.JSExpression.evaluateValue(JSExpression.java:234)
com.ibm.xsp.javascript.JavaScriptInterpreter.interpret(JavaScriptInterpreter.java:222)
com.ibm.xsp.binding.javascript.JavaScriptMethodBinding.invoke(JavaScriptMethodBinding.java:111)
com.ibm.xsp.application.ActionListenerImpl.processAction(ActionListenerImpl.java:60)
javax.faces.component.UICommand.broadcast(UICommand.java:324)
com.ibm.xsp.component.UIEventHandler.broadcast(UIEventHandler.java:366)
com.ibm.xsp.component.UIDataPanelBase.broadcast(UIDataPanelBase.java:400)
com.ibm.xsp.component.UIViewRootEx.broadcast(UIViewRootEx.java:1535)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:307)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:428)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:94)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:96)
com.ibm.xsp.controller.FacesControllerImpl.execute(FacesControllerImpl.java:256)
com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:228)
com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:157)
com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160)
com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138)
com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103)
com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:576)
com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1335)
com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:853)
com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:796)
com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:565)
com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1319)
com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:662)
com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:482)
com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:350)
com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:306)
com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272)
NotesException: Note delete failed
lotus.domino.local.Document.Nsave(Native Method)
lotus.domino.local.Document.save(Unknown Source)
lotus.domino.local.Document.save(Unknown Source)
com.ibm.xsp.model.domino.wrapped.DominoDocument.save(DominoDocument.java:1192)
com.ibm.xsp.script.WrapperDominoEx$fct_DominoDocument.call(WrapperDominoEx.java:505)
com.ibm.jscript.types.FBSObject.call(FBSObject.java:161)
com.ibm.jscript.ASTTree.ASTCall.interpret(ASTCall.java:197)
com.ibm.jscript.ASTTree.ASTDebug.interpret(ASTDebug.java:148)
com.ibm.jscript.std.FunctionObject._executeFunction(FunctionObject.java:261)
com.ibm.jscript.std.FunctionObject.executeFunction(FunctionObject.java:185)
com.ibm.jscript.std.FunctionObject.call(FunctionObject.java:171)
com.ibm.jscript.types.FBSObject.call(FBSObject.java:161)
com.ibm.jscript.ASTTree.ASTCall.interpret(ASTCall.java:197)
com.ibm.jscript.ASTTree.ASTDebug.interpret(ASTDebug.java:148)
com.ibm.jscript.ASTTree.ASTProgram.interpret(ASTProgram.java:119)
com.ibm.jscript.ASTTree.ASTProgram.interpretEx(ASTProgram.java:139)
com.ibm.jscript.JSExpression._interpretExpression(JSExpression.java:435)
com.ibm.jscript.JSExpression.access$1(JSExpression.java:424)
com.ibm.jscript.JSExpression$2.run(JSExpression.java:414)
java.security.AccessController.doPrivileged(AccessController.java:362)
com.ibm.jscript.JSExpression.interpretExpression(JSExpression.java:410)
com.ibm.jscript.JSExpression.evaluateValue(JSExpression.java:251)
com.ibm.jscript.JSExpression.evaluateValue(JSExpression.java:234)
com.ibm.xsp.javascript.JavaScriptInterpreter.interpret(JavaScriptInterpreter.java:222)
com.ibm.xsp.binding.javascript.JavaScriptMethodBinding.invoke(JavaScriptMethodBinding.java:111)
com.ibm.xsp.application.ActionListenerImpl.processAction(ActionListenerImpl.java:60)
javax.faces.component.UICommand.broadcast(UICommand.java:324)
com.ibm.xsp.component.UIEventHandler.broadcast(UIEventHandler.java:366)
com.ibm.xsp.component.UIDataPanelBase.broadcast(UIDataPanelBase.java:400)
com.ibm.xsp.component.UIViewRootEx.broadcast(UIViewRootEx.java:1535)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:307)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:428)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:94)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:96)
com.ibm.xsp.controller.FacesControllerImpl.execute(FacesControllerImpl.java:256)
com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:228)
com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:157)
com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160)
com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138)
com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103)
com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:576)
com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1335)
com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:853)
com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:796)
com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:565)
com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1319)
com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:662)
com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:482)
com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:350)
com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:306)
com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272)

我经常发现对XSPDocument“后面”文档的更改会导致任何将其用作句柄的操作抛出null。它的作用就像变量不再与它后面的文档有连接一样。在我的一些测试中,它将返回后台文档的NotesID或UNID,但XSPDocument仍将返回null错误

当我遇到这样的情况时,我将NoteID或UNID存储在一个变量中,并创建一个新实例来保存


我不确定这是最有效的方法(事实上,我肯定不是),但在我能够确定XSPDocument为何会失去连接(我还没有找到)之前,它是有效的。我希望看到更好的方法。

我经常发现,对XSP文档“后面”的文档所做的更改会导致任何将其用作句柄的操作抛出空值。它的作用就像变量不再与它后面的文档有连接一样。在我的一些测试中,它将返回后台文档的NotesID或UNID,但XSPDocument仍将返回null错误

当我遇到这样的情况时,我将NoteID或UNID存储在一个变量中,并创建一个新实例来保存

我不确定这是最有效的方法(事实上,我肯定不是),但在我能够确定XSPDocument为何会失去连接(我还没有找到)之前,它是有效的。我想看看更好的方法。

非常有趣的方法。 根据,有可能用空向量填充某些项。确认

通过stacktrace中的微小细节进行谷歌搜索-
注释异常:注释删除失败

非常有趣。 根据,有可能用空向量填充某些项。确认


通过stacktrace中的微小细节进行谷歌搜索-
注释异常:注释删除失败

,如果我键入以docLineItem开头的新行,则在脚本中的docLineItem.save行中这会有所帮助。Notes将为我提供可用方法的下拉列表。如果我对document1做同样的事情。它没有给我下拉列表。为什么呢?我将document1作为属性传递给脚本,但是所有的replaceItemValue行都可以工作,只是没有保存。Brian,看起来我找到了原因。我正在将document1记录中的一个字段设置为null。Null和“”在javascript中是不同的,有时它做一个,有时做另一个。我还没有弄明白,但我认为情况就是这样。如果我键入一个以docLineItem开头的新行,在脚本中的docLineItem.save行,这会有所帮助。Notes将为我提供可用方法的下拉列表。如果我对document1做同样的事情。它没有给我下拉列表。为什么呢?我将document1作为属性传递给脚本,但是所有的replaceItemValue行都可以工作,只是没有保存。Brian,看起来我找到了原因。我正在将document1记录中的一个字段设置为null。Null和“”在javascript中是不同的,有时它做一个,有时做另一个。我还没有弄明白,但我认为情况就是这样。请向我们展示异常的剩余堆栈跟踪。它位于服务器上的data/IBM\u TECHNICAL\u SUPPORT文件夹中。如果无法直接访问服务器上的XPages日志文件,请使用OpenNTF中的XPages日志文件读取器从浏览器轻松访问日志文件。我不使用服务器,因为我们还没有弄清楚如何配置它,以便用户通过防火墙进入VPN,然后访问Notes DB。但这是错误页的跟踪..请向我们展示异常的堆栈跟踪的其余部分。它位于服务器上的data/IBM\u TECHNICAL\u SUPPORT文件夹中。如果无法直接访问服务器上的XPages日志文件,请使用OpenNTF中的XPages日志文件读取器从浏览器轻松访问日志文件。我不使用服务器,因为我们还没有弄清楚如何配置它,以便用户通过防火墙进入VPN,然后访问Notes DB。但这是错误页面的跟踪。。