java 当添加selectBox=“true”属性时,Struts2 JQuery插件AutoCompleter不工作

1rhkuytd  于 2023-09-29  发布在  Java
关注(0)|答案(2)|浏览(95)

工作(加载列表):

<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和Struts 2 JQuery Plugin 3.6.1(这两个版本都是最近的版本)。
谢谢你!

2skhul33

2skhul331#

启用了selectBox=true的Struts2 jQuery <sj:autocompleter>小部件不应该远程加载数据。换句话说,属性href="%{countrylist}"是选择框不工作的罪魁祸首。这两个属性是相互排斥的。您必须在两个选项之间进行选择,要么使用autocompleter作为带有远程数据的输入框,要么作为选择框但不远程加载数据,因为它是作为普通的select标记从valueStack加载的。
您可以使用selectBoxIcon="true"来补充选择框,以使小部件平滑显示,或者在头标记中使用相应的jQuery主题。
试试

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

来自struts2 jQuery插件wiki页面的示例。

mbzjlibv

mbzjlibv2#

+1因为我看到你有already posted on the relative Google Group.但是,如果事情没有改变,同时,根据这个(很老,但仍然开放JIRA)插件作者的评论:

selectBox的autocompleter处理静态列表。在您的用例中,您应该使用带有autocomplete=“true”的<sj:select />标记。

<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"/>

然后,将emptyOptionautocomplete都设置为true<sj:select />可以替代您正在寻找的动态选择框<sj:autocompleter />
请随意运行this example too,它似乎可以开箱即用。

相关问题