我尝试使用spring boot和angularjs实现更新方法但是它不起作用,有人可以帮我吗
这是DAO:
package com.bank.pfe.metier;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.bank.pfe.dao.DatacenterRepository;
import com.bank.pfe.entities.Datacenter;
@Service
@Transactional
public class DatacenterMetierImpl implements DatacenterMetier{
@Autowired
DatacenterRepository datacenterRep;
@Override
public Datacenter saveDC(Datacenter dc) {
return datacenterRep.save(dc);
}
@Override
public Datacenter updateDC(Datacenter dc) {
return datacenterRep.saveAndFlush(dc);
}
@Override
public void deleteDC(long id) {
datacenterRep.delete(id);
}
@Override
public List<Datacenter> listDC() {
return datacenterRep.findAll();
}
@Override
public Datacenter findDC(long id) {
return datacenterRep.findOne(id);
}
@Override
public Datacenter findByName(String name) {
return datacenterRep.findByName(name);
}
@Override
public void deleteAllDCs() {
datacenterRep.deleteAll();
}
@Override
public boolean isDCExist(Datacenter dc) {
return findByName(dc.getName()) != null;
}
}
以下是服务类:
package com.bank.pfe.service;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.bank.pfe.entities.Datacenter;
import com.bank.pfe.metier.DatacenterMetier;
@RestController
public class DatacenterService {
public static final Logger logger = LoggerFactory.getLogger(DatacenterService.class);
@Autowired
private DatacenterMetier datacenterMetier;
// -------------------Create a Datacenter-------------------------------------------
@RequestMapping(value="/datacenter/",method=RequestMethod.POST)
public Datacenter saveDC(@RequestBody Datacenter dc) {
logger.info("Creating Datacenter : {}", dc);
return datacenterMetier.saveDC(dc);
}
// ------------------- Update a Datacenter ------------------------------------------------
@RequestMapping(value="/datacenter/{id}",method=RequestMethod.PUT)
public Datacenter updateDC(@PathVariable("id") long id, @RequestBody Datacenter dc) {
logger.info("Updating Datacenter with id {}", id);
Datacenter currentDC = datacenterMetier.findDC(id);
currentDC.setName(dc.getName());
currentDC.setNbRoom(dc.getNbRoom());
currentDC.setAdress(dc.getAdress());
currentDC.setType(dc.getType());
currentDC.setCity(dc.getCity());
currentDC.setCountry(dc.getCountry());
return datacenterMetier.updateDC(currentDC);
}
// -------------------Retrieve Single Datacenter------------------------------------------
@RequestMapping(value="/datacenter/{id}",method=RequestMethod.GET)
public Datacenter getDC(@PathVariable("id") long id) {
logger.info("Fetching Datacenter with id {}", id);
Datacenter datacenter = datacenterMetier.findDC(id);
return datacenter;
}
// -------------------Retrieve All Datacenters---------------------------------------------
@RequestMapping(value="/datacenter/",method=RequestMethod.GET)
public List<Datacenter> listDC() {
List<Datacenter> dcs = datacenterMetier.listDC();
return dcs;
}
// ------------------- Delete a Datacenter-----------------------------------------
@RequestMapping(value="/datacenter/{id}",method=RequestMethod.DELETE)
public void deleteDC(@PathVariable("id") long id) {
logger.info("Fetching & Deleting Datacenter with id {}", id);
Datacenter dc = datacenterMetier.findDC(id);
if (dc == null) {
logger.error("Unable to delete. Datacenter with id {} not found.", id);
}
datacenterMetier.deleteDC(id);
}
// ------------------- Delete All Datacenters-----------------------------
@RequestMapping(value = "/datacenter/", method = RequestMethod.DELETE)
public void deleteAllDCs() {
logger.info("Deleting All Datacenters");
datacenterMetier.deleteAllDCs();
}
}
以下是app.js:
var app = angular.module("myApp",["ngRoute","ui.router"]);
app.controller("DatacenterCntrl", function($scope,$http){
$scope.dc=this;
$scope.dcs=[];
$http.get("/datacenter/")
.success(function(data){
$scope.dcs=data;
});
$scope.saveDC=function(){
$http.post("/datacenter/",$scope.dc)
.success(function(data){
$scope.dc=data;
alert("successfully added");
$scope.dcs.push($scope.dc);
});
};
$scope.deleteDC=function(id){
var result=confirm("Are you sure you want to delete this Datacenter
?");
if(result===true){
$http.delete("/datacenter/"+id)
.success(function(){
$http.get("/datacenter/")
.success(function(data){
$scope.dcs=data;
});
alert("successfully deleted");
});
}
};
$scope.updateDC=function(){
$http.put("/datacenter/"+$scope.dc.id,$scope.dc)
.success(function(){
alert("successfully updated");
$scope.dcs.push($scope.dc);
});
};
});
app.config(function($routeProvider){
$routeProvider
.when("/updateDC", {
templateUrl : "/views/updateDC.html",
controller : "DatacenterCntrl"
})
});
这是index.html:
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/
css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1
/jquery.min.js"></script>
<script
src="https://maxcdn.bootstrapcdn.com/bootstrap/
3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div ng-controller="DatacenterCntrl">
<form>
<div class="form-group">
<label for="name">Name:</label>
<input class="form-control" name="name" id="name"
type="text" ng-model="dc.name"/>
</div>
<div class="form-group">
<label for="nbRoom">Number of rooms:</label>
<input class="form-control" name="nbRoom" id="nbRoom"
type="number" ng-model="dc.nbRoom"/>
</div>
<div class="form-group">
<label for="type">Type:</label>
<input class="form-control" name="type" id="type"
type="text" ng-model="dc.type"/>
</div>
<div class="form-group">
<label for="adress">Adress:</label>
<input class="form-control" name="adress" id="adress"
type="text" ng-model="dc.adress"/>
</div>
<div class="form-group">
<label for="city">City:</label>
<input class="form-control" name="city" id="city" type="text"
ng-model="dc.city"/>
</div>
<div class="form-group">
<label for="country">Country:</label>
<input class="form-control" name="country" id="country"
type="text" ng-model="dc.country"/>
</div>
<div class="form-group">
<button type="submit" class="btn btn-default" ng-
click=saveDC(dc)>Submit</button>
</div>
</form>
<label>Search: <input ng-model="searchText"></label>
<table id="fresh-table" class="table">
<thead>
<th>ID </th>
<th>Nom</th>
<th>Nombre des salles</th>
<th>Adresse</th>
<th>Type</th>
<th>Ville</th>
<th>Pays</th>
<th></th>
<th></th>
</thead>
<tr ng-repeat="dc in dcs | filter:searchText" >
<td>{{dc.id}}</td>
<td>{{dc.name}}</td>
<td>{{dc.nbRoom}}</td>
<td>{{dc.adress}}</td>
<td>{{dc.type}}</td>
<td>{{dc.city}}</td>
<td>{{dc.country}}</td>
<td><a class="btn btn-primary" href="#updateDC">Update</a>
</td>
<td><button type="submit" class="btn btn-danger" ng-
click=deleteDC(dc.id)>Delete</button></td>
</tr>
</table>
<div ng-view></div>
</body>
</html>
以下是updateDC.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form>
<div class="form-group">
<label for="id">ID:</label>
<input class="form-control" name="id" id="id" type="text" ng-model="datacenter.id" />
</div>
<div class="form-group">
<label for="name">Name:</label>
<input class="form-control" name="name" id="name"
type="text" ng-model="datacenter.name" />
</div>
<div class="form-group">
<label for="nbRoom">Number of rooms:</label>
<input class="form-control" name="nbRoom" id="nbRoom"
type="number" ng-model="datacenter.nbRoom"/>
</div>
<div class="form-group">
<label for="type">Type:</label>
<input class="form-control" name="type" id="type" type="text"
ng-model="datacenter.type"/>
</div>
<div class="form-group">
<label for="adress">Adress:</label>
<input class="form-control" name="adress" id="adress" type="text"
ng-model="datacenter.adress"/>
</div>
<div class="form-group">
<label for="city">City:</label>
<input class="form-control" name="city" id="city" type="text"
ng-model="datacenter.city"/>
</div>
<div class="form-group">
<label for="country">Country:</label>
<input class="form-control" name="country" id="country"
type="text" ng-model="datacenter.country"/>
</div>
<div class="form-group">
<button type="submit" class="btn btn-default" ng-
click=updateDC(datacenter.id,datacenter)>Submit</button>
</div>
</form>
</body>
</html>
答案 0 :(得分:0)
可能会从此代码周围的某处调试错误:
$scope.updateDC=function(){
$http.put("/datacenter/"+$scope.dc.id,$scope.dc)
发送到服务器的请求包含未定义的id字段。尝试放一个console.log&amp;找出为什么id的值没有通过。
$scope.updateDC=function(){
console.log($scope.updateDC=function(){
$http.put("/datacenter/"+$scope.dc.id,$scope.dc));