У меня проблема с доступом к веб-сервису - PullRequest
0 голосов
/ 31 марта 2010

Я создал одно приложение на flex, которое обращается к веб-сервису Java с помощью Actionscript3.0. В котором я получаю сообщение об ошибке при доступе к методу веб-сервиса. Этот метод возвращает список дочерних объектов. Я беру этот список объектов в объект класса ArrayCollection. Мой код: -

    [Bindable]
     private var photoFeed:Array; 
    public var user:SBTSWebService;

    public function initApp():void
    {
       user = new SBTSWebService();

       user.addSBTSWebServiceFaultEventListener(handleFaults);

    }

    public function displayString():void
    {
           // Instantiate a new Entry object.
           var newEntry:GetSBTSMobileAuthentication = new GetSBTSMobileAuthentication();
            newEntry.mobile=mobileno.text;
            newEntry.password=password.text;
            user.addgetSBTSMobileAuthenticationEventListener(authenticationResult);

            user.getSBTSMobileAuthentication(newEntry);

    }

    public function handleFaults(event:FaultEvent):void
    {
        Alert.show("A fault occured contacting the server. Fault message is: " + event.fault.faultString);
    }

    public function authenticationResult(event:GetSBTSMobileAuthenticationResultEvent):void
    {
        if(event.result != null) 
        {

           if(event.result._return > 0)
           {
             var UserId:int = event.result._return;
              getChildList(UserId);       
              viewstack2.selectedIndex=1;
           }
           else
           {
             Alert.show("Authentication fail");
           }


        }

    }
  public function getChildList(userId:int):void
  {
     var childEntry:GetSBTSMobileChildrenInfo = new GetSBTSMobileChildrenInfo();
     childEntry.UserId = userId;
     user.addgetSBTSMobileChildrenInfoEventListener(sbtsChildrenInfoResult);
     user.getSBTSMobileChildrenInfo(childEntry);
  }
   public function sbtsChildrenInfoResult(event:GetSBTSMobileChildrenInfoResultEvent):void
    {
        if(event.result != null && event.result._return!=null) 
        {

        photoFeed  = event.result._return as Array;
        childid.dataProvider = photoFeed; 

        }

    }


]]>

<mx:Move id="hideEffect"
    xTo="-500" />
<mx:Move id="showEffect"
    xFrom="500" />

<mx:Panel width="500" height="300"
    headerColors="[#000000,#FFFFFF]">

    <mx:TabNavigator id="viewstack2"
        selectedIndex="0"
        historyManagementEnabled="false"
        width="100%" height="100%">

        <mx:Form label="Login Form"
            hideEffect="{hideEffect}" showEffect="{showEffect}">
              <mx:FormItem>
                 <mx:TextInput id="mobileno"/>
              </mx:FormItem>
              <mx:FormItem>
                 <mx:TextInput id="password"/>
              </mx:FormItem>
              <mx:FormItem>
                 <mx:Button label="Login" click="displayString()"/>
              </mx:FormItem>
         </mx:Form>

        <mx:Form label="Child List"
            hideEffect="{hideEffect}" showEffect="{showEffect}">
           <mx:DataGrid id="childid" visible="false"/>



            <mx:Button label="click here to see location"
                click="viewstack2.selectedIndex=2" />
        </mx:Form>

        <mx:Form label="Bus Location"
            hideEffect="{hideEffect}" showEffect="{showEffect}">
            <mx:Text text="" />
        </mx:Form>
       <mx:Form label="Trace Path"
            hideEffect="{hideEffect}" showEffect="{showEffect}">
            <mx:Text text="" />
        </mx:Form>
    </mx:TabNavigator>

</mx:Panel>

Я получаю сообщение об ошибке типа «Ошибка типа: ошибка # 1009: невозможно получить доступ к свойству или методу пустой ссылки на объект». Когда строка «photoFeed = event.result._return as Array;» компилируется. Пожалуйста, помогите мне удалить эту ошибку.

1 Ответ

0 голосов
/ 31 марта 2010

Кажется странным, что вы получаете ошибку в этой строке, поскольку вы уже сделали проверку, что и result, и result._return не равны NULL. Скорее всего, линия ...

childid.dataProvider = photoFeed; 

... вызывает ошибку, поскольку childid равно нулю? Вероятно, это связано с тем, что навигатор вкладок еще не создал вторую вкладку. Попробуйте добавить creationPolicy = "all" в навигатор вкладок, чтобы убедиться, что он был создан.

<mx:TabNavigator id="viewstack2"
        selectedIndex="0"
        creationPolicy="all"
        historyManagementEnabled="false"
        width="100%" height="100%">

По умолчанию установлено «auto», что означает, что при нажатии на них будут создаваться панели, отличные от стандартных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...