Javascript接收包含字符而不是字符串

时间:2017-11-09 10:53:16

标签: javascript java string char angular-resource

我的Java代码应该以String的形式返回用户登录,但是在Javascript端我收到一个奇怪的Resource对象,其编号属性每个都包含一个char。

这是我的Java代码:

    @PostMapping(path = "/account/reset_password/finish", produces = MediaType.TEXT_PLAIN_VALUE)
    @Timed
    public ResponseEntity<String> finishPasswordReset(@RequestBody KeyAndPasswordVM keyAndPassword) {
        if (!checkPasswordLength(keyAndPassword.getNewPassword())) {
            return new ResponseEntity<>("Incorrect password", HttpStatus.BAD_REQUEST);
        }
        return userService.completePasswordReset(keyAndPassword.getNewPassword(), keyAndPassword.getKey()).map(
                user -> new ResponseEntity<String>(user.getLogin(), HttpStatus.OK)).orElse(
                new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR));
    }

Javascript控制器代码:

Auth.resetPasswordFinish({key: $stateParams.key, newPassword: vm.resetAccount.password}).then(function (userLogin) {
                    vm.success = 'OK';
                    console.log("userLogin="+userLogin);
                }).catch(function () {
                    vm.success = null;
                    vm.error = 'ERROR';
                });

控制台打印:

userLogin=[object Object]

这不是很有趣。

检查收到的对象给出: Angular Resource object

可以看到String的每个char都是Resource对象的编号属性。

Javascript验证码:

function resetPasswordFinish (keyAndPassword, callback) {
    var cb = callback || angular.noop;

    return PasswordResetFinish.save(keyAndPassword, function (userLogin) {
        return cb(userLogin);
    }, function (err) {
        return cb(err);
    }).$promise;
}

这只是将参数传递给回调函数。

您知道如何接收普通字符串而不是此Resource对象吗?如果这是一个微不足道的问题,我道歉。

我知道这样做可以检索用户登录信息:

var i = 0;
var userLoginToString = "";
while (typeof userLogin[String(i)] !== 'undefined') {
    userLoginToString += String(userLogin[String(i)]);
    i += 1;
}

但是我认为这不是使用此Resource对象的预期方法。

0 个答案:

没有答案