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 !!
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.