【问题标题】:Do I need a separate XPage for each of my 30+ Notes views?我是否需要为我的 30 多个 Notes 视图中的每一个单独的 XPage?
【发布时间】:2012-12-14 15:49:35
【问题描述】:

我正在努力将 XPage 前端放置在具有许多视图的现有 Notes 应用程序上。现在,我在与现有应用程序/数据不同的 NSF 中构建 XPage 和自定义控件 (CC)。 (不是要求,但我提供此功能以防影响您的回答。)

计划维护,我希望构建最少的可重用 XPage/CC。我意识到我可能需要为每个底层 Notes 视图使用单独的 CC,但我希望重用一个或几个 XPage,并在运行时决定应该在“内容”面板/div 中显示什么视图。 (“计算自定义控件”?)

此外,我希望在 XPage 上提供一个左侧菜单/视图列表,它 (1) 允许通过单击选择视图和 (2) 直观地指示选择了哪个视图(同样,目标是可重用性......不是每个视图都有一个菜单。)

(Notes App 并行:一个框架集在左框架中有一个大纲,一个内容框架用于加载从大纲中选择的视图。)

非常感谢任何建议、资源、链接、指针等。

另外,在您的回复中,请假设我无法使用扩展库。

感谢您帮助一位全新的 XPages 开发人员。

【问题讨论】:

  • 为什么不能使用扩展库(或升级包1)?
  • 应用程序将被分发,我无法控制或指示客户安装扩展库。我需要一个“最小公分母”的解决方案。我希望在 Domino 8.5 及更高版本上运行。
  • 我想我可以用另一种方式问我的问题,在扩展库出现之前,开发人员是如何处理 XPages 中大量视图的?

标签: xpages


【解决方案1】:

您可以使用 URL 参数来控制将显示哪个视图。 为此,您可以创建一个 XPage,其中的列计算如下:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

<xp:viewPanel rows="30" id="viewPanel1">
    <xp:this.data>
        <xp:dominoView var="view1" viewName="All"></xp:dominoView>
    </xp:this.data>
    <xp:this.facets>
        <xp:pager partialRefresh="true" layout="Previous Group Next"
            xp:key="headerPager" id="pager1">
        </xp:pager>
    </xp:this.facets>

    <!-- Column 1 -->
    <xp:viewColumn id="viewColumn1"
        columnName="#{javascript:view1.getColumnNames().get(0)}">
        <xp:this.rendered><![CDATA[#{javascript:view1.getColumnCount() > 0}]]></xp:this.rendered>
        <xp:viewColumnHeader id="viewColumnHeader1"
            value="#{javascript:view1.getColumnNames().get(0)}">
        </xp:viewColumnHeader>
    </xp:viewColumn>

    <!-- Column 2 -->
    <xp:viewColumn id="viewColumn2"
        columnName="#{javascript:view1.getColumnNames().get(2)}">
        <xp:this.rendered><![CDATA[#{javascript:view1.getColumnCount() > 1}]]></xp:this.rendered>
        <xp:viewColumnHeader id="viewColumnHeader2"
            value="#{javascript:view1.getColumnNames().get(2)}">
        </xp:viewColumnHeader>
    </xp:viewColumn>

</xp:viewPanel>

</xp:view>

现在您可以使用 URL 打开 XPage

http://example.com/yourdb.nsf/view.xsp?viewName=[NAME OF THE VIEW]

此外,您可以添加 databaseName 参数以使用来自另一个数据库的视图。 也可以计算其他属性(分类、排序等)。

【讨论】:

    【解决方案2】:

    【讨论】:

    • 请注意,这假设您可以使用扩展库(或升级包 1)。
    • 在描述中错过了 :-)
    • @Fredrik,链接很有趣。谢谢。一旦“无扩展库”约束消失,我将重新审视这些技术。
    【解决方案3】:

    考虑使用重复控件而不是视图面板。这使您可以完全灵活地表示数据,而不是受限于视图面板的行为和假设。这样可以更轻松地设计一个足够灵活的页面来显示任何数据子集。

    【讨论】:

    • 谢谢,蒂姆。我今天会看看。
    【解决方案4】:

    最好的解决方案是创建 2 个服务和一个页面:

    1. 创建服务以将视图内容返回为 JSON(通过视图属性或代理或 Web 服务或 xPage,您可以填写最适合您的任何内容)
    2. 创建服务以将左侧菜单/视图列表返回为 JSON
    3. 使用 javascript 核心创建 xPage,该核心将从点 1 和 2 加载数据并构建 UI。 jQuery 和 jQuery UI 会帮助你。

    这个解决方案会很灵活,你会长大你的经验

    【讨论】:

      猜你喜欢
      • 2016-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      相关资源
      最近更新 更多