Я отправляю объект JSON в службу Java Rest и получаю ошибку 400 Bad Request в ответ. Я отправляю запрос через службу Angular JS.400 Ошибка преобразования JSON в Spring MVC 4 Rest
Конфигурация Java:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "gov.mt.dphhs.bts.rest")
public class MvcConfig extends WebMvcConfigurerAdapter {
private static final Logger logger = LoggerFactory.getLogger(MvcConfig.class);
@Autowired
ObjectMapper objectMapper;
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
logger.debug("Initializing the Hibernate Aware Jackson Mapper for JSON.");
super.configureMessageConverters(converters);
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setObjectMapper(objectMapper);
converters.add(converter);
}
}
Java REST Service:
public class AbstractRestController<T, I extends Serializable> {
private final GenericService<T, I> service;
public AbstractRestController(GenericService<T, I> service) {
this.service = service;
}
/**
* Handles request to save entity of type T
*
* @param entity
* - the entity to be saved
* @return the saved entity
*/
@RequestMapping(value = "/save", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody T save(@RequestBody T entity) {
return service.save(entity);
}
...
@RestController
@RequestMapping(value = "/rest/bill")
public class BillRestController extends AbstractRestController<Bill, Long>
Угловая служба:
(function(){
var app = angular.module("billDetailsServiceModule", []);
app.service('billDetailsService', function($log, $http){
this.save = function(bill){
return $http({
url: 'api/rest/bill/save',
method: 'POST',
data: bill,
headers: {
'Content-Type': 'application/json; charset=utf-8',
'Accept': 'application/json;odata=verbose'
}
});
};
})();
Звонки с одной и той же услуги, чтобы получить методы в службе REST, работают очень хорошо. Я захватил запрос у Fiddler, и, согласно JSONLint, объект JSON хорошо сформирован. Я использую Jackson 2.4.3 и Spring 4.1.0. Я читал столько похожих вопросов, сколько могу найти, и ни одно из решений не работает для меня.
EDIT: Бревна вставленные здесь: http://chopapp.com/#hpc3axxc
Поверните свои журналы весны в DEBUG и покажите нам, что регистрируется. –
Я не верю, что Весна достаточно умна, чтобы сказать, что 'T entity' должен быть« Билл ». –
Я попытался переместить метод из абстрактного класса в дочерний класс без изменений в поведении. Я добавил ссылку на журналы, но там нет ничего особенно интересного, что я могу найти. – Sasha