我有一个问题,它最近给我带来了一些麻烦。
在我的XPage中有一个显示一些文档的视图(假设Pdoc
为数据源),我在<xe:dialog>
内打开/创建它们。此对话框仅将Pdoc
声明为数据源,并从Xpage datasrouce继承了一些值。我的可点击列公式为:
// some var declarations
var formName = rowData.getDocument().getItemValueString("Form");
if ( formName == "fmP" )
{ viewScope.put("dlgDocUnid", pe.getUniversalID())
getComponent("exampleDialog").show(); }
在同一个XPage上,我可以通过按钮Pdoc
使用相同的对话框创建一个新的New Pdoc
。
问题是:当我打开现有的Pdoc
然后只保存或关闭它,然后我使用按钮创建一个新的注意=&gt;显示旧的/上一个(已保存的Pdoc
)...
如果我刚刚创建了一个新笔记Pdoc
,那么它会有效,并显示一个新的空Pdoc.
我的对话框数据代码:
<xp:this.data>
<xp:dominoDocument var="Pdoc" formName="fmPersContact"
ignoreRequestParams="true" scope="request" action="editDocument">
<xp:this.documentId><![CDATA[#{javascript:viewScope.get("dlgDocUnid");}]]></xp:this.documentId>
</xp:dominoDocument>
</xp:this.data>
我使用.documentId
作为viewPanel中的open方法。我想这就是问题所在。我想,(我不确定),我应该以这样的方式计算这个文档,当我创建一个newNote时,这个documentID不应该是viewScope.get("dlgDocUnid")
。
谢谢你的时间。
答案 0 :(得分:2)
如果我理解正确,你在XPage中定义了两个数据源,并尝试在对话框中使用它们,对吧?相反,我建议在xe:dialog
内的面板中定义单个数据源。
我在博客上写了一个类似的例子。在此示例中,已使用工具提示对话框,但它具有相同的逻辑,您可以将xe:tooltipDialog
替换为xe:dialog
。
这里的想法是您使用名为viewScope
的{{1}}变量。要打开现有文档,请将此变量设置为现有文档的注释ID。要创建新文档,该值将设置为noteId
。然后根据此变量在对话框中定义数据源:
NEW
当您将数据源放在对话框中时,您不会在启动对话框之前刷新页面以加载或准备数据源,这是我当前的问题。
答案 1 :(得分:0)
是否忘记停用该标志以忽略请求参数。 听起来对话框始终与当前文档相关联,而不是与docid
中的参数相关联