微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