0

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

在 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

4 回答 4

0

It would be useful to get an update on two key points made by others:

  1. Is ignoreRequestParams set on your response document datasource? If not, regardless of what you're trying to define for the second datasource, it's UNID etc are pulled from the request parameters. So both datasources are effectively the same datasource.
  2. Is it throwing a validation error? If so, nothing will be saved.
于 2012-05-21T09:06:50.567 回答
0

而不是“推”的方法去“拉” - 只需打开带有父文档的 url 参数的响应页面。在它的 postNewDocument 事件中从它初始化字段值。

于 2012-05-21T07:41:34.627 回答
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>

-编辑-/Newbs

于 2012-05-21T12:57:24.647 回答
0

如果没有看到任何代码,很难判断可能会发生什么。由于它在另一个数据库中适用于您,这可能是 ACL 问题吗?您登录的用户(可能是匿名用户)在哪里没有创建文档的能力?

于 2012-05-20T17:20:21.427 回答