Я должен выполнить поиск на сервере Java, и мне нужно передать параметры в виде объекта. Я передавал поля поиска в виде строк, используя HttpParams. Но теперь мне нужно передать его как объект, имеющий 9 строк, потому что сонар просто принимает до 7 аргументов. Мне нужно продолжать использовать метод get. Как я могу это сделать?
вот подпись метода get на сервере:
@GetMapping("/buscarPorFiltros")
public ResponseEntity<ProjetoResponse> buscarPorFiltros(PesquisaDTO pesquisa){
}
вот класс PesquisaDTO:
public class PesquisaDTO {
private Optional<String> dsProjeto;
private Optional<String> nomeProjeto;
private Optional<Date> dataInicio;
private Optional<Date> dataFim;
private Optional<String> statusProjeto;
private Optional<String> un;
private Optional<String> setor;
private Optional<String> gerenteProjetoNome;
private Optional<String> serviceType;
public PesquisaDTO() {
}
public String getDsProjeto() {
return dsProjeto.isPresent() ? dsProjeto.get() : "";
}
// others getters similar to getDsProject()
вот этоугловая функция:
public buscarPorFiltros(dsProjeto, nomeProjeto, statusProjeto, dtInicio, dtFim, un, setor, gerenteProjetoNome, serviceType): Observable<ProjetoResponse> {
varpesquisa: Pesquisa;
if (dsProjeto) {
pesquisa.dsProjeto = dsProjeto;
}
if (nomeProjeto) {
pesquisa.nomeProjeto = nomeProjeto;
}
if (statusProjeto) {
pesquisa.statusProjeto = statusProjeto;
}
if (dtInicio && dtFim) {
pesquisa.dataInicio = dtInicio;
pesquisa.dataFim = dtFim;
}
if (un) {
pesquisa.un = un;
}
if (setor) {
pesquisa.setor = setor;
}
if (gerenteProjetoNome) {
pesquisa.gerenteProjetoNome = gerenteProjetoNome;
}
if (serviceType){
pesquisa.serviceType = serviceType;
}
return this.httpClient.get<ProjetoResponse>(this.applicationUrl + mappingUrls.projetoService.buscarPorFiltros, { pesquisa });
}
Angular не принимает «pesquisa» в качестве параметра. Он говорит:
Argument of type '{ pesquisa: Pesquisa; }' is not assignable to parameter of type '{ headers?: HttpHeaders | { [header: string]: string | string[]; }; observe?: "body"; params?: HttpParams | { [param: string]: string | string[]; }; reportProgress?: boolean; responseType?: "json"; withCredentials?: boolean; }'. Object literal may only specify known properties, and 'pesquisa' does not exist in type '{ headers?: HttpHeaders | { [header: string]: string | string[]; }; observe?: "body"; params?: HttpParams | { [param: string]: string | string[]; }; reportProgress?: boolean; responseType?: "json"; withCredentials?: boolean; }'.
Кто-нибудь может мне помочь?