从角度到弹簧控制器发送json时出错

时间:2018-06-02 15:52:00

标签: angularjs json spring spring-mvc spring-security

我试图在spring中将angularjs服务的json数据发送到控制器。 但是得到错误:

b

这是我在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"}

这是我在spring controller中的方法

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

        );
    return deferred.promise;
}

此外,我在角度服务中有一个$ http.delete方法

@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(REST_SERVICE_URI+"delete/"+id)

更新

Product.java

Syntax error on token ".", , expected

更新:2

抱歉,当我尝试发送空的json时,发生了NUllPointerException。弹簧控制台没有错误

MainController.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

现在,愤怒的错误是:

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


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

}

更新3:

当我发出get请求而不是post时,它没有给出错误但是在数据库中添加空值数据并且它也不支持媒体类型json。现在我认为问题很可能出在URI和http请求中。

这是我对该项目的github回购:https://github.com/Bk073/Shopping

1 个答案:

答案 0 :(得分:0)

从这些信息(没有日志)看来,JDBC肯定存在问题。如果所有内容都设置为默认值,那么我认为id必须是auto increment并且发送null而不会发现任何异常可能是原因...尝试省略{来自您的产品对象(json)的{1}},看看会发生什么......