You can find the full source code for this website in the Seam package in the directory /examples/wiki. It is licensed under the LGPL.
There is a simple form to create autocomplete using Seam using EntityQuery.
Let's use the tag rich:suggestionbox. If you don't know this, visit RichFaces demo page . There is a good example about this tag.
<s:decorate id="userDecoration" template="layout/edit.xhtml"> <ui:define name="label">Name</ui:define> <h:inputText id="user" value="#userList.instance.userName}"> </h:inputText> <rich:suggestionbox id="suggestionBox" for="userName" fetchValue="#{userList.instance.userName}" suggestionAction="#{userList.autoComplete}" var="user" minChars="2"> <h:column> <h:outputText value="#user.userName}" /> </h:column> </rich:suggestionbox> </s:decorate>
Now, is necessary create the method autocomplete...
@Name("userList") public class UserList extends EntityQuery { ... public List<User> autoComplete(Object o) { String sql = this.getEjbql() + " where lower(user.userName) like concat('%',lower('"+o.toString()+"'),'%')"; return this.getEntityManager().createQuery(sql).getResultList(); }