我打算使用sj:autocompleter
显示文本框的建议列表。当我在jsp中对数据进行硬编码时,它可以正常工作。
<sj:autocompleter name="fruitNames"
list="{'apple', 'banana', 'orange', 'apricot'}"
label="Fruit Names">
</sj:autocompleter>
但我想从动作类中动态获取建议列表。我试过这样做,但它没有获得价值。
<sj:autocompleter name="fruitNames" list="fruitslist"
label="Fruit Names">
</sj:autocompleter>
在我的动作课中,
public String execute() {
fruitslist= new ArrayList<String>();
fruitslist.add("Apple");
fruitslist.add("Banana");
fruitslist.add("Orange");
fruitslist.add("Apricot");
}
请帮忙。
答案 0 :(得分:1)
确保你有一个吸气剂:
public List<String> getFruitslist() {
return fruitslist;
}
由于您发布了struts.xml,现在很明显您要使用JSON,因此必须更改代码。前一个答案是指主要Action中的标准数组;在JSON操作的情况下,您需要在自动填充程序的href
属性中指定一个URL以指向单独的JSON操作:
<s:url var="remoteurl" action="ajaxAction"/>
<sj:autocompleter
id="fruitslist"
href="%{remoteurl}"
delay="50"
loadMinimumCount="2"
/>
然后你需要将结果设置为JSON,并将root
对象设置为数组,如下所示:
<action name="ajaxAction" class="org.struts.action.AjaxJsonAction">
<result name="success" type="json">
<param name="root">
fruitslist
</param>
</result>
</action>
我强烈建议您阅读how the Struts2-JSON plugin works。