使用带有动态列表的sj:autocompleter自动填充文本框

时间:2014-10-22 19:56:22

标签: jquery jquery-ui struts2 autocomplete struts2-jquery

我打算使用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");
}

请帮忙。

1 个答案:

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