1

在绑定到其 onw 文档数据源(“父级”)的 xpage 中,我有一个重复控件显示一些视图数据(包含相关文档或“响应”)以及一个用于创建新“响应”文档的按钮. 响应的数据显示在同一页面上的单独面板中,该面板仅在从重复中选择响应或创建新响应时可见。文档数据源绑定到围绕“动态”响应文档面板的面板,如下所示:

<xp:panel id="panelFlDs">
    <xp:this.data>
        <xp:dominoDocument var="dsDocFileLink" formName="fmFileLink"
            ignoreRequestParams="true">
            <xp:this.documentId><![CDATA[#{javascript:viewScope.get("unidFileLink")}]]></xp:this.documentId>
        </xp:dominoDocument>
    </xp:this.data>
    <xp:panel id="panelFlForm">
        <xp:this.rendered><![CDATA[#{javascript:viewScope.get("showDialogFileLink")=="1"}]]></xp:this.rendered>
        <xc:ccFormFileLink></xc:ccFormFileLink>
    </xp:panel>
</xp:panel>

如您所见,我正在尝试将我的数据源绑定到使用 viewScope 传递的 docUnid。这适用于现有文档,也适用于新文档(请注意,见下文),我只需在显示面板之前删除 viewScope 变量。对于新的响应,我还使用与中相同的按钮代码设置了一些从父级继承的字段值

dsDocFileLink.replaceItemValue("flType", "flTypeFile");
dsDocFileLink.replaceItemValue("glBlockID", dsDocFileLinkBlock.getItemValueString("glBlockID"));
dsDocFileLink.replaceItemValue("histCreatedOn", @Now());

等等

需要注意的是,我不能连续创建两个新文档:第二个和所有后续新文档似乎使用与第一个相同的数据源:它们的可编辑字段显示先前编辑的新文档中的值。

我尝试按照 Sven Hasselbachs 的出色示例(此处此处)创建新的数据源对象(并清除旧的对象),但正如 Sven 在他的博客条目中指出的那样,我无法立即使用我新创建的数据源。因此我可以创建一个新的 ds,但我不能按照我计划的方式使用继承,因为数据源尚不可用。

在我尝试重新处理所有内容并使用具有默认值等的可编辑字段在数据源级别开始继承之前:这甚至是我的任务的正确方法,还是我应该在某个地方再转一圈?

编辑:我只是尝试不继承,即创建一个新的响应,填写一些值,然后保存并关闭(备注:“关闭”隐藏响应数据面板),然后创建第二个新响应。结果:第二个响应再次包含我为第一个填写的值。我的创建修改创建按钮现在看起来像这样:

var panelFlDs:com.ibm.xsp.component.UIPanelEx = getComponent("panelFlDs");
var ds = new com.ibm.xsp.model.domino.DominoDocumentData();
ds.setVar("dsDocFileLink");
ds.setFormName("fmFileLink");
panelFlDs.getData().clear();
panelFlDs.addData(ds);
viewScope.remove("unidFileLink");
viewScope.put("showDialogFileLink", "1");

此致

洛萨

4

1 回答 1

3

进入重复控件的数据源的所有属性。其中有一个“范围”设置。默认为 viewScope。将其更改为 requestScope,这样它就不会保留您创建的第一个文档。那么每次都应该是一个新的文件。

于 2013-04-23T14:27:04.133 回答