【问题标题】:XPages typeAhead does not work If you have so many documentsXPages typeAhead 不起作用如果您有这么多文档
【发布时间】:2015-12-23 12:53:28
【问题描述】:

如果您没有那么多文档,TypeAhead 可以正常工作。如果我删除了很多 typeAhead 作品。我认为在 typeahead 选项中有一个限制 @DbColumn() 。

如何解决这个问题?这就像一个 64k 大小的问题,但任何建议都很重要

提前致谢 C.A.

【问题讨论】:

    标签: xpages typeahead


    【解决方案1】:

    您是否使用@DBColumn() 或@DBLookup() 来填充您的预输入?它们确实有 64K 的限制。 (当我阅读您的问题时,我不确定,所以我要求澄清)。

    如果是这样,您可能需要考虑查看类似Can typeahead results be returned from a java function 的链接,

    我最近完成了一项处理大量文档(数百万)的工作。我使用了它,但由于返回需要很长时间,我将其更改为获取视图中的第一个选定条目(基于 AJAX 预输入的值),从该条目创建一个 ViewNavigator,并使用 setBufferMaxEntires属性来限制返回的 ViewNavigator 的大小。这让这个过程变得非常快。

    布赖恩

    更新:

    根据要求。我开始使用上面链接的结果,然后我添加了

    ViewEntry startEntry = canQLView.getEntryByKey(searchValue, false);
            allObjects.addElement(startEntry);
    
            if (startEntry != null) {
                ViewNavigator matchingEntries = canQLView.createViewNavFrom(startEntry);
                matchingEntries.setBufferMaxEntries(10);
                ViewEntry entry = matchingEntries.getFirst();
    

    您可以看到我得到一个条目而不是 ViewEntryCollection,从该条目启动我的 ViewNavigator,并且 setBufferMaxEntries 属性限制了获取的数量 - 您可以更改它,但较小的数字是明智的,因为它是一个提前输入。

    干杯, 布赖恩

    【讨论】:

    • 我使用了@DbColumn,因为我必须在我使用的视图的第一列中取值。我有 43.000 条预输入记录。返回可能需要更多时间:) 是否可以向我发送示例代码。我被卡住了:(
    • 我使用的视图应该分类吧?我无法按照您提到的所有步骤进行操作。我是 XPages 的新人 :( 在你上面写的那个代码中有“searchValue”我没明白它是从哪里来的?searchValue 的确切定义是什么?
    • 感谢您的努力和帮助
    • 我找到了这个,ftSearch 帮了我:) devxpages.blogspot.com.tr/2010/04/…
    • 视图不需要分类,但第一列要排序。 “SearchValue”来自我包含的链接,它是从 typeahead var 传递的值。
    【解决方案2】:

    正确,@DbColumn() 有 64Kb 限制,这不是 XPages 特定的限制,各种博客文章都证实了这一点。确保仅在用户输入适当数量的可限制字符后才提供预输入。毕竟,typeahead 应该返回少量条目供用户选择,否则它没有多大用处。然后将@DbLookup 与“[PARTIALMATCH]”或getAllEntriesbyKey 一起使用。有许多博客文章提供了代码示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-18
      • 2017-04-03
      相关资源
      最近更新 更多