0

我目前将可能使用简单列表的自动完成器更改为 json 之一,以便能够链接它们。

我从我的操作中定义了一个 json 输出(从我的 struts.xml 中提取):

<action name="listCompanies" class="web.action.SearchAction" method="getCompaniesAction">
<result type="json">
  <param name="root">companies</param>
</result>
</action>

链接到代码(SearchAction 的摘录):

   public String getCompaniesAction() throws Exception{
  if (term!=null && term.trim().length()>1) {
    companies=new ArrayList<KeyValuePair>();
    IServiceReferential serviceReferential = (IServiceReferential)getService(IServiceReferential.class);
    List<ICompany> listDaoCompanies =
        serviceReferential.getCompanies(getUserLoginSession(),term);

    for (Iterator<ICompany> it = listDaoCompanies.iterator(); it.hasNext();){
        ICompany company = (ICompany) it.next();
        companies.add(new KeyValuePair(company.getId().toString(), company.getCompanyname()));
    }
  }
  return SUCCESS;
}

听起来效果很好:当我询问 json 操作时,它会起作用并返回: [{"key":"1","value":"Comp1"},{"key":"2","value":"比较"}]

jsp 中的自动完成标记如下所示:

<s:url id="url_companies" action="listCompanies" />
<sj:autocompleter size="1" name="selectCompany" href="%{url_companies}" list="companies" listKey="key" listValue="value" delay="100" loadMinimumCount="2"  onSelectTopics="/autoCompanyChange"/>

它很好地触发了 json 动作,但文本框从不建议我完成。

谢谢你的帮助。

4

1 回答 1

0

您需要从自动完成器中删除 list="companies" 属性

于 2013-01-31T11:01:01.563 回答