Мой POJO
public class SearchCriteria {
private String key;
private String operation;
private Object value;
default constructor, parameters constructor, setters and getters....
}
Подпись моего метода RestController.
@GetMapping("/subscribers")
public ResponseEntity<List<SubscriberDTO>> getAllSubscribers(Pageable pageable,
@RequestParam(name = "lstSearchCriteria", required = false) List<SearchCriteria> lstSearchCriteria)
Теперь я хочу иметь возможность передавать через HttpParams список критериев поиска, необходимых для метода getAllSubscribers ().
Я пробовал несколько разных способов сделать это, но либо беру: Не удалось преобразовать значение типа java.lang.String в исключение требуемого типа java.util.List
или список пуст
Любая помощь очень ценится
Нет, это не так ... это проблема!?!? У меня есть метод перегрузки, который я впервые сделал, в котором List <SearchCriteria> отправляется через тело ... но мне сказали, что практика была плохой практикой, и я должен вместо этого отправить List <SearchCriteria> через HttpParams. И версия с перегрузкой, где параметры передаются по телу, работает нормально .. Я отправил их в формате Json, кстати
Это зависит от того, как вы добавляете параметры поиска в url. Общий способ - реализовать собственный HandlerMethodArgumentResolver и зарегистрировать его. Но сначала учтите, что преобразование типа применяется автоматически, если тип параметра целевого метода не является String, и вы можете настроить преобразование типа через WebDataBinder или зарегистрировав средства форматирования с помощью FormattingConversionService. См. docs.spring.io/spring/docs/current/spring-framework-referenc e /…




Спасибо, ребята, за ответы.
Я использовал другой подход, и я хотел бы, чтобы вы, ребята, прокомментировали его правильность.
Теперь подпись метода RestController:
public ResponseEntity<List<SubscriberDTO>> getAllSubscribers(Pageable pageable,
@RequestParam(name = "jsonSearchCriteriaList", required = false) String jsonSearchCriteriaList)
И через API Джексона я создаю список из нового класса Util, созданного для этой цели ...
ObjectMapper mapper = new ObjectMapper();
mapper.readValue(json, new TypeReference<List<SearchCriteria>>(){});
А дальше все работает как положено!
Что вы думаете?
Является ли ваш класс SearchCriteria сериализуемым?