- Use AUI use function to load required AUI Java Script Modules.
- Create AUI Auto Complete List and pass required options
- Implement AUI IO Ajax in AUI Auto Complete List call back function
- Implement Server Resource Method in Portlet Action class to search data from user table.
|
<%@page import= "com.liferay.portal.kernel.util.Constants"%>
<%@ include file= "init.jsp"%>
<portlet:resourceURL var= "getUsers">
<portlet:param name= "<%=Constants.CMD%> " value= "get_users" />
</portlet:resourceURL>
<h2> Liferay Auto Complete List with Ajax</h2><br/>
<aui:input id= "myInputNode" name= "myInputNode" label= "User Email"
helpMessage= "Type User Email address in Input Box" />
<aui:script>
AUI().use(' autocomplete-list',' aui-base',' aui- io-request',' autocomplete-filters',' autocomplete- highlighters',function (A) {
var testData;
new A.AutoCompleteList({
allowBrowserAutocomplete: 'true',
activateFirstItem: 'true',
inputNode: '#<portlet:namespace />myInputNode',
resultTextLocator:'email',
render: 'true',
resultHighlighter: 'phraseMatch',
resultFilters:['phraseMatch'],
source:function(){
var inputValue=A.one("#<portlet:namespace />myInputNode").get('value');
var myAjaxRequest=A.io.request('<%=getUsers.toString()%>',{
dataType: ' json',
method:'POST',
data:{
<portlet:namespace />userEmail:inputValue,
},
autoLoad:false,
sync:false,
on: {
success:function(){
var data=this.get('responseData');
testData=data;
}}
});
myAjaxRequest.start();
return testData;},
});
});
</aui:script>
|
|
public class LiferayAUIAutoCompleteListWithAjaxAction extends MVCPortlet {
@Override
public void serveResource(ResourceRequest resourceRequest,
ResourceResponse resourceResponse) throws IOException,
PortletException {
String cmd = ParamUtil. getString(resourceRequest, Constants. CMD);
System. out.println("Constants.CMD: " + cmd);
if (cmd.equals("get_users")) {
getUsers(resourceRequest, resourceResponse);
}}
private void getUsers(ResourceRequest resourceRequest,
ResourceResponse resourceResponse) throws IOException,
PortletException {
JSONArray usersJSONArray = JSONFactoryUtil. createJSONArray();
ThemeDisplay themeDisplay = (ThemeDisplay) resourceRequest.getAttribute(WebKeys. THEME_DISPLAY);
String userEmail = ParamUtil. getString(resourceRequest, "userEmail");
System. out.println("=====00000========" + userEmail);
DynamicQuery userQuery = DynamicQueryFactoryUtil. forClass(User. class,
PortalClassLoaderUtil. getClassLoader());
Criterion criterion = RestrictionsFactoryUtil. like("emailAddress",
StringPool. PERCENT + userEmail + StringPool. PERCENT);
userQuery.add(criterion);
JSONObject userJSON = null;
System. out.println("=====1111========" + userQuery.toString());
try {
List<User> userList = UserLocalServiceUtil.dynamicQuery(userQuery);
System. out.println("=====222========" + userList.size());
for (User user : userList) {
userJSON = JSONFactoryUtil. createJSONObject();
userJSON.put("userId", user.getUserId());
userJSON.put("email", user.getEmailAddress());
userJSON.put("firstName", user.getFirstName());
usersJSONArray.put(userJSON);
}} catch (Exception e) {
}
PrintWriter out = resourceResponse.getWriter();
out.println(usersJSONArray.toString());
}
}
|


