当前位置: 首页 > 知识库问答 >
问题:

@带有参数列表的RequestParam

孔鸿哲
2023-03-14

目标是发送一个HTTP GET请求,其中包含表示枚举值的字符串列表问卷主题,然后使用这些参数选择正确主题的问题。我还添加了一个自定义转换器来将接收到的字符串转换为我的枚举。我的问题是当我在方法中调试时,“主题”总是为空。

这是我当前的RESTendpoint:

@ResponseBody
@GetMapping(path = "question/getquestionsbysubjects")
public List<Question> loadQuestionsBySubjects(@RequestParam(required=false) QuestionSubject[] subjects) throws IOException, GeneralSecurityException {
   if(subjects == null || subjects.length == 0){
       return this.loadAllQuestions();
   }
   return questionRepository.findByQuestionSubjectIn(Arrays.asList(subjects));
}

当我通过带有以下签名的方法传递单个主题时,我能够得到我的问题:

public List<Question> loadQuestionsBySubjects(@RequestParam(required=false) QuestionSubject subject)

因此,将字符串转换为枚举似乎不是问题。

我尝试发送多个请求,但在endpoint中主题始终为null。以下是我已经尝试使用postman的内容:

http://localhost:8080/question/getquestionsbysubjects?subjects=contacts,ko
http://localhost:8080/question/getquestionsbysubjects?subjects=["contacts", "ko"]
http://localhost:8080/question/getquestionsbysubjects?subjects=contacts&subjects=ko

有什么我不知道的问题吗?这些似乎在我在其他问题中发现的情况下有效。

这是转换器:

public class StringToQuestionSubjectConverter implements Converter<String, QuestionSubject> {
   @Override
   public QuestionSubject convert(String source) {
     return QuestionSubject.valueOf(source.toUpperCase());
   }

   public Iterable<QuestionSubject> convertAll(String[] sources) {
     ArrayList<QuestionSubject> list = new ArrayList<>();
        for (String source : sources) {
            list.add(this.convert(source));
        }
     return list;
    }
}

共有1个答案

魏景龙
2023-03-14

直接使用List

@RequestParam(required=false) List<QuestionSubject> subjects

return questionRepository.findByQuestionSubjectIn(subjects);
 类似资料:
  • 问题内容: 有人知道您是否可以从具有参数的JobDSL中运行Jenkins的工作吗? 我已经使用了队列https://jenkinsci.github.io/job-dsl- plugin/#path/queue 但是根据文档,它仅接受字符串或Job对象。也许有一种方法可以对Job对象进行处理,但是还不清楚。从JobDSL文档: 问题答案: 有同样的问题并且在文档中找不到答案,所以我现在按照这个例

  • 问题内容: 执行查询时如何在JDBC的prepareStatement中设置in子句的值。 例: 如果此条款可 问题答案: 我要做的是添加一个“?” 对于每个可能的值。 例如: 然后愉快地设置参数

  • 所以目前,这是我所做的(不起作用): 这是与建议匹配的代码: 以及由junit测试生成的跟踪:

  • 我正在尝试使用OpenAPI记录一个查询字符串,它看起来像 并包含具有属性 和的对象列表。 我的 文档如下所示 问题如下:它看起来像<code>样式:deepObject</code>选项只适用于一个级别,而不适用于我的对象实际所在的第二个级别。也就是说,它需要一个查询字符串,如 对象未序列化为具有和键的数组。 有办法解决吗?

  • 问题内容: 我最近(终于?)开始使用它,对此可能有一个模糊的问题。 给定 和 工作出色,并且都可以打印: 我不知道我可以像(1)中那样处理列表,这很简洁。我以前曾经看过关于字段宽度参数(2)的旧格式。 我的问题是想要做这样的事情,将(1)和(2)结合起来: 但是,我无法做到这一点,即使有可能,我也无法从文档中找出答案。只需提供要打印的列表以及width参数即可。 顺便说一句,我也尝试过这个(没有运

  • 在 C++ 中,空参数表可以用 void 指定或括号中不放任何东西。下列声明: void print(); 指定函数 print 不取任何参数,也不返回任何值。图 3.18 演示了 C++ 声明和使用带空参数表的函数的方法。 编程技巧 3.11 虽然函数先定义后使用时可以省略函数原型,最好也提供函数原型。提供函数原型可以避免代码使用时受到函数定义顺序的限制。(这个顺序可能随程序的演变而改变)。 /