Browser XPages:org.openntf.domino.impl.Document类型的Notes对象跨线程使用

Browser XPages:org.openntf.domino.impl.Document类型的Notes对象跨线程使用,browser,xpages,lotus-notes,Browser,Xpages,Lotus Notes,有人能解释一下这是什么意思吗?我一点也不知道。。。即使发生了也不行。我很乐意提供代码,但我甚至不知道从哪里开始 谢谢 更多信息: com.ibm.xsp.exception.EvaluationExceptionEx: Error while executing JavaScript computed expression Error while executing JavaScript computed expression Erreur d'interpréteur de script, l

有人能解释一下这是什么意思吗?我一点也不知道。。。即使发生了也不行。我很乐意提供代码,但我甚至不知道从哪里开始

谢谢

更多信息:

com.ibm.xsp.exception.EvaluationExceptionEx: Error while executing JavaScript computed expression
Error while executing JavaScript computed expression
Erreur d'interpréteur de script, ligne=1, colonne=17 : [TypeError]     
Exception lors de l'appel de la méthode NotesXspDocument.getItemValueString(string)
Notes-Object of type org.openntf.domino.impl.Document is used across threads! 
This Thread: Thread[Thread-8,5,main] correct Thread: Thread[Thread-11,5,main]
Notes-Object of type org.openntf.domino.impl.Document is used across threads! 
This Thread: Thread[Thread-8,5,main] correct Thread: Thread[Thread-11,5,main]

java.lang.IllegalStateException: Notes-Object of type org.openntf.domino.impl.Document is used across threads! 
This Thread: Thread[Thread-8,5,main] correct Thread: Thread[Thread-11,5,main]
文档本身会正常打开。当我打开使用jsonRpcService控件的自制值选择器时,会发生错误

还有更多:

我找到了执行NotesXPDocument.getItemValueString(string)的位置。事实证明,这是一个DataContext变量,我可以很容易地不使用它。DataContext无法从dominoDocument1对象重新加载其值(我不知道为什么)。结果:关于线程内容的错误500不再存在,但我得到了另一个作为交换

它仅在使用Dojo对话框和RPC控件时发生

新错误:错误400错误请求

原因:com.ibm.commons.util.io.json.JsonException:Chaîne littérale de classe com.ibm.jscript.types .FBSUndefined inconue 在com.ibm.commons.util.io.json.JsonGenerator$Generator.outteral(JsonGenerator.java:169)上 在com.ibm.commons.util.io.json.JsonGenerator$Generator.outObject(JsonGenerator.java:214)上

更新(6月16日) 更多信息,现在在我们代码的其他地方:

