2014-11-12 4 views
1

Я отправляю объект 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

+0

Поверните свои журналы весны в DEBUG и покажите нам, что регистрируется. –

+1

Я не верю, что Весна достаточно умна, чтобы сказать, что 'T entity' должен быть« Билл ». –

+0

Я попытался переместить метод из абстрактного класса в дочерний класс без изменений в поведении. Я добавил ссылку на журналы, но там нет ничего особенно интересного, что я могу найти. – Sasha

ответ

-2

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

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

Для этого:

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

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

+0

Как вы обращаетесь? Я захватил запрос с помощью Fiddler, и, согласно JSONLint, объект JSON хорошо сформирован? –

Смежные вопросы