2013-04-21 58 views
1

在文本字段中进行更改时,jQuery调用Spring Controller。我的问题是这个查询如何将@RequestParam发送到控制器方法controller/find使用附加参数对Spring Controller进行jQuery调用

如何在此通话中发送更多Param

$(document).ready(function() { 
     $("#id").autocomplete({ 
      source: "${pageContext. request. contextPath}/controller/find.htm" 
     }); 

    }); 

这工作

@RequestMapping(value = "/find", method = RequestMethod.GET) 
    public @ResponseBody 
    List<String> findItem(@RequestParam("term") String id) 

但需要像

@RequestMapping(value = "/find", method = RequestMethod.GET) 
    public @ResponseBody 
    List<String> findItem(@RequestParam("term") String id, Additional param here ??) 

回答

6

如果你传递一个函数来​​3210的source选项(而不是字符串来指定URL),你可以定义要发送到服务器的自己的数据结构:

$('#id').autocomplete({ 
    source: function (request, response) { 
     $.ajax({ 
      url: './controller/find.htm', 
      data: { 
       term: request.term, 
       extraParam: 'foo' 
      }, 
      success: function (data) { 
       console.log('response=', data); 
      } 
     }); 
    } 
}); 

现在自动填充请求将包含两个参数:termextraParam(jsFiddle:http://jsfiddle.net/gtBUt/,打开浏览器的“网络通信”选项卡以查看发送的内容)。然后

控制器可以处理该输入这样的:

@RequestMapping(value = "/find", method = RequestMethod.GET) 
@ResponseBody 
public List<String> findItem(@RequestParam("term") String term, 
          @RequestParam("extraParam") String extraParam) { 
    ... 
} 
+0

它的作品!谢谢 – 2013-04-22 01:00:20

0

我没有完全按照@kryger但它不是为我工作说。 但是,如果我从控制器中删除了@RequestParam(“extraParam”),那么除了String extraParam的值将作为空值传递外,其他所有工作都会正常工作。

请参阅我的JS文件:

$('#tags').autocomplete({ 
source : function(request, response) { 
    $.ajax({ 
     url : 'search', 
     data : { 
      term : request.term, 
      ccmcategory : $('#ccmcategory').val() 
     }, 
     success : function(data) { 
      return { 
       label : item.cmcname, 
       value : item.cmcname, 
       link : 'collegeDetail/' + item.cmuid, 
      }; 
     }, 
     select : function(e, ui) { 
      location.href = ui.item.link; 
     } 
    }); 
} 
}); 

,这是我的控制器:

@RequestMapping(value = "/search", method = RequestMethod.GET) 
@ResponseBody 
public List<College> searchCourse(@RequestParam("term") String coursename, 
            @RequestParam("ccmcategory") String ccmcategory) { 
    System.out.println(ccmcategory); 
    List<College> collegeList = collegeDAO.getCollegeByCourse(coursename, ccmcategory); 
    return collegeList; 
} 
相关问题