有效(加载列表正常):
<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(它们都是相当新的)。
谢谢!!
的 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 页面的示例。
+1,因为我看到你已经已经在相关的Google群组上发布了...但是,如果事情没有改变,根据插件作者的这个(相当旧,但仍然打开JIRA)评论 :
带有 selectBox 的自动完成器正在使用静态列表。在 您的用例应该使用
标签 改为 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"/>
然后,将
<sj:select />
和 emptyOption
设置为 autocomplete
的 true
可以替代您正在寻找的动态选择框 <sj:autocompleter />
。
也可以随意运行这个示例,它似乎是开箱即用的。