2015-04-02 6 views
0

У меня проблема с моим одним контроллером. Когда я отправляю (POST) данные с углового на Java-контроллер, используя (тип содержимого jason), я вижу ошибку, которая видна в теме. Поэтому я не могу уловить ответ с сервера. Контроллер поймает этот запрос так, чтобы в этом случае книга была правильно добавлена ​​в базу данных. Ошибка Firebug 404, но когда я зарегистрировался в Postman, я увидел 415 Неподдерживаемый тип носителя. Почему возникает такое исключение, если контроллер работает правильно.415 Неподдерживаемый тип носителя (JAVA + Angular + RestFULL JSON)

Это пример JSON:

{"title":"fgthbfgd","authors":[{"author_id":24,"author":"danielle steel"}],"genres":[{"genre_id":1,"genre":"Dramat"}],"description":"rthg","path_image":"19296.png"} 

и это контроллер:

@SuppressWarnings("finally") 
    @RequestMapping(value = "/rest/book", consumes = "application/json", produces = "application/json", method = RequestMethod.POST) 
    public MessageDTO addNewBook(@RequestBody BookDTO newBook) { 
     MessageDTO message = new MessageDTO(); 
     try { 
      bookService.addNewBook(newBook); 
      message.setCheck(true); 
     } catch (BookTitleException e) { 
      message.setCheck(false); 
      message.setDescription("Ksiązka o tym tytule juz istnieje."); 
      e.printStackTrace(); 
     } finally { 
      return message; 
     } 
    } 

Это BookDTO

public class BookDTO implements Serializable{ 

    private static final long serialVersionUID = -5057364006691079475L; 

    private Integer id; 
    private AuthorEntity [] authors;  
    private String description; 
    private GenreEntity [] genres; 
    private String title; 
    private String path_image; 
    private double rate; 
    private Integer progressBar; 
    private boolean flagRate; 
    private double userRate; 

    /* geters and seters */ 
} 

Это Угловое код:

var bookResource = $resource($rootScope.restUrl + 'book'); 

var book = { 
      title : $scope.title, 
      authors : $scope.author, 
      genres : $scope.genre, 
      description : $scope.description, 
      path_image: null 
     } 

service.addNewBook = function(book){ 
     var deferred = $q.defer(); 
     bookResource.save(book) 
      .$promise.then(function(data){ 
       deferred.resolve(data); 
      }, function(){ 
       deferred.reject("Error during adding new book."); 
      }); 
     return deferred.promise; 
    } 

Это только проблема в моем применении. В другом случае все работает правильно.

+0

может у показать структуру класса BookDTO – Anita

+0

конечно. Я редактировал свой пост. – user2590727

+0

Можете ли вы добавить вызов angularjs, пожалуйста? – jmgross

ответ

1

У вас есть ошибка 415, потому что вы посылаете запрос без права content-type заголовка

var bookResource = $resource($rootScope.restUrl + 'book',{}, { 
    save:{ 
     method:"POST", 
     headers:{'Content-Type':'application/json; charset=UTF-8'} 
    } 
}); 

Я надеюсь, что это решит вашу проблему

+0

К сожалению, не удалось решить эту проблему. :( – user2590727

+0

Я сделал ошибку вместо 'post:' с 'save:' Я обновил свой пост – jmgross

+0

Это также не помогло .... :( – user2590727

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