2017-01-30 2 views
0

Ich habe ein Bestellformular mit einer Bibliothek, die die Preise berechnet. document1 ist die Haupt-Kundendatenquelle und docLineItem ist das Element, das die geordnete Datenquelle ist. Wenn der Benutzer einen Artikel zum Hinzufügen zu der Bestellung eingibt, erstellt der Code den Artikeldatensatz und aktualisiert den Hauptdokument1-Datensatz mit den Summen für den Auftrag (Zwischensumme, erweiterte Gesamtsummen ...). Wenn ich einen Auftrag eingeben und den Kunden eingeben und den ersten Artikel eingeben, wird dieser korrekt gespeichert. Wenn ich das zweite Element eingibt, löst der Code beim Speichern von document1 einen Fehler aus (Ausnahme beim Aufrufen der Methode NotesXspDocument.save() null). Warum macht es das?Warum wird beim zweiten Senden ein Fehler gesendet?

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(); 

Stack Trace:

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) 
+0

Bitte zeigen Sie uns den Rest des Stack-Trace von der Ausnahme. Es ist auf dem Server im Ordner data/IBM_TECHNICAL_SUPPORT verfügbar. Wenn Sie nicht direkt zu den XPages-Protokolldateien auf dem Server gelangen, verwenden Sie den XPages-Protokolldateireader von OpenNTF, um einen einfachen Zugriff auf die Protokolldateien in einem Browser zu erhalten. –

+0

Ich benutze keinen Server, weil wir noch nicht herausgefunden haben, wie man es für einen Benutzer auf VPN durch die Firewall einrichtet und dann auf die Notes DB zugreift. Aber hier ist der Trace von der Fehlerseite. –

Antwort

2

Ziemlich faszinierend. Nach this post besteht die Möglichkeit, dass Sie ein Element mit null Vector füllen. Bestätigt here.

durch das winzige Detail aus dem Stacktrace gegoogelt - NotesException: Note delete failed

0

ich oft fest, dass Änderungen an dem Dokument „hinter“ der XSPDocument etwas bewirken sie als Griff mit einem Null zu werfen. Es verhält sich so, als hätte die Variable keine Verbindung mehr zu dem Dokument dahinter. In einigen meiner Tests gibt es eine NotesID oder UNID des Hintergrunddokuments zurück, aber das XSPDocument zeigt weiterhin einen Fehler mit einer Null an.

Wenn ich solche Fälle habe, speichere ich die NoteID oder UNID in einer Variablen und erstelle eine neue Instanz zum Speichern.

Ich bin nicht sicher, dass das die effizienteste Methode ist (tatsächlich bin ich mir sicher, dass es nicht ist), aber es funktioniert, bis ich feststellen kann, warum das XSPDocument seine Verbindung verliert (was ich noch nicht gefunden habe)). Ich würde gerne eine bessere Methode sehen.

+0

Falls dies innerhalb des Skripts in der Zeile docLineItem.save hilft, wenn ich eine neue Zeile eintippe, die mit docLineItem beginnt. Notizen geben mir eine Auswahl, welche Methoden verfügbar sind. Wenn ich das gleiche mit document1 mache. es gibt mir nicht den Drop-Down. Warum das? Ich übergebe document1 als Attribut an das Skript, aber alle replaceItemValue-Zeilen funktionieren, nur nicht das Speichern. –

+0

Brian, es sieht so aus, als hätte ich den Grund dafür gefunden. Ich habe ein Feld in dem Dokument1-Eintrag als Null festgelegt. Null und "" sind in Javascript anders und manchmal tut es eins und manchmal das andere. Ich habe das noch nicht herausgefunden, aber ich denke, das war der Fall. –

Verwandte Themen