我正在尝试在spring中将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.log('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);
}
我在angular服务中也有一个$http.delete方法
$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。spring控制台无错误
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:
当我发出get请求而不是post时,它不会给出错误,而是在数据库中添加空值数据,而且它也不支持媒体类型json。现在我认为问题很可能出在URI和http请求中。
这是我的github项目资源库:https://github.com/Bk073/Shopping
发布于 2018-06-03 00:54:09
从这么多的信息(没有日志)看来,JDBC肯定出了什么问题。如果所有内容都设置为默认值,那么我认为id
一定是auto increment
,并且向它发送null
而不捕获任何异常可能就是原因所在……尝试从您的产品对象(json)中省略id
,看看会发生什么……
https://stackoverflow.com/questions/50658617
复制相似问题