Spring Boot自动完成ajax

时间:2017-10-15 21:46:12

标签: jquery ajax spring spring-boot

我有一个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。 我需要两个都表明。提前谢谢!!

1 个答案:

答案 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)方法来查询您的数据库,或者您是否存储数据