Мы используем элемент управления inputText XPages с Type Ahead для автоматического завершения. При вводе в поле поиска предложения не появляются. У нас есть список предложений, разделенных запятыми, установленный на панели свойств Type Ahead, а разделителем предложений является «,». Мы также пробовали использовать предложения, разделенные "новой строкой". Минимум символов "1". Вот xml для inputText:
<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>
Использование режима «полный» и «частичный» не работает, но с разными ошибками. При использовании «полного» на каждую букву, введенную в поле поиска, в консоли браузера появляются следующие ошибки (да, все они вызваны одним нажатием клавиши):
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
Аналогично для режима "partial" для каждой введенной буквы появляется следующее сообщение об ошибке:
'url' is null or not an object
Эта последняя ошибка возникает в dojo.js (уменьшенная версия, используемая с Lotus Notes 8.5.3, строка 14, символ 84996). Мы не уверены, какая это версия dojo, потому что она не указана в минимизированном скрипте, но мы думаем, что Версия 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>
Любые предложения (каламбур) будут очень признательны!