首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将json从角度控制器发送到弹簧控制器时出错

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

Stack Overflow用户
提问于 2018-06-02 23:52:00
回答 1查看 235关注 0票数 0

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

代码语言:javascript
复制
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中的服务函数

代码语言:javascript
复制
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;
}

这是我在spring控制器中的方法。

代码语言:javascript
复制
@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);
    }

我在angular服务中也有一个$http.delete方法

代码语言:javascript
复制
$http.delete(REST_SERVICE_URI+"delete/"+id)

还有一个错误是Syntax error on token ".", , expected

更新

Product.java

代码语言:javascript
复制
@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。spring控制台无错误

MainController.java

代码语言:javascript
复制
@Controller
@RequestMapping("/")
public class MainController {
@Autowired
UserDao userDao;


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

}

现在,angluar中的错误是:

代码语言:javascript
复制
angular.js:10661 POST http://localhost:8080/shoping/product/add 404 (Not Found)

更新3:

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

这是我的github项目资源库:https://github.com/Bk073/Shopping

EN

回答 1

Stack Overflow用户

发布于 2018-06-03 00:54:09

从这么多的信息(没有日志)看来,JDBC肯定出了什么问题。如果所有内容都设置为默认值,那么我认为id一定是auto increment,并且向它发送null而不捕获任何异常可能就是原因所在……尝试从您的产品对象(json)中省略id,看看会发生什么……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50658617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档