Érv nem telt el elölről hátrafelé-end

szavazat
0

Már az említett, vagyok teljesen newbee a AngularJS. Szeretném felvenni nyilvántartás opció a kérelmet. Van néhány példa, és szeretnék hozzáadni regiszter lehetőséget. Tettem valamit, mint ez:

var services = angular.module('exampleApp.services', ['ngResource']);


services.factory('UserService', function ($resource) {

return $resource('rest/user/:action', {},
        {
            authenticate: {
                method: 'POST',
                params: {'action': 'authenticate'},
                headers: {'Content-Type': 'application/x-www-form-urlencoded'}
            }
        }
);
});


function LoginController($scope, $rootScope, $location, $cookieStore, UserService) {

$scope.rememberMe = false;

$scope.login = function () {

    UserService.authenticate($.param({username: $scope.username, password: $scope.password}), function (authenticationResult) {
        var authToken = authenticationResult.token;
        $rootScope.authToken = authToken;
        if ($scope.rememberMe) {
            $cookieStore.put('authToken', authToken);
        }
        UserService.get(function (user) {
            $rootScope.user = user;
            $location.path(/);
        });
    });
};

$scope.register = function () {
    $scope.user = new UserService();
    console.log($scope.user);
    $scope.user.$save(function () {
        $location.path('/');
    });

};

};

angular.module('exampleApp', ['ngRoute', 'ngCookies', 'exampleApp.services'])
    .config(
            ['$routeProvider', '$locationProvider', '$httpProvider', function ($routeProvider, $locationProvider, $httpProvider) {

                    $routeProvider.when('/create', {
                        templateUrl: 'partials/create.html',
                        controller: CreateController
                    });

                    $routeProvider.when('/login', {
                        templateUrl: 'partials/login.html',
                        controller: LoginController
                    });
        //more stuff here

});

@Component
@Path(/user)
public class UserResource {

    //some field here

    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public User register(User user) {
          return this.userDao.save(user);
    }

A helyzet az, hogy én elérte kezelő java registereljárás, de a felhasználói paraméter null.

Én is próbáltam használni:

    @POST
@Produces(MediaType.APPLICATION_JSON)
public User register( @QueryParam(password) String password, @QueryParam(username) String username) {

    return this.userDao.save(new User(username, password));
}

és

 $scope.register = function () {
    $scope.user = new UserService();
    console.log($scope.user);

    $http({
        url: 'user',
        method: 'POST',
        params: {
            username: $scope.username,
            password: $scope.password
        }
    }).success(function (data) {
        $scope.persons = data;
    });

};

De kaptam

Failed to load resource: the server responded with a status of 404 (Not Found)

A böngésző.

A kérdést 10/02/2016 20:11
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
0

Van probléma halad JSON származó Angular.JS helyesen.

Ne próbáld sorosításához JSON magát $.params, át a tárgy van, és hagyja, szögletes fogantyú, ahelyett:

UserService.authenticate({username: $scope.username, password: $scope.password}, function (authenticationResult) {

Meg kell helyesen jelezze, hogy el fogja küldeni a JSON, nem 'application/x-www-form-urlencoded':

return $resource('rest/user/:action', {},
    {
        authenticate: {
            method: 'POST',
            responseType: 'json',
            params: {'action': 'authenticate'},
            headers: {
                'Content-Type': 'application/json; charset=UTF-8'
            }
        }
    }

A többi az eredeti kódot jól néz ki, és nincs szükség @QueryParama Java oldalán, akkor fog küldeni, és visszatér a JSON, @QueryParamaz az eset, amikor az Ön által küldött params belsejében URL is.

Egy dolog mégis. Ön mivel authenticatefellépés Angular.JS oldalon, de a Java oldalán, van registerakció. Az akció neve nyilvánvalóan egyezik.

Válaszolt 10/02/2016 20:42
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more