添加selectBox =“true”属性时,Struts2 JQuery插件AutoCompleter不起作用

时间:2013-12-18 22:22:26

标签: java jquery jquery-plugins struts2 struts2-jquery-plugin

Works(加载清单):

<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 个答案:

答案 0 :(得分:2)

+1,因为我看到你already posted on the relative Google Group ...但是,如果事情没有同时改变,根据插件作者的this (pretty old, but still open JIRA) comment

  

使用selectBox的自动完成程序正在使用静态列表。在   在您的用例中,您应该使用<sj:select />标记   自动填充=&#34;真&#34;相反。

<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的{​​{1}}可以替代您正在寻找的动态选择框true

随意运行this example too,这似乎是开箱即用的。

答案 1 :(得分:2)

启用了autocompleter的Struts2 jQuery 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" /> 

来自struts2 jQuery插件wiki页面的example