質問

ログインが付随するときに実行されるこのアクションスクリプトコードのブロックがあります。私はユーザーのための一連の役割をリロードしようとしています。 hasrole()メソッドに結果ハンドラーを追加しました

[Observer("loginAttempted")]
public function loginAttempted():void {
    identity.isLoggedIn(isLoggedInResult);

    trace(identity.loggedIn+" "+identity.username);
    var perms:Array = Permission.constants;
    var i:int
    trace("Load permissions");
    for(i=0;i<perms.length;i++)
    {
        var p:Permission = perms[i];
        var res = identity.hasRole(p.name,permissionResult);
        if(res == true)
        {
            p.allowed = res;
        }
        trace(i+" "+p.name +" "+p.allowed+" "+res);
    }
}

private function permissionResult(event:TideResultEvent):void {
    trace("permissionResult "+event.result);
}

しかし、私はこのエラーを取得し続けます。に基づく Granitedsドキュメント 関数は単一の引数のみを実行する必要があります。

[Fault] exception, information=ArgumentError: Error #1063:
Argument count mismatch on Main/permissionResult(). Expected 1, got 2.
at TideRoleResponder/result()[C:\workspace\graniteds\as3\framework\org\granite\tide\ejb\Identity.as:201]
at org.granite.tide::Tide/result()[C:\workspace\graniteds\as3\framework\org\granite\tide\Tide.as:1831]
at org.granite.tide.rpc::ComponentResponder/result()[C:\workspace\graniteds\as3\framework\org\granite\tide\rpc\ComponentResponder.as:65]
at mx.rpc::AsyncToken/http://www.adobe.com/2006/flex/mx/internal::applyResult()[C:\autobuild\3.5.0\frameworks\projects\rpc\src\mx\rpc\AsyncToken.as:199]
at mx.rpc.events::ResultEvent/http://www.adobe.com/2006/flex/mx/internal::callTokenResponders()[C:\autobuild\3.5.0\frameworks\projects\rpc\src\mx\rpc\events\ResultEvent.as:172]
at mx.rpc::AbstractOperation/http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[C:\autobuild\3.5.0\frameworks\projects\rpc\src\mx\rpc\AbstractOperation.as:199]
at org.granite.tide.rpc::TideOperation/http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[C:\workspace\graniteds\as3\framework\org\granite\tide\rpc\TideOperation.as:73]
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::resultHandler()[C:\autobuild\3.5.0\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:263]
at mx.rpc::Responder/result()[C:\autobuild\3.5.0\frameworks\projects\rpc\src\mx\rpc\Responder.as:46]
at mx.rpc::AsyncRequest/acknowledge()[C:\autobuild\3.5.0\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:74]
at NetConnectionMessageResponder/resultHandler()[C:\autobuild\3.5.0\frameworks\projects\rpc\src\mx\messaging\channels\NetConnectionChannel.as:524]
at mx.messaging::MessageResponder/result()[C:\autobuild\3.5.0\frameworks\projects\rpc\src\mx\messaging\MessageResponder.as:199]
役に立ちましたか?

解決

アイデンティティ上のifanygranted関数を使用して同様のことを行い、結果ハンドラーには2つの引数があります。Tideresulteventと、役割を含む文字列です。許可機能の署名を次のように変更してみてください。

private function permissionResult(event:TideResultEvent, role:String):void
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top