有没有人在typeahead输入文本中使用url属性?

时间:2013-02-12 11:20:31

标签: url xpages typeahead

我正在尝试在inputtext-field中使用预先输入功能。 我想使用typeahead属性的url参数,而不是通过使用固定列表或DBColumn来填充值(这是减慢数千个条目的速度)。

到目前为止,我所做的是:

<xp:inputText value="#{docEntry.namUsers}" id="namUsers">
    <xp:typeAhead mode="external" valueMarkup="false" minChars="3" var="namEntries" frequency="1" maxValues="10" id="typeAheadNamUsers">
        <xp:this.url><![CDATA[#{javascript:"http://server/databse.nsf/view?ReadViewEntries&OutputFormat=JSON&StartKey=" + getComponent("namUsers").getAttributes().get("value");}]]></xp:this.url>
    </xp:typeAhead>
</xp:inputText>

输入所需的最小字符时,我可以看到触发了GET请求。此GET请求返回所需的视图内容。

但我没有找到任何方法来获取返回的信息,以便解析内容并为typeahead元素提供有效列表。

有没有人尝试过使用typeahead元素的url属性?

2 个答案:

答案 0 :(得分:1)

您不能以这种方式使用typeahead的 url 参数。该参数只是初始化typeahead小部件的配置参数,不会使用服务器端代码进行更新。

如果您查看firebug控制台,您会看到有一个名为 $$ value 的URL参数,该参数会自动添加到您定义的URL中(包含查找本身的字符)。

Typeahead的响应需要是简单的HTML代码:

<ul>
   <li>Result 1</li>
   <li>Result 2</li>
   <li>Result 3</li>
   <li>...</li>
</ul>

[它可以更改用于显示目的,但它必须是HTML]

外部请求没有JSON /没有XML。

您可以为视图创建 $$ ViewTemplate (HTML内容)以返回所需的格式,并且f.e。添加重定向代理:

Option Public
Option Declare

Sub Initialize
    Dim session As New NotesSession
    Dim doc As NotesDocument
    Dim hlp

    Set doc = session.Documentcontext
    hlp = Split( doc.QUERY_STRING_DECODED(0), "$$value=" )
    Print "[http://example.com/YourDB.nsf/View?OpenView&startKey=" & hlp(1) & "]"

End Sub

然后,您可以将网址设置为代理,而不是视图:

<xp:typeAhead mode="external" valueMarkup="false" minChars="3"
   frequency="1" maxValues="10" id="typeAheadNamUsers"
   url="http://example.com/YourDB.nsf/RedirectAgent?OpenAgent">
</xp:typeAhead>

答案 1 :(得分:0)

AFAIK从该URL预期的数据需要“收集就绪”,这意味着由分隔符(逗号或换行符)分隔的值列表。 ?ReadViewEntries不提供该格式,因此您希望使用HTML passthru视图。 我会挑战你的假设。如果您的查找数据库位于同一台服务器上,那么是什么让您认为添加HTTP延迟会比@DbColumn更快?如果它是一个不同的服务器,那将是一个有趣的测试 - 除此之外无论如何将值查找保持在同一服务器上会更好。 另一个问题是:用户体验在一个先行列表中有数千个潜在价值,真正有效,有效和愉快吗?

相关问题