通过按钮创建响应文档

时间:2012-05-20 11:19:07

标签: lotus-notes xpages

我有两种形式,组织和联系。联系人是对Org的回复,每个表单都有一个XPage,表单可以填写,保存等。直接打开edit_contact.xsp并创建文档(不作为对组织的响应),一切正常。

在edit_org.xsp上,我有一个包含2个事件的按钮。第一个将一些值复制到sessionScope中,因此我可以将它们继承到Contact中。第二个是“创建响应文档”事件,它创建一个新的响应,其父ID是当前的组织文档,并将用户发送到edit_contact.xsp。按下按钮正确更改XPage并且字段继承工作正常,但是在联系表单上按“提交”不会保存任何内容,也不会创建任何文档。

这个完全相同的设置在另一个数据库中按需要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

目前表单和视图都有效,但使用“响应”表单创建的文档似乎不是响应文档 - 它没有$ REF字段。这个设置在不同的数据库中完美运行 - 发生了什么?

4 个答案:

答案 0 :(得分:0)

如果没有看到任何代码,很难说出可能会发生什么。既然它适用于另一个数据库,它可能是ACL问题吗?您以[可能 - 匿名]登录的用户无法创建文档?

答案 1 :(得分:0)

而不是&#34;推&#34;方法去&#34;拉&#34; - 只需打开包含父文档ur​​l参数的响应页面。在其postNewDocument事件中,从中初始化字段值。

答案 2 :(得分:0)

获取其他人提出的两个关键点的更新是有用的:

  1. 您的响应文档数据源上是否设置了ignoreRequestParams?如果没有,无论你想为第二个数据源定义什么,它的UNID等都是从请求参数中提取的。因此,两个数据源实际上都是相同的数据源。
  2. 是否会抛出验证错误?如果是这样,将不会保存任何内容。

答案 3 :(得分:0)

有两个可能的问题:

首先使用getFirstItem(“x”)不是最佳做法。所以:

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

将在sessionScope中存储一个不起作用的NotesItem。建议使用:

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

其次,使用getNoteID()可能无法返回您想要的内容(文档的UNID)。改为使用.getDocument()。getUniversalID()。

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

-edited- / Newbs

相关问题