Итак, у меня есть этот контроллер:
@RequestMapping(value = "/zone/settings/ranged/update", method = RequestMethod.POST, produces="application/json", consumes="application/json")
public @ResponseBody ResponseEntity<Map<String, Object>> zoneSettingsRangedUpdate(
WebRequest request,
@RequestBody RoundRangeData data,
Map<String, Object> model
) throws IOException {
model.put("request", data);
model.put("success",true);
return new ResponseEntity<>(model, HttpStatus.OK);
}
С этим как POJO:
public class RoundRangeData {
private BigInteger pricingDate;
private Long zoneid;
private Long psid;
private Float roundTo;
private Float lowerLimit;
private Float upperLimit;
public RoundRangeData() {
}
public RoundRangeData(BigInteger pricingDate, Long zoneid, Long psid, Float roundTo, Float lowerLimit, Float upperLimit) {
this.pricingDate = pricingDate;
this.zoneid = zoneid;
this.psid = psid;
this.roundTo = roundTo;
this.lowerLimit = lowerLimit;
this.upperLimit = upperLimit;
}
public BigInteger getPricingDate() {
return pricingDate;
}
public void setPricingDate(BigInteger pricingDate) {
this.pricingDate = pricingDate;
}
public Long getZoneid() {
return zoneid;
}
public void setZoneid(Long zoneId) {
this.zoneid = zoneId;
}
public Long getPsid() {
return psid;
}
public void setPsid(Long psid) {
this.psid = psid;
}
public Float getRoundTo() {
return roundTo;
}
public void setRoundTo(Float roundTo) {
this.roundTo = roundTo;
}
public Float getLowerLimit() {
return lowerLimit;
}
public void setLowerLimit(Float lowerLimit) {
this.lowerLimit = lowerLimit;
}
public Float getUpperLimit() {
return upperLimit;
}
public void setUpperLimit(Float upperLimit) {
this.upperLimit = upperLimit;
}
}
Используя этот запрос (скриншот Chrome devtools,фактический запрос имеет кавычки вокруг свойств):
И я продолжаю получать эту ошибку:
ПРЕДУПРЕЖДЕНИЕ: Не удалось записатьHTTP-сообщение: org.springframework.http.converter.HttpMessageNotWritableException: Невозможно записать содержимое: Сериализатор не найден для класса org.springframework.validation.DefaultMessageCodesResolver и не обнаружены свойства для создания BeanSerializer (исключение исключения можно исключить, исключить исключение BeanSerializer).FAIL_ON_EMPTY_BEANS) (через цепочку ссылок: org.springframework.validation.support.BindingAwareModelMap ["org.springframework.validation.BindingResult.roundRangeData"] -> org.springframework.validation.BeanRoResRenceColver "вложенное исключение - com.fasterxml.jackson.databind.JsonMappingException: не найден сериализатор для класса org.springframework.validation.DefaultMessageCodesResolver и не обнаружены свойства для создания BeanSerializer (чтобы избежать исключения, отключите SerializationFeature.FAIL_ON_EMPTY_ chain_pr_signer_prise_base_scr_set_prof_signer_pris_in_serf).validation.support.BindingAwareModelMap ["org.springframework.validation.BindingResult.roundRangeData"] -> org.springframework.validation.BeanPropertyBindingResult ["messageCodesResolver"])
10: попыталось 10: 10*
- Изменены средства доступа к полям на общедоступные
- Попытка переваривания нормальной строки, та же ошибка
- Аннотировал каждый метод получения с помощью @ JSONProperty
- Создает модульный тест и вызываетконтроллер, использующий сгенерированный JSON из сопоставителя объектов из экземпляра объекта RoundRangeData
Сериализация объектов Java в JSON работает для ответов, но мне не повезло, сериализация JSON в объекты Javaв моих контроллерах.