我们正在使用带有 Type Ahead 的 inputText XPages 控件来自动完成。在搜索字段中输入时,不会出现任何建议。我们在 Type Ahead 属性窗格中设置了一个逗号分隔的建议列表,建议分隔符是“,”。我们还尝试使用“新行”分隔的建议。最小字符为“1”。这是 inputText 的 xml:
<xp:inputText id="inputText2">
<xp:typeAhead mode="partial" minChars="1" ignoreCase="true" valueListSeparator=",">
<xp:this.valueList><![CDATA[Homer,Marge,Bart,Lisa,Maggie]]></xp:this.valueList>
</xp:typeAhead>
</xp:inputText>
使用模式“full”和“partial”都失败了,但有不同的错误。使用“full”时,对于在搜索字段中键入的每个字母,浏览器控制台中都会出现以下错误(是的,所有这些都是由单次按键引起的):
Error: Unable to load undefined status:404
dijit.form.ComboBox: Error: Unable to load undefined status:404
Error: Unable to load undefined status:404
Error: Unable to load undefined status:404
Error: Unable to load undefined status:404
类似地,对于“部分”模式,每个键入的字母都会出现以下错误消息:
'url' is null or not an object
最后一个错误源于 dojo.js(与 Lotus Notes 8.5.3 一起使用的缩小版本,第 14 行,字符 84996)。我们不确定这是哪个版本的道场,因为缩小的脚本中没有说明,但我们认为版本 1.6.1大约是正确的版本。我们已经隔离了导致错误的代码:
dojo._ioAddQueryToUrl = function(/*dojo.__IoCallbackArgs*/ioArgs){
//summary: Adds query params discovered by the io deferred construction to the URL.
//Only use this for operations which are fundamentally GET-type operations.
if(ioArgs.query.length){
ioArgs.url += (ioArgs.url.indexOf("?") == -1 ? "?" : "&") + ioArgs.query;
ioArgs.query = null;
}
};
这就是ioArgs.url += ...
导致错误的原因。
为 inputText 生成的标记如下所示:
<span id="view:_id36:_id38:_id119" dojotype="ibm.xsp.widget.layout.data.TypeAheadReadStore" jsid="view__id36__id38__id119" mode="full"></span>
<div class="dijit dijitReset dijitInlineTable dijitLeft xspInputFieldEditBox dijitTextBox dijitComboBox" id="widget_view:_id36:_id38:inputText2" role="combobox" widgetid="view:_id36:_id38:inputText2">
<div class="dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton dijitArrowButtonContainer" dojoattachpoint="_buttonNode, _popupStateNode" role="presentation" style="display: none;">
<input class="dijitReset dijitInputField dijitArrowButtonInner" value="? " type="text" tabindex="-1" readonly="readonly" role="presentation">
</div>
<div class="dijitReset dijitValidationContainer">
<input class="dijitReset dijitInputField dijitValidationIcon dijitValidationInner" value="? " type="text" tabindex="-1" readonly="readonly" role="presentation">
</div>
<div class="dijitReset dijitInputField dijitInputContainer">
<input class="dijitReset dijitInputInner" name="view:_id36:_id38:inputText2" type="text" autocomplete="off" dojoattachpoint="textbox,focusNode" role="textbox" aria-haspopup="true" id="view:_id36:_id38:inputText2" tabindex="0" value="">
</div>
</div>
任何建议(双关语)将不胜感激!