java - 如何通过java中的搜索正确请求与请求参数的映射?

标签 java

我遇到一个问题,我试图使用请求参数请求 map ,基本上我需要对此网址 jobs?autocomplete=0100 执行 GET 请求,并且由于某种原因我得到我所有的 /jobs 相反,你能帮我解决这个问题吗?谢谢!

@RestController
//@RequestMapping(value = "/jobs", params = "autocomplete")
public class AutoCompleteController {

    private AutoCompleteService autoCompleteService;

    private EntityManager em;

    public AutoCompleteController(AutoCompleteService autoCompleteService, EntityManager em) {

        this.autoCompleteService = autoCompleteService;
        this.em = em;
    }


    @GetMapping(value = "/jobs", produces = "application/json")
    public List<AutoComplete> getSalary(
            @RequestParam(name= "autocomplete", required = true) String autocomplete,
            @PathVariable("jobClassCd") String jobClassCd) {

        return autoCompleteService.retrieveSalary(jobClassCd);

    }





    public void getAllSalaries(HttpServletResponse res, HttpServletRequest req) {

        Stream<AutoComplete> stream = autoCompleteService.retrieveAllSalaries();
        DataStreamUtility.streamObjects(stream, res, em);



    }


}

Service:

@Service
public class AutoCompleteService {


    private AutoCompleteRepository autocompleteRepository;

    public AutoCompleteService(AutoCompleteRepository autRepo) {
        this.autocompleteRepository = autRepo;
    }

    public List<AutoComplete> retrieveSalary(String jobClassCd) {
        List<AutoComplete> salaries = autocompleteRepository.findByJobClassCd(jobClassCd);


        if (salaries.size() <= 0) {
            throw new SalaryNotFoundException(jobClassCd);
        }

        return salaries;
    }


    public Stream<AutoComplete> retrieveAllSalaries() {

        return autocompleteRepository.streamAll();


    }



} 

最佳答案

处理请求的方法必须有一个带有 @RequestParam 注解的参数:

获取本地主机:8080/jobs?job_id=456

@GetMapping("/jobs", produces = "application/json")
public Book getJob(@RequestParam("job_id") Long id) {
    return repo.findJobById(id);
}

因此,您的代码将如下所示:

@GetMapping("/jobs", produces = "application/json")
public List<AutoComplete> getSalary(
    @RequestParam("autocomplete", required = true) String autocomplete,
    @PathVariable("jobClassCd") String jobClassCd) {

    return autoCompleteService.retrieveSalary(jobClassCd);

}

关于java - 如何通过java中的搜索正确请求与请求参数的映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56569482/

相关文章:

java - Arrays.sort() -- 原始和复杂数据类型的两种不同排序策略

java - Android 中的资源标识符值是如何确定的?

java - 如何在 RHEL 上的 Tomcat 7 上启用 SSL/HTTPS

Java:添加两个相同类型的值,它们都是 java.lang.Number 的子类

java - Android 2.2 中的示例 DevicePolicyManager 代码可以工作吗?

java - 如何在 Android Kotlin 中包装异步 Java 库?

java - 将字符串映射到类(MapStruct)时出现问题

Java 时区转换

java - opennlp 上的嵌套标签

java - 如何在 RxJava 中的 Observable 中处理 map() 中的异常