如何在弹簧启动休息控制器中使用多个参数更多?

发布于 2025-01-19 22:13:00 字数 1751 浏览 0 评论 0原文

我想获得以下 URL 以使用 2 个参数访问我的数据:

http://localhost:8080/contactnote?entryDate=2022-02-01?contactType=T

具有单个参数的两个映射是工作:

@GetMapping(params ={"contactType"})
    public ResponseEntity<Collection<ContactNote>> findContactNotesWithEntryDateGreaterThan(@RequestParam(value = "contactType")  String contactType) {
        return new ResponseEntity<>(repository.findByContactType(contactType), HttpStatus.OK);
    }
    @GetMapping(params ={"entryDate"})
    public ResponseEntity<Collection<ContactNote>> findContactNotesWithDateTilGreaterThan(@RequestParam(value = "entryDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date entryDate) {
        return new ResponseEntity<>(repository.findByEntryDateGreaterThan(entryDate), HttpStatus.OK);

但是当我尝试将它们与两个参数结合起来时,它不起作用,其中没有一个可用。

@GetMapping(params ={"entryDate", "contactType"})
    public ResponseEntity<Collection<ContactNote>> findByEntryDateGreaterThanAndContactTypeWith(
            @RequestParam(value = "entryDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date entryDate,
            @RequestParam(value = "contactType") String contactType
    )

我的存储库如下所示:

import de.bhm.zvoove.api.domain.ContactNote;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

@Repository
public interface ContactNoteRepository extends JpaRepository<ContactNote, Long> {
    List<ContactNote> findByContactType(String ContactType);
    List<ContactNote> findByEntryDateGreaterThanAndContactType(Date entryDate , String ContactType);

}

I want to achive the follwing URL to access my data with 2 params:

http://localhost:8080/contactnote?entryDate=2022-02-01?contactType=T

Both mappings with a single param is working:

@GetMapping(params ={"contactType"})
    public ResponseEntity<Collection<ContactNote>> findContactNotesWithEntryDateGreaterThan(@RequestParam(value = "contactType")  String contactType) {
        return new ResponseEntity<>(repository.findByContactType(contactType), HttpStatus.OK);
    }
    @GetMapping(params ={"entryDate"})
    public ResponseEntity<Collection<ContactNote>> findContactNotesWithDateTilGreaterThan(@RequestParam(value = "entryDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date entryDate) {
        return new ResponseEntity<>(repository.findByEntryDateGreaterThan(entryDate), HttpStatus.OK);

But when I try to combine them with two params it wont work, not one of them is usable.

@GetMapping(params ={"entryDate", "contactType"})
    public ResponseEntity<Collection<ContactNote>> findByEntryDateGreaterThanAndContactTypeWith(
            @RequestParam(value = "entryDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date entryDate,
            @RequestParam(value = "contactType") String contactType
    )

My reposiitory looks like this:

import de.bhm.zvoove.api.domain.ContactNote;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

@Repository
public interface ContactNoteRepository extends JpaRepository<ContactNote, Long> {
    List<ContactNote> findByContactType(String ContactType);
    List<ContactNote> findByEntryDateGreaterThanAndContactType(Date entryDate , String ContactType);

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦境 2025-01-26 22:13:00

您输入的 URL 无效,双?,您必须使用 & 作为第二个参数

正确的一个:http://localhost:8080/contactnote? EntryDate=2022-02-01&contactType=T

此代码有效,使用 name 而不是 value

@GetMapping(path= "/contactnote")
@ResponseBody
public String findByEntryDateGreaterThanAndContactTypeWith(
        @RequestParam(name = "entryDate", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date entryDate,
        @RequestParam(name = "contactType", required = false) String contactType) {

    return "Hello World";
}

在此处输入图像描述

the URL you entered is invalid, double ?, you have to use & for the second parameter

correct one: http://localhost:8080/contactnote?entryDate=2022-02-01&contactType=T

this code work, use name instead value

@GetMapping(path= "/contactnote")
@ResponseBody
public String findByEntryDateGreaterThanAndContactTypeWith(
        @RequestParam(name = "entryDate", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date entryDate,
        @RequestParam(name = "contactType", required = false) String contactType) {

    return "Hello World";
}

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文