添加 selectBox="true" 属性时,Struts2 JQuery 插件自动完成器不起作用

问题描述 投票:0回答:2

有效(加载列表正常):

<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(它们都是相当新的)。

谢谢!!

java jquery jquery-plugins struts2 struts2-jquery-plugin
2个回答
2
投票

启用 <sj: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 页面的示例


2
投票

+1,因为我看到你已经已经在相关的Google群组上发布了...但是,如果事情没有改变,根据插件作者的这个(相当旧,但仍然打开JIRA)评论 :

带有 selectBox 的自动完成器正在使用静态列表。在 您的用例应该使用

<sj:select />
标签 改为 autocomplete="true"。

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

也可以随意运行这个示例,它似乎是开箱即用的。

© www.soinside.com 2019 - 2024. All rights reserved.