javajqueryjquery-pluginsstruts2struts2-jquery-plugin

Struts2 JQuery Plugin AutoCompleter does not work when selectBox="true" attribute is added


Works (Loads the list fine):

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

Doesn't work (Nothing is loaded. No call is made to the action) :

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

Only difference is that the selectBox attribute is added. What am I missing? I am using Struts 2.3.15 and Struts2 JQuery Plugin 3.6.1 (which are both fairly recent).

Thanks !!


Solution

  • The Struts2 jQuery <sj:autocompleter> widget with the selectBox=true enabled to be able to work correctly shouldn't load data remotely. In other words the attribute href="%{countrylist}" is a culprit of the select box is not working. These two attributes are mutually exclusive. You have to choose between two options either you use a autocompleter as input box with remote data or as select box but without loading data remotely, because it's loaded from the valueStack as a normal select tag.

    You can supplement a select box with selectBoxIcon="true" to make the widget appear smoothly or use a corresponding jQuery theme in the header tag.

    Try it

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

    An example from the struts2 jQuery plugin wiki page.