Я использую Spring MVC для API Rest и пытаюсь вызвать следующий метод на контроллере:Нужно ли мне писать пользовательские HttpMessageConverter передать список <Long> в качестве параметра с RestTemplate
@RequestMapping(method=RequestMethod.POST, value=IApiVersion.VERSION_ALL_PREFIX + ORG_RESPONSE_PAUSE_WRITES_URL)
public @ResponseBody Boolean setResponsePauseWrites(@RequestParam List<Long> orgIds, @RequestParam boolean pauseWrites){
validateDatabusClient();
organizationService.setPauseResponseWrites(orgIds, pauseWrites);
return Boolean.TRUE;
}
Я использую Спринга RestTemplate
подать запрос, как это:
@Override
public void setPauseWrites(List<Long> orgIds, boolean pauseWrites){
String orgIdString = StringUtils.collectionToCommaDelimitedString(orgIds);
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<>();
parameters.add("orgIds", orgIdString);
parameters.add("pauseWrites", Boolean.toString(pauseWrites));
restTemplate.postForObject(orgResponsePauseWritesURL, parameters, Boolean.class);
}
Это прекрасно работает и все, но я предпочел бы не нужно, чтобы преобразовать список orgIds в разделенных запятыми строку. Я расстроен, потому что у контроллера Spring mvc нет проблем с преобразованием строк обратно в ожидаемые параметры, List и boolean. Я бы ожидал, что в RestTemplate будет встроенный конвертер сообщений для обработки основных классов Java, таких как List и Boolean.
Когда я пытаюсь этот код:
@Override
public void setPauseWrites(List<Long> orgIds, boolean pauseWrites){
MultiValueMap<String, Object> parameters = new LinkedMultiValueMap<>();
parameters.add("orgIds", orgIds);
parameters.add("pauseWrites", Boolean.valueOf(pauseWrites));
restTemplate.postForObject(orgResponsePauseWritesURL, parameters, Boolean.class);
}
Я получаю следующее сообщение об исключении:
org.springframework.http.converter.HttpMessageNotWritableException: Could not write request: no suitable HttpMessageConverter found for request type [java.util.ArrayList]
Что такое мой лучший вариант? Я планирую продолжить преобразовывать параметры в Strings для остального шаблона на данный момент, но я хотел бы знать, есть ли MessageConverter, который я могу добавить в мой RestTemplate, чтобы сделать эту работу. В настоящее время я просто использую MessageConverters по умолчанию. Я попытался добавить MappingJacksonMessageConverter
и изменить заголовок типа контента для поддержки json, но получаю те же результаты.
спасибо.
Это имеет смысл, спасибо! –