Angularjs调用java函数
发布时间:2020-12-17 18:07:54 所属栏目:安全 来源:网络整理
导读:我在JAVA和 angularjs中有一个简单的Web应用程序.用户可以将人员添加到应用程序并从mongo数据库中删除. 我的问题是,我不确切知道如何与java通信并调用Java函数.例如,如果我想在按钮单击后从我的数据库中删除一个人. 这是一些代码 persons.html a for-authent
我在JAVA和
angularjs中有一个简单的Web应用程序.用户可以将人员添加到应用程序并从mongo数据库中删除.
我的问题是,我不确切知道如何与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. 任何人都可以告诉我,我的错误是从数据库中删除我的条目吗? 解决方法
因此,使用GET方法通常,当我们获取一些数据,如果我们希望将一些数据发送到服务器(例如,一个ID为将要删除的人),我们使用POST方法或DELETE方法,在我的例子,我将使用POST方法简化. Angular和java通过RESTFUL服务(JAX-RS)进行通信,你无法在角度js中调用java函数或反之亦然.我将展示获取数据和发送数据的简单示例(获取所有人,删除具有给定ID的人).
以下是您可以开始学习的示例: Java人员控制器 @Controller @RequestMapping(value = "/person") public class PersonController{ private final PersonService personService; @Autowired public PersonController(final PersonService personService) { this.personService= personService; } @RequestMapping(value = "/",method = { RequestMethod.GET }) @ResponseBody public List<Person> getPersons() { return personService.getPersons(); } @RequestMapping(value = "/delete/{personId}",method = { RequestMethod.POST}) @ResponseBody public HttpStatus deletePerson(@PathVariable final long personId) { return personService.deletePerson(personId); } } Java人员服务 public class PersonService{ private final PersonRepository personRepository; @Autowired public PersonService(final PersonRepository personRepository) { this.personRepository= personRepository; } public List<Person> getPersons() { return personRepository.findAll();; } public HttpStatus deletePerson(final long id) { if (id > 0) { personRepository.delete(id); return HttpStatus.OK; } else { return HttpStatus.INTERNAL_SERVER_ERROR; } } } Java Person Repository public interface PersonRepository{ public void delete(int personId); public List<Person> findAll(); } Angular app.js (function() { var app = angular.module('personApp',[]); app.controller('personCtrl',function($scope,$http){ $scope.getPersons = function(){ $http.get('person/').success(function(response){ $scope.allPersons = response.data; }).error(function(){ //handle error }) }; $scope.deletePerson = function(personId){ $http.delete('person/'+personId).success(function(response){ $scope.deleteResponseStatus = response.status; }).error(function(){ //handle error }) } }) })(); HTML <html ng-app="personApp"> <body ng-controller=""personCtr> <input type="submit" ng-click="getPersons()"/> <input type="submit" ng-click="deletePerson(somePersonIdFromTableOrSomething)" </body> </html> 希望它会有所帮助,没有经过测试,但一般来说就是对带有人员ID的控制器的flow..send请求,在数据库中找到并删除它 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |