我有一个RestController,它以JSON格式返回数据库中的所有用户:
@RequestMapping(path="users", method=RequestMethod.GET)
public List<User> getAllUsers(){
return userService.getAllUsers();
}
我有一个输入字段,我想在输入用户名时自动填写:
<input id="user" type="text">
Ajax电话:
$("#user").keyup(function(e) {
var username = e.target.value;
delaySearch && clearTimeout(delaySearch);
delaySearch = setTimeout(() => {
var url="/clients/";
$.getJSON(url, function(data){
..?
}
}, 200);
});
}
如何通过控制器返回的用户进行过滤? 我是否需要一个不同的控制器来输入输入字段中的字母? 我是初学者,所以如果这是一个简单的问题,我很抱歉。 User类有一个字段String表示Name,一个字段表示Last Name。 我需要两个都表明。提前谢谢!!
答案 0 :(得分:0)
您的getAllUsers
方法需要参数,然后您需要过滤从.getAllUsers()方法获得的结果:
@RequestMapping(path="users", method=RequestMethod.GET)
public List<User> getAllUsers(@RequestParam String name){
List<User> results = userService.getAllUsers();
return results.stream.filter( user -> user.contains(name)).collect(Collectors.toList());
}
然后您需要通过参数过滤结果。
但你真的可能不想这样运行它,你可能会为每一次击键传递很长的用户列表。我建议您实施一种.getAllUsersContaining(String name)
方法来查询您的数据库,或者您是否存储数据