400 Ошибка преобразования JSON в Spring MVC 4 Rest

Я отправляю объект JSON в службу Java Rest и получаю в ответ ошибку 400 Bad Request. Я отправляю запрос через службу Angular JS.

Конфигурация 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:

 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. Я прочитал столько похожих вопросов, сколько смог найти, и ни одно из решений не работает для меня.

РЕДАКТИРОВАТЬ: журналы вставлены сюда: http://chopapp.com/#hpc3axxc


person Sasha    schedule 12.11.2014    source источник
comment
Превратите свои журналы Spring в DEBUG и покажите нам, что регистрируется.   -  person Sotirios Delimanolis    schedule 12.11.2014
comment
Я не верю, что Spring достаточно умен, чтобы сказать, что T entity должно быть Bill.   -  person Sotirios Delimanolis    schedule 12.11.2014
comment
Я попытался переместить метод из абстрактного класса в дочерний класс без каких-либо изменений в поведении. Добавил ссылку на логи, но особо интересного там ничего не нашел.   -  person Sasha    schedule 12.11.2014
comment
Переведите свои журналы на уровень DEBUG. Показывать журналы только для одного цикла запроса, иначе мы будем читать журналы в течение нескольких дней.   -  person Sotirios Delimanolis    schedule 12.11.2014
comment
Это именно то, что я сделал. Логи по запросу вообще не пишутся.   -  person Sasha    schedule 12.11.2014
comment
Похоже, вы включили журналы в DEBUG для своих регистраторов gov.mt.dphhs.bts.config.MvcConfig, но не для Spring. В том, что вы опубликовали, нет журналов Spring DEBUG.   -  person Sotirios Delimanolis    schedule 12.11.2014


Ответы (1)


Измените эту строку:

данные: счет,

К этому:

данные: JSON.stringify(счет),

Чтобы отлавливать такие ошибки, я использую такие инструменты, как Burp HTTP Proxy для просмотра всех необработанных запросов.

person Vetsin    schedule 12.11.2014
comment
Как вы решаете проблему Я перехватил запрос с помощью Fiddler, и, согласно JSONLint, объект JSON сформирован правильно? - person Sotirios Delimanolis; 13.11.2014