我试图发送带有参数的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);
}
这是我得到的错误:
>我也收到此错误:
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);