Плагин Struts2 JQuery AutoCompleter не работает при добавлении атрибута selectBox="true"

Работает (грузит список нормально):

<s:url id="countrylist" action="lstcountryaction" />
<sj:autocompleter list="lstcountry"
    listKey="idcountry" listValue="countryname" label="Country"
    href="%{countrylist}" name="idcountry" />

Не работает (ничего не загружено. Никакого вызова не делается):

<s:url id="countrylist" action="lstcountryaction" />
<sj:autocompleter selectBox="true" list="lstcountry"
    listKey="idcountry" listValue="countryname" label="Country"
    href="%{countrylist}" name="idcountry" />

Разница лишь в том, что selectBox атрибут добавлен. Что мне не хватает? Я использую Struts 2.3.15 и Struts2 JQuery Plugin 3.6.1 (которые оба довольно недавно).

Спасибо!!

2 ответа

Решение

Struts2 jQuery autocompleter виджет с selectBox=true включен, чтобы иметь возможность работать правильно, не должен загружать данные удаленно. Другими словами, атрибут href="%{countrylist}" виновник выбора не работает. Эти два атрибута являются взаимоисключающими. Вы должны выбрать между двумя вариантами, либо вы используете autocompleter как поле ввода с удаленными данными или как поле выбора, но без удаленной загрузки данных, поскольку оно загружается из valueStack как обычно select тег.

Вы можете дополнить поле выбора selectBoxIcon="true" чтобы виджет отображался плавно или используйте соответствующую тему jQuery в теге заголовка. Попытайся

<sj:autocompleter selectBox="true" selectBoxIcon="true" list="lstcountry"
    listKey="idcountry" listValue="countryname" label="Country"
    name="idcountry" /> 

Пример из вики-страницы jQuery плагина struts2.

+1, потому что я вижу, что вы уже разместили в относительной группе Google... но, если все это время не изменилось, согласно этому (довольно старому, но все еще открытому JIRA) комментарию автора плагина:

Автозаполнение с selectBox работает со статическим списком. В вашем случае вы должны использовать <sj:select /> вместо этого используйте тег autocomplete="true".

<s:url id="remoteurl" action="jsonsample"/> 
<sj:select
         href="%{remoteurl}"
         autocomplete="true"
         id="echo3"
         name="echo"
         list="languageObjList"
         listKey="myKey"
         listValue="myValue"
         emptyOption="true"
         headerKey="-1"
         headerValue="Please Select a Language"/>

Тогда <sj:select /> с обоими emptyOption а также autocomplete установлен в true может быть замена для динамического выбора <sj:autocompleter /> ты ищешь.

Не стесняйтесь запустить этот пример тоже, который, кажется, работает из коробки.

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