Цель состоит в том, чтобы отправить HTTP-запрос GET, содержащий список строк, представляющих значения перечисления QuestionSubject, а затем использовать эти параметры для выбора вопросов нужной темы. Я также добавил специальный конвертер для преобразования полученной строки в мое перечисление. Моя проблема в том, что "subject" всегда имеет значение null, когда я отлаживаю внутри метода.
Это моя текущая конечная точка REST:
@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)
Таким образом, это не похоже на проблему преобразования строки в enum
.
Я пытался отправить несколько запросов, но субъекты всегда имеет значение NULL в конечной точке. Вот что я уже пробовал использовать почтальоном:
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;
}
}