2016-04-12 4 views
0

Ich versuche, ein wenig einfach AngularJS mit dieser Jboss quickstart zu lernen: https://github.com/jboss-developer/jboss-wfk-quickstarts/tree/c488a5b/kitchensink-angularjs-bootstrapNeu bei Angular - Wie man einen ausgewählten Wert aus einer Tabelle entfernen

Hier ist die service.js Datei:

angular.module('membersService', ['ngResource']). 
    factory('Members', function($resource){ 
    return $resource('rest/members/:memberId', {}); 
}); 

Ziemlich einfach, oder? Und hier ist die relevanten Teile der controllers.js Datei:

$scope.register = function() { 
    Members.save($scope.newMember, function(data) {}, function(result) {}); 
}; 

$scope.setSelected = function (member) { 
    $scope.selectedMember = member; 
    $scope.successMessages = [ $scope.selectedMember.name ]; 
} 

$scope.unregister = function() { 
    $scope.successMessages = [ 'Selected: ' + $scope.selectedMember.name ]; 
    Members.remove($scope.selectedMember, function(data) {}, function(result) {}); 
}; 

Die „successMessages“ wird bestätigt, dass der Wert I Auswahl bin erfasst zu werden. Hier sind die relavent POST/DELETE Methoden aus der MemberResourceRESTService.java Klasse:

@POST 
    @Consumes(MediaType.APPLICATION_JSON) 
    @Produces(MediaType.APPLICATION_JSON) 
    public Response createMember(Member member) { 

     Response.ResponseBuilder builder = null; 

     try { 
      registration.register(member); 
      builder = Response.ok(); 
     } catch (Exception e) {} 

     return builder.build(); 
    } 

    @DELETE 
    @Produces(MediaType.APPLICATION_JSON) 
    public Response removeMember(Member member) { 

     Response.ResponseBuilder builder = null; 

     try { 
      registration.unregister(member); 
      builder = Response.ok(); 
     } catch (Exception e) {} 

     return builder.build(); 
    } 

Grundsätzlich ist die POST/Create Mitglied Stück funktioniert, aber die DELETE/entfernen Mitgliedruhe Methode wird immer ein NULL-Mitglied übergeben I‘. Ich bin mir nicht sicher, warum es nicht vom Client herüberkommt und welche zusätzliche Datei/Konfiguration ich überprüfen muss. Entschuldigung, wenn das eine neue Frage ist.

+0

Verwendung des Browsers Debugger und prüfen, ob die Delete-URL-aPI-Aufruf korrekt ist. – Hoyen

+0

Das Mitglied erreicht nicht den URL-API-Aufruf zum Löschen. Ich bin mir nicht sicher, warum es nicht in die DELETE-URL geschafft wird, aber es scheint, dass es die POST-URL oben erreicht. – daniel9x

+1

Hat $ scope.selectedMember eine 'ID'? Weil alles, was Sie wirklich brauchen, um das Mitglied zu entfernen, die ID aus dem Objekt ist. Überprüfen Sie im Grunde, ob es existiert: $ scope.selectedMember.id oder in Ihrem Fall könnte es $ scope.selectedMember.memberId – Hoyen

Antwort

0

Mit Hilfe von Hoyen Kommentare, ich in der Lage war, zwei Modifikation durchzuführen, die das Problem behoben:

1) In der controllers.js Datei hatte ich die $ scope.unregister Funktion zu ändern wie folgt aussehen :

$scope.unregister = function() { 
     Members.remove({ memberId : $scope.selectedMemberId }); 
    } 

2) hatte ich meine RestService ändern Id PathParam enthalten:

@Path("/{memberId}") 
@DELETE 
public Response removeMember(@PathParam("memberId") long memberId) { 

Response.ResponseBuilder builder = null; 
try { 
       registration.unregister(memberId); 
       builder = Response.ok(); 
      } catch (Exception e) {} 

      return builder.build(); 
} 
Verwandte Themen