Angular 4 http get具有到Spring Request Mapping的多个参数

我试图发送带有参数的httpClient.get请求,并在我的Spring Controller中使用它.我想发送搜索条件并根据该条件返回对象列表.

这是我的search.service.ts

 public getDentists(name, city, type, rating): Observable<Dentist[]>{

    let params = new HttpParams();
    params.set('name', name);
    params.set('city', city);
    params.set('type', type);
    params.set('rating', rating);

    return this.httpClient.get('dentists/', {params: params});
  }

在我的controller.java中

@RequestMapping(value = "/dentists", method = RequestMethod.GET)
    public List<Dentist> search(@RequestParam("name") String name,
                         @RequestParam("city") String city,
                         @RequestParam("type") String type,
                         @RequestParam("rating") String rating) {

        return dentistRepository.findDentistByName(name);
}

这是我得到的错误

enter image description here

>我也收到此错误
2017-12-03 01:07:10.138警告10108–[nio-8080-exec-1] .wsmsDefaultHandlerExceptionResolver:已解决由处理程序执行引起的异常:org.springframework.web.bind.MissingServletRequestParameterException:必需的字符串参数’name ‘不存在

我的问题是我在做什么错,为什么我没有收到带有requestparam的参数?

解决方法:

HttpParams是不可变的.所有变异运运算符都会传回新实例,因此您必须

let params = new HttpParams()
    .set('name', name)
    .set('city', city)
    .set('type', type)
    .set('rating', rating);

要么

let params = new HttpParams();
params = params.set('name', name);
params = params.set('city', city);
params = params.set('type', type);
params = params.set('rating', rating);

相关文章

ANGULAR.JS:NG-SELECTANDNG-OPTIONSPS:其实看英文文档比看中...
AngularJS中使用Chart.js制折线图与饼图实例  Chart.js 是...
IE浏览器兼容性后续前言 继续尝试解决IE浏览器兼容性问题,...
Angular实现下拉菜单多选写这篇文章时,引用文章地址如下:h...
在AngularJS应用中集成科大讯飞语音输入功能前言 根据项目...
Angular数据更新不及时问题探讨前言 在修复控制角标正确变...