将响应显示为XPage的父文档上的嵌入视图

时间:2014-07-13 08:23:48

标签: javascript xpages lotus-domino

我有两种形式,组织和联系。联系人是对组织的响应,每个表单都有一个XPage,表单可以填写,保存等。联系也显示在组织下。使用dataTable嵌入视图。在org.xsp上,我有一个包含2个事件的按钮。第一个保存org.xsp。第二个是"创建响应文档"以父ID为当前组织文档创建新响应的事件,并将用户发送到contact.xsp。

<xp:button value="Create Contact" id="button3">
                <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="dialog1">
                    <xp:this.action>
                        <xp:actionGroup>
                            <xp:actionGroup>

                                <xp:saveDocument var="orgDoc"></xp:saveDocument>
                                <xp:createResponse name="/contact.xsp"
                                    parentId="#{javascript:orgDoc.getDocument().getUniversalID()}">
                                </xp:createResponse>
                            </xp:actionGroup>
                        </xp:actionGroup>
                    </xp:this.action>
                </xp:eventHandler>
            </xp:button>

在contact.xsp上,我有一个包含2个事件的按钮。第一个保存contact.xsp。第二个是&#34; openPage&#34;将用户发送到org.xsp的事件。文档ID为:

contactDoc.getDocument().getParentDocumentUNID()

保存新的contact.xsp时,一切正常,重定向到正确的父文档(org.xsp),响应文档(contact.xsp)显示在org.xsp的dataTable中。

在dataTable中,我有一个链接,可以让我打开并编辑contact.xsp:

 <xp:link escape="true" id="link1">
    <xp:this.text><![CDATA[#{javascript:contactView.getColumnValue("contactName")}]]>  </xp:this.text>
    <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
        <xp:this.action>
            <xp:openPage name="/contact.xsp" target="openDocument"documentId="#{javascript:orgDoc.getDocument().getParentDocumentUNID()}">
            </xp:openPage>
        </xp:this.action>
    </xp:eventHandler>
</xp:link>

我现在可以编辑contact.xsp以使用以下代码进行保存后,我被重定向到错误的父文档或空文档。

     <xp:button value="Save Contact" id="button11">
                <xp:eventHandler event="onclick" submit="true" refreshMode="complete" immediate="false" save="true">
                    <xp:this.action>
                        <xp:actionGroup>
                            <xp:saveDocument var="contactDoc"></xp:saveDocument>
                            <xp:openPage name="/org.xsp" target="editDocument">
                                <xp:this.documentId><![CDATA[# {javascript:contactDoc.getDocument().getParentDocumentUNID()
    }]]></xp:this.documentId>
                            </xp:openPage>
                        </xp:actionGroup>
                    </xp:this.action>
                </xp:eventHandler>
            </xp:button>

我如何解决这个问题或使用哪个写文档ID?

contactDoc.getDocument().getParentDocumentUNID()

2 个答案:

答案 0 :(得分:1)

使用文档数据源的名称,例如document1代替currentDocument

由于您在contact.xsp中定义了多个文档数据源,因此不确定您是否获得了currentDocument的联系人文档。如果你使用

document1.getDocument().getParentDocumentUNID()

XPages确切地知道你的意思是哪个文档数据源。

答案 1 :(得分:0)

您在dataTable的链接中打开了错误的文档。您想要打开响应文档,而是打开currentDocument.getDocument().getParentDocumentUNID(),它是组织文档的父级(就我理解您的数据模型而言,它不存在)。

相反,您希望使用相关响应文档的文档ID。假设您的dataTable使用名为responseDoc的var,您应该执行以下操作:

<xp:link escape="true" id="link1">
    <xp:this.text><![CDATA[#{javascript:contactView.getColumnValue("contactName")}]]>  </xp:this.text>
    <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
        <xp:this.action>
            <xp:openPage name="/contact.xsp" target="openDocument" documentId="#{javascript:responseDoc.getUniversalID()}">
            </xp:openPage>
        </xp:this.action>
    </xp:eventHandler>
</xp:link>

更新:我发现您已更新了问题。据我所知,您的问题不是首先创建响应文档,而是从dataTable打开响应文档,然后保存响应文档会将您带到错误的父文档。回到父文档时,请参阅上面的答案,使用正确的文档ID。