Как задать шаблон запроса с помощью свойства queryExpr в элементе управления djFilteringSelect в XPages

Я пытаюсь настроить элемент управления djFilteringSelect в XPages, чтобы, когда пользователь вводит запрос, он находил любое вхождение последовательности символов, а не только с самого начала.

Поэтому, если элементы выбора содержат значение «это продукт», и я набираю продукт, это должно совпадать. по умолчанию он ищет только с начала текста.

Есть свойство queryExpr, которое можно использовать для этого, но отсутствует документация для использования в XPages. Я пробовал следующее и многое другое, но не могу заставить его работать.

<xe:this.queryExpr><![CDATA[#{javascript:"*{0}*"}]]></xe:this.queryExpr>
<xe:this.queryExpr><![CDATA[#{javascript:"$*{0}*"}]]></xe:this.queryExpr>
<xe:djFilteringSelect id = "djFilteringSelect1">
<xp:selectItems id = "selectItems2">
    <xp:this.value><![CDATA[#{javascript:var products = @DbLookup("","LookUp", "Produkt", 2);
products = @Unique(@Trim(products));
return products.sort();}]]></xp:this.value>
                        </xp:selectItems>
</xe:djFilteringSelect>

Вот полный пример, если кто-то хочет скопировать / вставить в новый XPage, я хочу ввести «x», и должна появиться запись «my name is x»

<?xml version = "1.0" encoding = "UTF-8"?>
<xp:view xmlns:xp = "http://www.ibm.com/xsp/core"
    xmlns:xc = "http://www.ibm.com/xsp/custom"
    xmlns:xe = "http://www.ibm.com/xsp/coreex">
    
    <xe:djFilteringSelect id = "djFilteringSelect1">
        
        <xp:selectItem itemLabel = "my name is x"></xp:selectItem>
        <xp:selectItem itemLabel = "my name is y"></xp:selectItem>
        <xp:selectItem itemLabel = "my name is z"></xp:selectItem>
    </xe:djFilteringSelect>
</xp:view>

Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Калькулятор CGPA 12 для семестра
Калькулятор CGPA 12 для семестра
Чтобы запустить этот код и рассчитать CGPA, необходимо сохранить код как HTML-файл, а затем открыть его в веб-браузере. Для этого выполните следующие...
ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023
ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023
О тренинге HTML JavaScript :HTML (язык гипертекстовой разметки) и CSS (каскадные таблицы стилей) - две основные технологии для создания веб-страниц....
Как собрать/развернуть часть вашего приложения Angular
Как собрать/развернуть часть вашего приложения Angular
Вам когда-нибудь требовалось собрать/развернуть только часть вашего приложения Angular или, возможно, скрыть некоторые маршруты в определенных средах?
Запуск PHP на IIS без использования программы установки веб-платформы
Запуск PHP на IIS без использования программы установки веб-платформы
Установщик веб-платформы, предлагаемый компанией Microsoft, перестанет работать 31 декабря 2022 года. Его закрытие привело к тому, что мы не можем...
Оптимизация React Context шаг за шагом в 4 примерах
Оптимизация React Context шаг за шагом в 4 примерах
При использовании компонентов React в сочетании с Context вы можете оптимизировать рендеринг, обернув ваш компонент React в React.memo сразу после...
1
0
53
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

DjFilteringSelect — это просто оболочка для компонента Dojo FilteringSelect, поэтому queryExpr и searchExpr просто используются для передачи базовому (клиентскому) коду JavaScript. Так что для документации хорошим источником является сайт Dojo. Согласно документации API *${0}* должен делать то, что вы хотите (https://dojotoolkit.org/api/?qs=1.6/dijit/form/FilteringSelect). Документы говорят о сочетании с highlightMatch для определения того, что выделено.

Спасибо, но я уже пробовал это, это просто портит раскрывающийся список <xe:djFilteringSelect id = "djFilteringSelect1" queryExpr = "${0}">

Thomas Adrian 16.02.2023 13:35

Звезды в комментарии удалены stackoverflow :-)

Thomas Adrian 16.02.2023 13:41
Ответ принят как подходящий

Мы используем djFilteringSelect в нашем приложении, и оно работает так, как задумано. Единственное, что следует отметить, это то, что некоторые символы в строке должны быть экранированы: поэтому правильными значениями для queryExpr являются "*\$\{0\}*".

Объяснение, почему $ и {} должны быть экранированы, можно найти здесь https://xcellerant.wordpress.com/2014/07/22/change-search-behavior-of-dojo-filtering-select-in-xpages/

Спасибо, можете ли вы добавить полный пример на основе моего примера выше, потому что я не мог заставить его работать

Thomas Adrian 20.02.2023 11:38

@ThomasAdrian это работает: <xe:djFilteringSelect id = "djFilteringSelect1" queryExpr = "#{javascript:return '*\$\{0\}*';}" autoComplete = "false">

Per Henrik Lausten 20.02.2023 12:06

Другие вопросы по теме