2014-09-11 56 views
1

我想在我的数据库中显示地址到自动完成aui输入字段。一切似乎工作正常。但im无法检索记录的地址编号。如何使用on改变autocomple列表的事件或如何访问所选项目的JSON对象如何从AUI自动完成列表中获取所选项目

@Override 
     public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws IOException, 
       PortletException 
     { 


      String cmd = ParamUtil.getString(resourceRequest, "get_address"); 
      String myInputNode = ParamUtil.getString(resourceRequest, "addressAutocomplete"); 

      System.out.println("addressAutocomplete"+myInputNode); 
      if (cmd.equals("get_address")) { 
      getUsers(resourceRequest, resourceResponse,myInputNode); 
      } 
      } 


    private void getUsers(ResourceRequest resourceRequest, ResourceResponse resourceResponse, String myInputNode) throws IOException, PortletException { 

       JSONArray usersJSONArray = JSONFactoryUtil.createJSONArray(); 
       ThemeDisplay themeDisplay = (ThemeDisplay)resourceRequest.getAttribute(WebKeys.THEME_DISPLAY); 
       JSONObject userJSON=null; 
       try { 
       List<AddressMaster> userList=AddressMasterLocalServiceUtil.getAllAddressBySearchKey(myInputNode); 
              for(AddressMaster addressMaster:userList){ 
       userJSON=JSONFactoryUtil.createJSONObject(); 
       userJSON.put("addressNumber",addressMaster.getAdrNummer()); 

       userJSON.put("address", addressMaster.getAddress()) 
     ); 

         usersJSONArray.put(userJSON); 
       } 
       } catch (Exception e) { 
       } 
       PrintWriter out=resourceResponse.getWriter(); 
       out.println(usersJSONArray.toString()); 

       System.out.println("usersJSONArray"+usersJSONArray.toString()); 



      } 

JSP文件

<portlet:resourceURL var="getAddress"> 
    <portlet:param name="get_address" value="get_address" /> 
</portlet:resourceURL> 


<aui:input id="addressAutocomplete" name="addressAutocomplete" label="group_choose_address" style="width:700px"/> 

<aui:script> 
AUI().use('autocomplete-list','aui-base','aui-io-request','autocomplete-filters','autocomplete-highlighters',function (A) { 
A.io.request('<%=getAddress%>',{ 
dataType: 'json', 
method: 'GET', 
on: { 
success: function() { 
//continents=this.get('responseData'); 
//alert(continents[0].name); 
new A.AutoCompleteList(
{ 
allowBrowserAutocomplete: 'true', 
activateFirstItem: 'true', 
inputNode: '#<portlet:namespace/>addressAutocomplete', 
resultTextLocator: 'address', 
resultHighlighter:['phraseMatch'], 
resultFilters:['phraseMatch'], 
render: 'true', 
source:this.get('responseData'), 
}); 
}} 
});     
}); 
</aui:script> 

回答

1

这是一个有点棘手,看看究竟会来的,但我认为你可以做:

var address_ac = new A.AutoCompleteList({... as you have it...}); 
address_ac.on('select', function (e) { 
    var selected_node = e.itemNode, 
     selected_data = e.result; 
}); 

Docs here:http://alloyui.com/versions/1.5.x/api/classes/AutoCompleteList.html#events

+0

非常感谢。 e.result.raw.addressNumber将返回所选项目的地址标识 – playmaker420 2014-09-11 15:59:46

相关问题