【发布时间】:2014-06-10 00:25:11
【问题描述】:
我有一个简单的 JAVA 和 angularjs 网络应用程序。用户可以将人员添加到应用程序并将其从 mongo 数据库中删除。
我的问题是,我不知道 angular 如何与 java 通信并调用 Java 函数。例如,如果我想在单击按钮后从我的数据库中删除一个人。
这里有一些代码
persons.html
<a for-authenticated ng-click="remove(s.id)" href=""> <i
class="pull-right glyphicon glyphicon-remove"></i>
</a>
app.js
var app = angular.module('conferenceApplication', [
'ngCookies',
'ngResource',
'ngSanitize',
'ngRoute',
'ui.bootstrap',
'angularFileUpload',
'ngQuickDate']);
app.config(function ($routeProvider) {
$routeProvider
.when('/home', {
templateUrl: '/partials/home.html',
controller: 'HomeCtrl'
})
.when('/speakers', {
templateUrl: '/partials/person-list.html',
controller: 'PersonListCtrl'
})
});
app.controller('PersonListCtrl', function ($scope,$http, $modal, $log, $route, PersonService) {
$scope.remove = function(id) {
var deletedPerson = id ? PersonService.remove(id, function(resp){
deletedPerson = resp;
}) : {};
};
}
PersonService.js
app.service('PersonService', function ($log, $upload, PersonResource) {
this.getById = function (id, callback) {
return PersonResource.get({personId: id}, callback);
};
this.remove = function(id, callback) {
return PersonResource.deleteObject({PersonId: id}, callback);
}
}
PersonResource.js
app.factory('PersonResource', function ($resource) {
return $resource('rest/person/:personId',
{
personId: '@personId'
},
{
'update': { method: 'PUT' }
})
});
我还有一个 java 类,我想从数据库中删除这个人
PersonResource.java
@Controller
@RequestMapping("/person")
public class PersonResource {
@Autowired
private PersonService personService;
@RequestMapping(method = RequestMethod.GET, value = "/{id}")
public ResponseEntity<Person> deleteObject(@RequestBody Person id) {
Person person = personService.findById(id);
personService.deleteObject(id);
return new ResponseEntity<Person>(person, HttpStatus.ACCEPTED);
}
}
PersonRepository
@Override
public void deleteObject(String id) {
getTemplate().remove(new Query(Criteria.where("id").is(id)), Person.class);
}
getTemplate() 返回 MongoTemplate。
谁能告诉我我做错了什么从数据库中删除我的条目?
【问题讨论】:
-
那么 RESTful Web 服务用于与 Java 后端对话。您应该研究一下(JAX-RS 是 Java API 的名称)并熟悉它。但是你忘了真正提到你的问题是什么。你得到一个错误?如果有,是什么?
-
使用该代码我有一个错误错误:SpeakerResource.deleteObject 不是函数。
-
所以是 Javascript 错误。不过,您没有发布 SpeakerResource javascript 代码。在这一点上,我必须假设浏览器没有说谎,并且该功能根本不存在。
-
sry 编辑了那个。我现在感觉很笨,但是我怎么可能实现那个函数来告诉 java 删除那个人呢?
-
我建议在这里查看 Angular $resource 的文档:docs.angularjs.org/api/ngResource/service/$resource。还有关于如何创建自定义方法的文档,以防您需要实现一个。
标签: java javascript angularjs mongodb