【问题标题】:How to define empty DataSource depending on param in URL in Xpage?如何根据 Xpage 中 URL 中的参数定义空数据源?
【发布时间】:2022-01-22 12:12:07
【问题描述】:

我的 Xpages 应用程序中的设计模式如下所示。当我在列表视图中时,我想调用 dominoDocument1 进行打印并期望返回 null,因为 dominoDocument 没有键(url 中的 documentId),但返回 UNID。我希望这种行为用于全局自定义控制什么可以删除视图模式下的方式和如何在表单模式下。在 form_toolbar 组件中,我使用 dominoDocument 做什么,这就是为什么我的 dominoDocument 定义在另一个组件之上的原因。

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
    xmlns:xc="http://www.ibm.com/xsp/custom">
    <xp:this.data>
        <xp:dominoDocument var="dominoDocument1" formName="sample"
            concurrencyMode="force" action="openDocument">
            <xp:this.databaseName><![CDATA[#{javascript:var object1 = new SamplesDB();
object1.getDBPath();}]]></xp:this.databaseName>
        </xp:dominoDocument>
    </xp:this.data>
    <xp:this.resources>
        <xp:script src="/dbClass.jss" clientSide="false"></xp:script>
    </xp:this.resources>
    <xc:resources></xc:resources>
    <xc:global_left_sidebar></xc:global_left_sidebar>
    <xc:layout_content>
        <xp:this.facets>
            <xc:form_toolbar xp:key="sample_form"></xc:form_toolbar>
            <xc:view_toolbar xp:key="sample_view"></xc:view_toolbar>
            <xc:form_toolbar xp:key="sample_to_researches_table"></xc:form_toolbar>
        </xp:this.facets>
    </xc:layout_content>
    <div class="container-fluid">
        <div class="row">
            <xc:layout_content>
                <xp:this.facets>
                    <xc:sample_form xp:key="sample_form"></xc:sample_form>
                    <xc:sample_view xp:key="sample_view"></xc:sample_view>
                    <xc:cc_sample_to_researches_table
                        xp:key="sample_to_researches_table">
                    </xc:cc_sample_to_researches_table>
                </xp:this.facets>
            </xc:layout_content>
        </div>
    </div>
</xp:view>

w>

【问题讨论】:

  • 我不完全理解您的问题。如果 URL 中不包含 documentId 作为参数,则需要在 xp:dominoDocument 数据源上计算“documentId”。

标签: xpages lotus-notes ssjs


【解决方案1】:

首先,将 XPages 应用程序创建为一个独立的 NSF,仅用于一个目的,即一个 Web UI,并将所有旧的 Notes 和新的 NSF 数据保留为 UI 的数据存储库。

-XPages UI NSF- 我认为最好在 faces-config 中创建一个“托管 Bean”,例如 App.java 并将其命名为“app”。然后创建一个 DominoService.java 获取和设置数据到数据库 NSF。

设计 Java 模型对象,即 NSF 和 XPages UI 之间的普通 Java 对象。在其他 XPages 项目中重用。

在启动时,服务器在 faces-config 中实例化 Java 对象。

您还可以将动作侦听器添加到将执行某些工作的事件中,例如从视图中获取所有文档并返回 ArrayList,并且“persons”是

组件。

您将希望您的 XPages UI 组件绑定到普通 Java 对象和数据列表。

您可以随时切换后端的好处,例如,您可以创建 NoSQLHelper.java 或 SQLHelper.java 并从 DominoService 实现相同的方法,而不是从键/值对 NSF 数据存储中写入和读取。 java 和 UI 没有变化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 2020-08-29
    相关资源
    最近更新 更多