I\'ve used the Struts2 jQuery autocompleter for my Struts 2 application.
Here is my code:
JSP:
This is wrong:
<sj:autocompleter href="%{remoteurl}" id="lst" name="lst"
list="itemList" listValue="name" listKey="id" selectBox="true" />
You are feeding the autocompleter with a Map, not with an custom object built by yourself.
An HashMap does not have any name nor id fields, instead it have keys and values fields.
Start by changing that and see if it works:
<sj:autocompleter href="%{remoteurl}" id="lst" name="lst"
list="itemList" listValue="value" listKey="key" selectBox="true" />
You have typed wrong attribute that is not referenced.
<s:url id="remoteurl" action="test" />
should be
<s:url var="remoteurl" action="test" />
Use the list item bean class
public class ListValue {
private String id;
private String name;
...
}
public String populate() throws Exception {
itemList.add(new ListValue("Php", "Php"));
itemList.add(new ListValue("Java","Java") );
itemList.add(new ListValue("Mysl", "Mysl") );
return SUCCESS;
}
assumed that constructor and mutators have been added.
Do this one
<s:url id="remoteurl" action="test"/>
<sj:select
id="customersjsonlstid"
name="echo"
label="Handle a List"
href="%{remoteurl}"
list="itemList"
listValue="name"
listKey="id"
autocomplete="true"
loadMinimumCount="2"
id="echo3"/>
Instead of this:
<sj:autocompleter href="%{remoteurl}" id="echo3" name="echo"
list="itemList" listKey="id" listValue="name" emptyOption="true"
headerKey="-1" headerValue="Please Select a Language" selectBox="true" />
And make sure you are returning the list from your action class. To check this, do it with your IDE debugger or System.out.print etc.
ex...
-------------
------------
itemList.add(new ListValue("Mysl", "Mysl") );
System.out.println("Size of my list="+itemList.size());
return SUCCESS;
}
And also you should define getter & setters in your action class
private List itemList;
public List getItemList() {
return itemList;
}
public void setItemList(List itemList) {
this.itemList = itemList;
}