Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-06-2009, 11:14   #1 (permalink)
Neuer User
 
Benutzerbild von alife
 
Registriert seit: Aug 2004
Ort: Wien
Beiträge: 41
RemoteObject Standardüberprüfung nach jedem Result

Hallo Community!

Mein Problem ist folgendes: Ich bekomme beim Arbeiten mittels RemoteObject von AMFPHP standardisierte Results. Wenn ein Aufruf aus irgendeinem Grund nicht erfolgreich gewesen sein sollte, geben mir alle Klassen und alle Funktionen ein Array in der Form ["success"=>false,"message"=>"Eine Fehlermeldung"] zurück.

Damit ich nun nicht nach allen meinen Funktionsaufrufen eine Abfrage machen muss, ob success false ist, will ich das RemoteObject überschreiben, und nach jedem Funktionsaufruf diese Standardüberprüfung durchführen. (public dynamic class ExtendedRemoteObject extends RemoteObject)

Hat jemand einen Lösungsansatz für mich?

Vielen lieben Dank,
alife
alife ist offline   Mit Zitat antworten
Alt 26-06-2009, 17:44   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Aber das wäre ja falsch. Dich interessiert ja das Object, dass du durch den RPC bekommst. Baue dir doch dafür eine Invaliderung und rufe dann entsprechend des Ergebnisses die Methode auf, die du brauchst.
Omega Psi ist offline   Mit Zitat antworten
Alt 26-06-2009, 19:45   #3 (permalink)
Nagelneuer User
 
Benutzerbild von hazy fantazy
 
Registriert seit: Dec 2005
Beiträge: 924
Komisch. Ist den RPC mit amfphp anders als sonst? Das Remoteobjekt hat doch beides, den result und den fault handler.
__________________
The fact that you've got "Replica" written on the side of your gun and the fact that I've got "Desert Eagle written on the side of mine ... :D
hazy fantazy ist offline   Mit Zitat antworten
Alt 26-06-2009, 19:49   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Er bekommt keinen Fault, weil kein Fehler aufgetreten ist. Das Result trägt die Informationen.
Omega Psi ist offline   Mit Zitat antworten
Alt 26-06-2009, 20:03   #5 (permalink)
Nagelneuer User
 
Benutzerbild von hazy fantazy
 
Registriert seit: Dec 2005
Beiträge: 924
Na dann kann er doch einen Fehler schmeissen, wenn es ein Applikationsfehler ist.
__________________
The fact that you've got "Replica" written on the side of your gun and the fact that I've got "Desert Eagle written on the side of mine ... :D
hazy fantazy ist offline   Mit Zitat antworten
Alt 26-06-2009, 20:05   #6 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Aber vielleicht ist es keiner... also ich würde bei einem Error auch einen FaultEvent erwarten. In anderen Fällen mag ein Fault nicht adäquat erscheinen. Aber da stecken wir nicht drin...
Omega Psi ist offline   Mit Zitat antworten
Alt 29-06-2009, 09:07   #7 (permalink)
Neuer User
 
Benutzerbild von alife
 
Registriert seit: Aug 2004
Ort: Wien
Beiträge: 41
Genau, ich bekomme ein ResultEvent zurück. In diesem kann mir aber der Server auch einen Error zurückgeben. Ich bekomme dann ein Object/Array mit folgenden Inhalten zurück:

PHP-Code:
message "you have to login first."
success "false"
errcode "nologin" 
Natürlich kann auch ein anderer code im ergebnis stehen. Dann soll das Event einfach ausgelöst werden, ohne etwas zu tun.

Steht aber im errcode "nologin" (passiert z.b. wenn die session abgelaufen ist), werden automatisch alle Aktionen ausgeführt, damit der Benutzer auch sieht, dass er ausgeloggt ist.

Ihr meint also, ich soll das mit dem Überschreiben vergessen, und lieber bei jedem Result eine globale Methode aufrufen?

Danke und LG,
alife

Geändert von alife (29-06-2009 um 09:08 Uhr) Grund: Ergänzung
alife ist offline   Mit Zitat antworten
Alt 29-06-2009, 09:18   #8 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Ja, auf jeden Fall.
Omega Psi ist offline   Mit Zitat antworten
Alt 29-06-2009, 10:48   #9 (permalink)
Neuer User
 
