gpt4 book ai didi

xpages - 具有多个数据源的 xPage 的第二个数据源始终以编辑模式打开

转载 作者:行者123 更新时间:2023-12-04 02:54:55 25 4
gpt4 key购买 nike

我有一个带有 2 个数据源的 xPage。我打开页面,第一个数据源是只读的,而第二个数据源处于编辑模式。添加 ignoreRequestParms=true 似乎会导致此行为,但这是将文档保存到不同数据源的唯一方法。

我发现这个链接有人发现了类似的行为。 http://www-10.lotus.com/ldd/nd85forum.nsf/7756aedc25e6d81285256324005ac76c/5e2f855ea18ff802852576e3007c34f2?OpenDocument

发生了一些我不明白的事情。如果有人可以向我解释这一点,我将不胜感激。

这是数据源的代码和标签面板中的字段

<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>

最佳答案

因为 action 设置为 createDocument(您可以省略,因为这是默认值),这会导致在内存中创建一个新文档。这就是文档处于编辑模式的原因:您正在撰写新记录。如果您不想创建新文档,请将 action 属性更改为其他选项之一:openDocumenteditDocument。这两者都需要同时设置 documentId 属性,因为数据源需要知道您希望分别打开或编辑哪个文档。

如果省略 ignoreRequestParams 属性,则此数据源不会忽略 URL 请求参数。相反,它会查找名为 databaseNameformNamedocumentIdaction 的参数。如果这些参数中的任何一个包含在 URL 中,每个参数的值都会覆盖在数据源上定义的值。这就是为什么如果您打开 document1 的实例,但不在 document2 上设置 ignoreRequestParams,那么两者文档将具有相同的模式(读取/编辑):因为没有一个数据源忽略了 URL,所以两个数据源都按照 URL 的指示进行操作。

通常,当在同一 XPage 上定义多个数据源时,您将拥有一个可视为“主要”数据源的数据源;任何其他数据都与该数据有某种关系,但主要数据是用户查看该页面上所有数据的上下文。因此,您希望该数据源遵守 URL 参数以允许导航(从数据 View 、 View 面板、重复等)能够指示正在打开的文档以及以何种模式打开。但是与该文档相关的所有数据源都应明确指定它们绑定(bind)的数据以及对该数据采取的操作,并使用 ignoreRequestParams 确保 URL不会覆盖此信息。

关于xpages - 具有多个数据源的 xPage 的第二个数据源始终以编辑模式打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16848253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com