不要将html <input />与js模型和java模型链接起来

时间:2016-06-05 11:17:03

标签: javascript java html angularjs

我有一个包含一些代码的登录页面。

<div ng-show="!loggedIn()">
        <form ng-submit="login()">
            Username:
            <input type="text" ng-model="userName"/>
            Password:
            <input type="password" ng-model="userPassword"/><span><input type="submit" value="Login"/>
        </form>
    </div>

使用js文件和userPassword中的userName模型登录链接 - 不是。

$scope.login = function() {
                $scope.error = null;
                mainService.login($scope.userName, $scope.userPassword).then(function(token) {
                    $scope.token = token;
                    $http.defaults.headers.common.Authorization = 'Bearer ' + token;
                    $scope.checkRoles();
                },
                function(error){
                    $scope.error = error;
                    $scope.userName = '';
                    $scope.userPassword = '';
                });
            };

...

 appModule.service('mainService', function($http) {
        return {
            login : function(username, userpassword) {
                return $http.post('/user/login', {name: username}, {password: userpassword}).then(function(response) {
                    return response.data.token;
                });
            },

我有一些内部类的控制器

@SuppressWarnings("unused")
    private static class UserLogin {
        public String name;
        public String password;
    }

和方法login()

 @RequestMapping(value = "login", method = RequestMethod.POST)
public LoginResponse login(@RequestBody final UserLogin login)
    throws ServletException {
    System.out.println(login.name + login.password);//

这里login.name =我在网页(Login)和login.password中写的内容总是= null。 我做错了什么?

2 个答案:

答案 0 :(得分:0)

它无效的原因是因为您的POST调用将密码作为$http.post中的配置参数传递。您的密码应该是数据参数对象的一部分: $http.post('/user/login', {name: username, password: userpassword})

答案 1 :(得分:-1)

登录功能必须改变如下:

login : function(username, userpassword) { return $http.post('/user/login', {name: username, password: userpassword}).then(function(response) { return response.data.token; });