<xp:this.rendered><![CDATA[#{javascript:dominoDocument1.getItemValueString("Form")=="MProcessus"}]]></xp:this.rendered>

据我所知,保存dominoDocument1时会发生相同的错误,并且更改了一个值

更新(6月26日) 使用下面的代码(偶尔)会产生几乎相同的消息。它发生在计算isCurrentVersion的行上,请参见箭头

<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xc="http://www.ibm.com/xsp/custom" dojoParseOnLoad="true"
    dojoTheme="true" xmlns:xe="http://www.ibm.com/xsp/coreex">
    <xp:this.data>
        <xp:dominoDocument var="dominoDocument1" formName="MProcessus">
            <xp:this.postOpenDocument>...</xp:this.postOpenDocument>
            <xp:this.querySaveDocument>...</xp:this.querySaveDocument>
            <xp:this.postSaveDocument>...</xp:this.postSaveDocument>
        </xp:dominoDocument>
    </xp:this.data>
    <xp:this.resources>
        ...
    </xp:this.resources>
    <xp:this.beforePageLoad>...</xp:this.beforePageLoad>
    <xp:this.afterPageLoad>...</xp:this.afterPageLoad>
    <xp:this.afterRestoreView>...</xp:this.afterRestoreView>
    <xp:panel style="margin: 0 auto;position:relative" styleClass="fixedWidth" id="Document">
        <xp:table style="width: 100%" id="DocumentTable">
            <xp:tr>
                <xp:td style="width:#{javascript:return UserData.getScreenWidth();}px" align="left">
                    <xe:switchFacet id="switchFacet2">
                        <xe:this.selectedFacet><![CDATA[#{viewScope.buttonsFacet}]]></xe:this.selectedFacet>
                        <xe:this.facets>
                            <xc:ccDocButtons xp:key="Doc" dialogAction="dbAction" dialogMail="dbMail"
                                isModel="#{javascript:viewScope.isModel}" isEditable="#{javascript:dominoDocument1.isEditable()}"
                                isEditor="#{javascript:viewScope.isEditor}">
-->                             <xc:this.isCurrentVersion><![CDATA[#{javascript:dominoDocument1.getItemValueString("VersionCourante")=="TRUE"}]]></xc:this.isCurrentVersion>
                                <xc:this.isOriginalVersion><![CDATA[#{javascript:!dominoDocument1.getItemValueInteger("aAIndice")}]]></xc:this.isOriginalVersion>
                            </xc:ccDocButtons>
                            <xc:ccActionButtons xp:key="Action" dialogAction="dbAction" dialogMail="dbMail"></xc:ccActionButtons>
                        </xe:this.facets>
                    </xe:switchFacet>
                </xp:td>
            </xp:tr>

...
...
...
...
...
...
...
-->                             
在ccDocButtons内部,isCurrentVersion的使用方式如下:

    <xp:image url="/actEnregPlus.jpg" id="image15" alt="Enregistrer comme nouvelle version"
        title="Enregistrer comme nouvelle version" styleClass="clickable">
        <xp:this.rendered><![CDATA[#{javascript:compositeData.isEditable && !UserData.isReadOnly() && compositeData.isCurrentVersion  && !compositeData.isOriginalVersion && !compositeData.isModel}]]></xp:this.rendered>

当您尝试将文档放入其中一个作用域(应用程序、会话、视图或请求)时,可能会发生这种情况。Domino对象不能存储在作用域中,因为一旦加载页面,它们就会被回收,然后再次尝试访问该对象会导致错误

对于OpenNTF Domino API,同样的情况也会发生,但错误是不同的,因为它尝试重新创建原始对象的句柄,但随后检测到发出请求的线程不同,因此抛出错误


我认为首先要做的是检查您是否正在尝试在作用域中存储文档,以及是否正在重新编码应用程序,以便仅将unid存储到文档中,然后使用该unid将文档再次获取到您的值选择器中。

当您尝试将文档放入其中一个作用域时,可能会发生这种情况(应用程序、会话、视图或请求)。Domino对象不能存储在作用域中,因为一旦加载页面,就会回收这些对象,然后再次尝试访问该对象会导致错误

对于OpenNTF Domino API,同样的情况也会发生,但错误是不同的,因为它尝试重新创建原始对象的句柄,但随后检测到发出请求的线程不同,因此抛出错误


我认为首先要做的是检查您是否正在尝试在作用域中存储文档,以及是否正在重新编码应用程序,以便仅将unid存储到文档中,然后使用该unid将文档再次获取到您的值选择器中。

当您尝试将文档放入其中一个作用域时,可能会发生这种情况(应用程序、会话、视图或请求)。Domino对象不能存储在作用域中,因为一旦加载页面,就会回收这些对象,然后再次尝试访问该对象会导致错误

对于OpenNTF Domino API,同样的情况也会发生,但错误是不同的,因为它尝试重新创建原始对象的句柄,但随后检测到发出请求的线程不同,因此抛出错误


我认为首先要做的是检查您是否正在尝试在作用域中存储文档,以及是否正在重新编码应用程序,以便仅将unid存储到文档中,然后使用该unid将文档再次获取到您的值选择器中。

当您尝试将文档放入其中一个作用域时,可能会发生这种情况(应用程序、会话、视图或请求)。Domino对象不能存储在作用域中,因为一旦加载页面,就会回收这些对象,然后再次尝试访问该对象会导致错误

对于OpenNTF Domino API,同样的情况也会发生,但错误是不同的,因为它尝试重新创建原始对象的句柄,但随后检测到发出请求的线程不同,因此抛出错误


我认为首先要做的是检查您是否试图在范围中存储文档,以及是否重新编码应用程序,以便只将unid存储到文档中,然后使用它在值选择器中再次获取文档。

OpenNTF Domino API错误应记录到IBM技术支持中名为org.OpenNTF.0的文件中。0.log。如果堆栈跟踪指向您正在使用的特定Java方法,则这可能有助于跟踪触发它的内容的位置。最新版本的XPages日志读取器将从IBM_技术支持部门获取OpenNTF Domino API日志以及普通服务器文件。

OpenNTF Domino API错误应记录到文件i中n IBM_技术支持,称为org.openntf.0.0.log。如果堆栈跟踪指向您正在使用的特定Java方法,则这可能有助于跟踪触发它的内容的位置。最新版本的XPages日志读取器将