Benutzerbild von alife
 
Registriert seit: Aug 2004
Ort: Wien
Beiträge: 41
OK, vielen Dank!
alife ist offline   Mit Zitat antworten
Alt 29-06-2009, 15:59   #10 (permalink)
Neuer User
 
Benutzerbild von alife
 
Registriert seit: Aug 2004
Ort: Wien
Beiträge: 41
Hey,

Ich habe noch einen kleinen Einwurf

Nach einer Idee habe ich folgenden Versuch programmiert, der sogar funktioniert. Was spricht dagegen, es etwa so zu machen?:

PHP-Code:
package com.create.flexcast.net
{
    
import mx.controls.Alert;
    
import mx.rpc.events.FaultEvent;
    
import mx.rpc.events.ResultEvent;
    
import mx.rpc.remoting.RemoteObject;

    public 
dynamic class ExtendedRemoteObject extends RemoteObject
    
{
        public function 
ExtendedRemoteObject(destination:String=null)
        {
            
super(destination);
            
this.addEventListener(ResultEvent.RESULT,globalResultHandler);
            
this.addEventListener(FaultEvent.FAULT,globalFaultHandler);
        }
        
        private function 
globalResultHandler(e:ResultEvent):void
        
{
            
e.preventDefault();
            
trace("*** ResultEvent of ExtendedRemoteObject ***");
            
trace(e.message);
            
            if(
e.result.hasOwnProperty("success") && e.result.success == false)
            {
                if(
e.result.hasOwnProperty("message") && e.result.message!= "")
                {
                    
Alert.show(e.result.message);
                }
                else
                {
                    
Alert.show("Es ist ein Fehler aufgetreten");
                }
            }
            else
            {
                
this.removeEventListener(ResultEvent.RESULT,globalResultHandler);
                
this.dispatchEvent(e);
                
this.addEventListener(ResultEvent.RESULT,globalResultHandler);
            }
        }
        
        private function 
globalFaultHandler(e:FaultEvent):void
        
{
            
trace("*** FaultEvent of ExtendedRemoteObject ***");
            
trace(e.message);
            
Alert.show("Es ist ein Fehler in der Serververbindung aufgetreten.""Verbindungsfehler");
        }
        
    }

Die spezifischen Aktionen zu den Events gehe ich sowieso noch einmal in den Klassen, in denen ich das RemoteObject anwende, durch.

LG, alife
alife ist offline   Mit Zitat antworten
Alt 29-06-2009, 19:04   #11 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Und was ist daran global? Gar nichts würde ich mal vermuten, denn du arbeitest mit Instanzen und in den Instanzen gekapselte Listenern. Für solche Fälle würde man nicht wirklich erben, denn du hast dadurch nichts gewonnen. Zumal du dann auch noch an den Klassentypen gebunden bist um überhaupt vernünftig debuggen zu können.

Ich würde sagen: zurück ans Reissbrett.
Omega Psi ist offline   Mit Zitat antworten
Alt 30-06-2009, 08:27   #12 (permalink)
Neuer User
 
Benutzerbild von alife
 
Registriert seit: Aug 2004
Ort: Wien
Beiträge: 41
Okok...

Andere Frage: Gibt es die Möglichkeit, dass der Server mir einen Fault zurückliefert?
alife ist offline   Mit Zitat antworten
Alt 30-06-2009, 08:50   #13 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Ort: Oldenburg
Beiträge: 2.408
Wolltest Du jetzt generell wissen, ob es schiefgehen kann? Ja, das kann es.
Nico B. ist offline   Mit Zitat antworten
Alt 30-06-2009, 11:28   #14 (permalink)
Neuer User
 
Benutzerbild von alife
 
Registriert seit: Aug 2004
Ort: Wien
Beiträge: 41
Eigentlich wollte ich wissen, ob man über AMFPHP absichtlich einen Fault auslösen/returnen kann.
alife ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
eventlistener, extend, remoteobject, überschreiben

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 13:20 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele