2

小さな変更のために壊れたばかりの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(&quot;Test&quot;,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>&#160;<xp:br></xp:br>document1.replaceItemValue(&quot;Test&quot;,&quot;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>
4

1 に答える 1

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メソッドを使用することです。

許可されているすべてのデータ型のリストは次のとおりです。

  • 文字列テキスト
  • 整数
  • ダブルナンバー
  • DateTime日時アイテム
  • 文字列、整数、倍精度浮動小数点数、または日時要素を含むjava.util.Vector複数値のテキスト、数値、または日時項目
  • アイテムアイテムと同じデータ型

バックエンドドキュメントがデータソースドキュメントと同期された瞬間にエラーが発生します。そのため、 document1.getDocument(true)の呼び出し中に失敗します。

お役に立てれば

スヴェン

編集: なぜ値をfalseに設定しているのですか?

于 2012-06-26T14:24:11.893 に答える