在文本字段中进行更改时,jQuery会调用Spring Controller。我的问题是此查询如何将@RequestParam
发送到Controller方法controller/find
?
如何在此通话中发送额外的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 ??)
答案 0 :(得分:7)
如果您将一个函数传递给自动完成的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);
}
});
}
});
现在,自动填充请求将包含两个参数:term
和extraParam
(jsFiddle:http://jsfiddle.net/gtBUt/,打开浏览器的“网络流量”标签,查看已发送的内容。
然后控制器可以像这样处理这个输入:
@RequestMapping(value = "/find", method = RequestMethod.GET)
@ResponseBody
public List<String> findItem(@RequestParam("term") String term,
@RequestParam("extraParam") String extraParam) {
...
}