我有一个XPage,由于(应该是什么)一个小的改变而刚刚破解。
如果我运行(其中document1是NotesXSPDocument数据源):
document1.replaceItem("ItemName", false); //or true, or any variable/formula that results in a boolean
接下来是:
document1.getDocument(true);
我最终错误
[TypeError]调用方法时出现异常NotesXspDocument.getDocument(boolean)null
这是在一个新文档上(因此尚未保存,我没有测试过,但可能有所不同),因此我不能只在基础文档上设置该字段。
它似乎不是页面中任何其他内容的工件,因为基本测试页确认了它。除了布尔值之外,它不会发生任何事情(我发现)。
除了更改数据类型之外的任何建议?我猜这就是我最终要做的事情(以及错误报告),但我想知道我先没有遗漏任何东西。
谢谢
------------测试XSP代码------------
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"><xp:this.data>
<xp:dominoDocument var="document1" formName="Test" />
</xp:this.data><xp:span style="font-weight:bold">
Button 1 code:</xp:span><xp:br></xp:br>document1.replaceItemValue("Test",false);
<xp:br></xp:br>var doc:NotesDocument = document1.getDocument(true);
<xp:br></xp:br>print(doc.toString());<xp:br></xp:br>
<xp:button value="Test 1" id="button1">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:document1.replaceItemValue("Test",false);
var doc:NotesDocument = document1.getDocument(true);
print(doc.toString());}]]></xp:this.action>
</xp:eventHandler></xp:button>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:br></xp:br><xp:span style="font-weight:bold">
Button</xp:span><xp:span style="font-weight:bold"> 2</xp:span><xp:span style="font-weight:bold"> Code:</xp:span><xp:span style="font-weight:bold"></xp:span> <xp:br></xp:br>document1.replaceItemValue("Test","Test);<xp:br></xp:br>var doc:NotesDocument = document1.getDocument(true);
<xp:br></xp:br>print(doc.toString());<xp:br></xp:br><xp:button value="Test 2" id="button2">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:document1.replaceItemValue("Test","Test");
var doc:NotesDocument = document1.getDocument(true);
print(doc.toString());}]]></xp:this.action>
</xp:eventHandler></xp:button></xp:view>
答案 0 :(得分:6)
如果您查看堆栈跟踪,您将看到以下内容:
....
NotesException: Unknown or unsupported object type in Vector
lotus.domino.local.Document.NreplaceItemValue(Native Method)
lotus.domino.local.Document.replaceItemValue(Unknown Source)
com.ibm.xsp.model.domino.wrapped.DominoDocument.applyChangesToDoc(DominoDocument.java:1698)
com.ibm.xsp.model.domino.wrapped.DominoDocument.applyChanges(DominoDocument.java:1649)
com.ibm.xsp.model.domino.wrapped.DominoDocument.getDocument(DominoDocument.java:544)
com.ibm.xsp.script.WrapperDominoEx$fct_DominoDocument.call(WrapperDominoEx.java:254)
....
问题是您使用不受支持的数据类型的 replaceItemValue 方法。
以下是所有允许数据类型的列表:
在后端文档与数据源文档同步时出现错误。这就是它在调用 document1.getDocument(true)时失败的原因。
希望这有帮助
斯文
修改强> 为什么要将值设置为 false ?