0

組織と連絡先の 2 つのフォームがあります。Contact は Org への応答であり、各フォームには、フォームへの入力や保存などを行うことができる XPage があります。edit_contact.xsp を直接開いて (組織への応答としてではなく) ドキュメントを作成すると、すべて正常に機能します。

edit_org.xsp には、2 つのイベントを持つボタンがあります。最初にいくつかの値を sessionScope にコピーして、それらを Contact に継承できるようにします。2 つ目は、親 ID が現在の組織ドキュメントである新しい応答を作成し、ユーザーを edit_contact.xsp に送信する「Create Response Document」イベントです。ボタンを押すと XPage が正しく変更され、フィールドの継承が正常に機能しますが、Contact フォームで [Submit] を押しても何も保存されず、ドキュメントも作成されません。

このまったく同じセットアップは、別のデータベースで必要に応じて 100% 機能します。ここで正しく機能しない理由がわかりません。私が行方不明になっている場所にあいまいな設定はありますか?

<xp:button value="Create Contact" id="button1" rendered="#{javascript:!document1.isEditable()}">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
    <xp:this.action>
        <xp:actionGroup>
            <xp:executeScript>
                <xp:this.script>
                    <![CDATA[#{javascript:var doc = document1.getDocument();

                    sessionScope.PFirstName = doc.getFirstItem("P_Firstname").getValueString(); 
                    sessionScope.PSurname = doc.getFirstItem("P_Surname").getValueString(); 
                    sessionScope.PFamily = doc.getFirstItem("P_Family").getValueString(); 
                    sessionScope.PDOB = doc.getFirstItem("P_DOB") 
                    sessionScope.PAGE = doc.getFirstItem("P_Age").getValueString();}]]
                </xp:this.script>
            </xp:executeScript>
                <xp:createResponse name="/edit_contact.xsp" parentId="#{javascript:document1.getNoteID()}">
                </xp:createResponse>

        </xp:actionGroup>
    </xp:this.action>
</xp:eventHandler>
</xp:button>`

これは、私がやろうとしていることを示すリンクです(フィールド継承を除く):

http://min.us/mKSJED8tT

現在、フォームとビューはすべて機能しますが、"Response" フォームで作成された文書は、応答文書ではないように見えます - $REF フィールドがありません。このセットアップは別のデータベースで完全に機能します - 何が起こっているのですか?

4

4 に答える 4

0

「プッシュ」アプローチの代わりに「プル」を選択します。親ドキュメントのurlパラメータを使用して応答ページを開くだけです。postNewDocumentイベントで、そこからフィールド値を初期化します。

于 2012-05-21T07:41:34.627 に答える
0

There are two possible issues:

First the use of getFirstItem("x") is not a best practice. So:

sessionScope.PDOB = doc.getFirstItem("P_DOB") 

would be storing a NotesItem in the sessionScope which will not work. It is recommended to use:

sessionScope.PDOB = doc.getItemValueString("P_DOB");

Second the use of getNoteID() might not be returning what you want (Which is the UNID of the document). Use .getDocument().getUniversalID() instead.

<xp:createResponse 
     name="/edit_contact.xsp" 
     parentId="#{javascript:document1.getDocument().getUniversalID()}">
</xp:createResponse>

-edited- /Newbs

于 2012-05-21T12:57:24.647 に答える
0

他の人が行った次の 2 つの重要な点に関する最新情報を入手すると便利です。

  1. 応答文書のデータソースに ignoreRequestParams が設定されていますか? そうでない場合は、2 番目のデータソースに何を定義しようとしているかに関係なく、UNID などが要求パラメーターから取得されます。したがって、両方のデータソースは実質的に同じデータソースです。
  2. 検証エラーをスローしていますか?その場合、何も保存されません。
于 2012-05-21T09:06:50.567 に答える
0

コードを見ずに何が起こっているのかを判断するのは困難です。別のデータベースで機能するので、ACL の問題でしょうか? ログインしているユーザー (おそらく匿名) は、ドキュメントを作成する権限を持っていませんか?

于 2012-05-20T17:20:21.427 に答える