2011-09-07 34 views
0

我有這個actionscript代碼塊,當登錄名被執行時執行。我試圖爲用戶重新加載一組角色。我已經將結果處理程序添加到hasRole()方法Graniteds - ejb.Tide - Identity.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 docs該函數應該只採用一個參數。

[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] 

回答

3

我們使用ifAnyGranted功能上的身份做同樣的事情,我們的結果處理有2個參數:TideResultEvent,以及包含角色的字符串。嘗試將permissionResult函數的簽名更改爲:

private function permissionResult(event:TideResultEvent, role:String):void