Ошибка при отправке json с углового на пружинный контроллер

Я пытаюсь отправить данные json из службы angularjs на контроллер весной. Но получаю ошибку:

angular.js:10661 POST http://localhost:8080/shoping/product/add 500 (Internal Server Error)
product_service.js:35 Error while adding product
product_controller.js:30 {productId: null, productName: "sdfv", productPrice: 43, description: "sfdv", imageUrl: "csd"}

Это моя функция в angularJs

function addProduct(product){
    var deferred = $q.defer();
    $http.post(REST_SERVICE_URI+"add", product)
        .then(
           function(response){
               deferred.resolve(response.data);
           },
           function(errResponse){
               console.info('Error while adding product');
               deferred.reject(errResponse);
           }

        );
    return deferred.promise;
}

Это мой метод в контроллере Spring

@RestController
@RequestMapping("/product/")
public class ProductRestController {
@Autowired
ProductDao productDao; 
RequestMapping(value = "add", method= RequestMethod.POST, consumes = "application/json")
    public ResponseEntity<Void> createProduct(@RequestBody Product product) {
        System.out.println("Creating Product " + product.getProductName());

        if (productDao.isProductExit(product)) {
            System.out.println("A Product with name " + product.getProductName() + " already exist");
            return new ResponseEntity<Void>(HttpStatus.CONFLICT);
        }

       productDao.add(product);
       return new ResponseEntity<Void>(HttpStatus.CREATED);
    }

Также у меня есть метод $ http.delete в сервисе angular

$http.delete(REST_SERVICE_URI+"delete/"+id)

И еще есть ошибка Syntax error on token ".", , expected

ОБНОВИТЬ

Product.java

@Entity
@Table(name  = "product")
public class Product implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "product_id")
private int productId;

@Column(name = "product_name")
private String productName;

@Column(name = "product_price")
private Float productPrice;

@Column(name = "description")
private String description;

@Column(name = "image_url")
private String imageUrl;
//getter and setter

ОБНОВЛЕНИЕ: 2

Извините, когда я попытался отправить пустой json-файл, возникло исключение NUllPointerException. В пружинной консоли нет ошибки

MainController.java

@Controller
@RequestMapping("/")
public class MainController {
@Autowired
UserDao userDao;


@RequestMapping(value = { "/", "/welcome**" }, method = RequestMethod.GET)
public String defaultPage() {
    return "ProductManagement";

}

Теперь ошибка в angluar:

angular.js:10661 POST http://localhost:8080/shoping/product/add 404 (Not Found)

ОБНОВЛЕНИЕ 3:

Когда я делаю запрос на получение вместо публикации, он не выдает ошибку, но добавляет данные пустого значения в базу данных, а также не поддерживает тип носителя json. Теперь я думаю, что, скорее всего, проблема в URI и http-запросе.

Вот мой репозиторий проекта на github: https://github.com/Bk073/Shopping

Можете ли вы поделиться более длинной трассировкой стека исключений и полным классом контроллера (пропустите остальные методы, но отображение пути в классе поможет)

Rohit 02.06.2018 18:59

Избегайте использования явное обещание муравейник. Нет необходимости в новом $q.defer(), когда $http уже возвращает обещание

charlietfl 02.06.2018 20:46
Знаете ли вы, что директивы являются одной из самых мощных и универсальных функций Angular?
Знаете ли вы, что директивы являются одной из самых мощных и универсальных функций Angular?
Директивы позволяют расширять HTML новыми элементами и атрибутами и даже создавать собственные структурные директивы для манипулирования DOM. С...
Разница между Angular и React
Разница между Angular и React
React и AngularJS - это два самых популярных фреймворка для веб-разработки. Оба фреймворка имеют свои уникальные особенности и преимущества, которые...
0
2
218
1

Ответы 1

Из этого количества информации (без журналов) кажется, что с JDBC что-то не так. Если все было установлено по умолчанию, то я полагаю, что id должен быть auto increment, и отправка ему null без перехвата каких-либо исключений может быть причиной ... попробуйте опустить id из вашего объекта продукта (json) и посмотреть, что произойдет. ..

Я удалил идентификатор из angular и попытался снова, теперь он говорит: «Не удалось загрузить ресурс: сервер ответил статусом 500 (внутренняя ошибка сервера)» «localhost: 8080 / shoping / product / add: 1»

user8936150 02.06.2018 18:58

Правильно ли вы определили привилегии БД для доступа на запись? Или пытаетесь писать как root через spring, которая работает не как root? В конечном итоге было бы полезно, если бы вы могли добавить те строки MainController.java, которые возвращают исключение NullPointerException.

roxch 02.06.2018 19:30

Я обнаружил, что исключение NullPointerException было, когда я просто пытался добавить пустые данные. И я думаю, что проблема в том, что URI от angular не поддерживается в контроллере Spring.

user8936150 03.06.2018 09:39

Пожалуйста, найди мой ответ здесь. stackoverflow.com/questions/50672453/…

Supun Dharmarathne 05.06.2018 09:46

Другие вопросы по теме