Xpages 具有多个数据源的xPage始终以编辑模式打开第二个数据源
我有一个包含2个数据源的xPage。我打开页面,第一个数据源是只读的,而第二个数据源处于编辑模式。添加ignoreRequestParms=true似乎会导致此行为,但这是文档保存到其他数据源的唯一方法 我发现有人也有类似的行为。 有件事我不明白。如果有人能给我解释一下,我将不胜感激 以下是数据源代码和选项卡面板中的字段Xpages 具有多个数据源的xPage始终以编辑模式打开第二个数据源,xpages,Xpages,我有一个包含2个数据源的xPage。我打开页面,第一个数据源是只读的,而第二个数据源处于编辑模式。添加ignoreRequestParms=true似乎会导致此行为,但这是文档保存到其他数据源的唯一方法 我发现有人也有类似的行为。 有件事我不明白。如果有人能给我解释一下,我将不胜感激 以下是数据源代码和选项卡面板中的字段 <xp:dominoDocument var="document2" action="createDocument" formName="softwar
<xp:dominoDocument var="document2" action="createDocument"
formName="software" ignoreRequestParams="true">
</xp:dominoDocument>
<xp:tabbedPanel id="tabbedPanel1">
<xp:tabPanel id="tabPanel1" label="Checklist Items">
<xp:checkBoxGroup id="checkBoxGroup1" layout="pageDirection"
value="#{document1.checklist}">
<xp:selectItems>
<xp:this.value><![CDATA[#{javascript:var dbName = new Array("","");
var Rep = @Unique(@DbColumn(dbName,"checklistitems",3));
Rep}]]></xp:this.value>
</xp:selectItems>
</xp:checkBoxGroup>
</xp:tabPanel>
<xp:tabPanel label="Software" id="tabPanel2">
<xp:button value="Edit Software list" id="button1">
<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="panelsoft">
<xp:this.action>
<xp:changeDocumentMode mode="edit"
var="document2">
</xp:changeDocumentMode>
</xp:this.action></xp:eventHandler></xp:button>
<xp:button value="Save Software list" id="button2">
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="panelsoft">
<xp:this.action>
<xp:actionGroup>
<xp:modifyField name="uid"
value="#{javascript:document1.getDocument().getUniversalID()}"
var="document2">
</xp:modifyField>
<xp:executeScript script="#{javascript:document2.save()}">
</xp:executeScript></xp:actionGroup>
</xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:br></xp:br>
<xp:panel id="panelsoft"><xp:table rendered="#{javascript:document2.isEditable()}"><xp:tr><xp:td><xp:br></xp:br>
Software Name
</xp:td>
<xp:td>
<xp:inputText id="inputText1"
style="width:300px" value="#{document2.Softwarename}">
</xp:inputText></xp:td>
</xp:tr>
<xp:tr>
<xp:td></xp:td>
<xp:td></xp:td>
</xp:tr>
</xp:table>
<xp:viewPanel rows="30" id="viewPanel1">
<xp:this.facets>
<xp:pager partialRefresh="true"
layout="Previous Group Next" xp:key="headerPager" id="pager1">
</xp:pager>
</xp:this.facets>
<xp:this.data>
<xp:dominoView var="view2" viewName="CustomSoftware"
categoryFilter="#{javascript:document1.getDocument().getUniversalID()}">
</xp:dominoView>
</xp:this.data>
<xp:viewColumn columnName="uid" id="viewColumn1">
<xp:viewColumnHeader value="uid"
id="viewColumnHeader1">
</xp:viewColumnHeader>
</xp:viewColumn>
<xp:viewColumn columnName="Softwarename"
id="viewColumn2">
<xp:viewColumnHeader value="Software Name"
id="viewColumnHeader2">
</xp:viewColumnHeader>
</xp:viewColumn>
<xp:viewColumn columnName="comments" id="viewColumn3">
<xp:viewColumnHeader value="Comments"
id="viewColumnHeader3">
</xp:viewColumnHeader>
</xp:viewColumn>
</xp:viewPanel>
</xp:panel>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:panel>
</xp:panel>
<xp:br></xp:br>
</xp:tabPanel>
</xp:tabbedPanel>
软件名
因为操作
被设置为创建文档
(您可以忽略,因为这是默认值),这会导致在内存中创建新文档。这就是文档处于编辑模式的原因:您正在编写一条新记录。如果不想创建新文档,请将操作
属性更改为其他选项之一:打开文档
或编辑文档
。其中任何一个都需要设置documentId
属性,因为数据源需要知道您希望分别打开或编辑哪个文档
如果省略ignoreRequestParams
属性,则此数据源不会忽略URL请求参数。相反,它查找名为databaseName
、formName
、documentId
和action
的参数。如果URL中包含这些参数中的任何一个,则每个参数的值将覆盖在数据源上定义的值。这就是为什么如果打开document1
的实例,但不在document2
上设置ignoreRequestParams
,那么两个文档将具有相同的模式(读取/编辑):因为两个数据源都没有忽略URL,所以两个数据源都在按照URL的指示执行操作
通常,在同一XPage上定义多个数据源时,您将有一个可以被视为“主要”数据源;任何其他数据都与该数据有一定关系,但主要数据是用户查看该页面上所有数据的上下文。因此,您希望该数据源尊重URL参数,以允许导航(从数据视图、视图面板、重复等)能够指示正在打开哪个文档以及以何种模式打开。但与该文档相关的所有数据源都应明确指定它们绑定到的数据以及对该数据采取的操作,并使用
ignoreRequestParams
确保URL不会覆盖此信息。请使用您的数据源定义更新问题我假设您正在第二个数据源上将action
设置为openDocument
?如前所述,发布源代码将有助于解决问题。您的第二个数据源是否定义了UNID?如果没有,它将始终组成新文档,因此在编辑模式下。如果这是您的要求。@PatrickSawyer您需要提供document1的数据源定义,否则将无法解决此问题。document2是由您的数据源定义创建的,因此除非document1具有action=“openDocument”,否则您将创建两个文档,尽管ignoreRequestParms存在,但它们都将处于编辑模式,并且基本上不相关。您是否尝试过为document2设置action=“openDocument”?好的,感谢您花时间详细介绍这一点。太棒了。我有一个带有主文档的XPage,它需要另外四个Notes文档来存储附件。我在rep/saves方面遇到了严重的问题,所有附件最终都附加到了主文档和所有其他四个文档。救命!