Gente, estou desenvolvendo um sistema baseado em uma apostila de java com flex, e sou iniciante com flex, por isso preciso da ajuda de vcs!
Nesse sistema eu possuo 2 DataGrids, porem quando eu digito o endereço definido no projeto, no caso “http://localhost:8080/Contatos-Java/debug/Main2.html”, ao inves de rodar o programa normalmente, ele me retorna o seguinte erro: “faultCode:Server.Processing faultString:‘No destination with id ‘contato’ is registered with any service.’ faultDetail:‘null’”
O que pode vir a ser isso?
Se puderem ajudar, muito obrigado!
OBS: Possuo a classe Main2.mxml e depois a Contato.mxml
Aí estão os codigos:
Main2.mxml
[code]<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx=“http://ns.adobe.com/mxml/2009”
xmlns:s=“library://ns.adobe.com/flex/spark”
xmlns:mx=“library://ns.adobe.com/flex/mx”
minWidth=“955” minHeight=“600”>
<fx:Script>
<![CDATA[
import agenda.*;
import flash.net.registerClassAlias;
import mx.managers.PopUpManager;
]]>
</fx:Script>
<s:creationComplete>
<![CDATA[
registerClassAlias("agenda.ContatoVO",agenda.ContatoVO);
registerClassAlias("agenda.EnderecoVO",agenda.EnderecoVO);
registerClassAlias("agenda.EstadoVO",agenda.EstadoVO);
contato.getAll();
this.systemManager.addEventListener("RefreshContatos",RefreshContatos);
]]>
</s:creationComplete>
<fx:Declarations>
<mx:RemoteObject id="contato" destination="contato" fault="OnFault(event)" showBusyCursor="true" >
<mx:method name="getAll" result="Contato_OnGetAll(event)"/>
<mx:method name="del" result="Contato_OnDelete(event)"/>
</mx:RemoteObject>
<mx:RemoteObject id="endereco" destination="endereco" fault="OnFault(event)" >
<mx:method name="getByContato" result="Endereco_OnGetByContato(event)"/>
</mx:RemoteObject>
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
protected function OnFault(e:FaultEvent):void {
Alert.show(e.fault.message.toString());
}
protected function Contato_OnGetAll(e:ResultEvent):void {
dgContatos.dataProvider = e.result;
}
protected function Contato_OnDelete(e:ResultEvent):void {
contato.getAll();
}
protected function Endereco_OnGetByContato(e:ResultEvent):void {
dgEnderecos.dataProvider = e.result;
}
protected function RefreshContatos(e:Event):void {
contato.getAll();
}
protected function GetNumComp(data:Object, col:DataGridColumn):String {
return (data as EnderecoVO).Numero + "/" + (data as EnderecoVO).Complemento;
}
]]>
</fx:Script>
<mx:DataGrid id="dgContatos" y="34" left="10" right="10" height="230">
<mx:columns>
<mx:DataGridColumn headerText="Nome" dataField="Nome"/>
<mx:DataGridColumn headerText="Email" dataField="Email"/>
<mx:DataGridColumn headerText="Telefone" dataField="Telefone"/>
</mx:columns>
<mx:change>
<![CDATA[
endereco.getByContato((dgContatos.selectedItem as ContatoVO).id);
]]>
</mx:change>
</mx:DataGrid>
<s:Button x="12" y="5" label="Novo">
<s:click>
<![CDATA[
var telaContao: Contato = new Contato();
PopUpManager.addPopUp(telaContao,this,true);
PopUpManager.centerPopUp(telaContao);
]]>
</s:click>
</s:Button>
<s:Button x="90" y="5" label="Editar" enabled="{dgContatos.selectedItem!=null}" >
<s:click>
<![CDATA[
var telaContao: Contato = new Contato();
telaContao.setContato((dgContatos.selectedItem as ContatoVO));
PopUpManager.addPopUp(telaContao,this,true);
PopUpManager.centerPopUp(telaContao);
]]>
</s:click>
</s:Button>
<s:Button x="168" y="5" label="Excluir" enabled="{dgContatos.selectedItem!=null}" >
<s:click>
<![CDATA[
contato.del((dgContatos.selectedItem as ContatoVO).id);
]]>
</s:click>
</s:Button>
<s:Label x="10" y="272" text="Endereços:"/>
<mx:DataGrid id="dgEnderecos" y="287" right="11" left="9" height="247">
<mx:columns>
<mx:DataGridColumn headerText="Logradouro" dataField="Logradouro" width="350"/>
<mx:DataGridColumn headerText="Numero/Comp" dataField="" labelFunction="GetNumComp"/>
<mx:DataGridColumn headerText="CEP" dataField="Cep"/>
</mx:columns>
</mx:DataGrid>
</s:Application>[/code]
Contato.mxml
[code]<?xml version="1.0" encoding="utf-8"?>
<s:TitleWindow xmlns:fx=“http://ns.adobe.com/mxml/2009”
xmlns:s=“library://ns.adobe.com/flex/spark”
xmlns:mx=“library://ns.adobe.com/flex/mx”
width=“550” height=“500” title=“Contato”
creationComplete=“OnCreationComplete(event)” >
<s:close>
<![CDATA[
dispatchEvent(new Event("RefreshContatos",true));
PopUpManager.removePopUp(this);
]]>
</s:close>
<fx:Script>
<![CDATA[
import agenda.ContatoVO;
import agenda.EnderecoVO;
import agenda.EstadoVO;
import mx.collections.ArrayCollection;
import mx.collections.ArrayList;
import mx.controls.Alert;
import mx.events.FlexEvent;
import mx.managers.PopUpManager;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
[Bindable]
protected var contatoVO:ContatoVO=null;
[Bindable]
protected var enderecosVOs:ArrayCollection;
[Bindable]
protected var enderecoVO:EnderecoVO=null;
public function setContato(c:ContatoVO):void {
contatoVO = c;
}
protected function OnFault(e:FaultEvent):void {
Alert.show(e.fault.message.toString());
}
protected function Contato_OnInsert(e:ResultEvent):void {
dispatchEvent(new Event("RefreshContatos",true));
//Assim que inserir, deve habilitar o inclusão
// de enderecos. Para isso, basta preencher o id
// do contatoVO.
contatoVO.id = parseInt(e.result.toString());
}
protected function Contato_OnUpdate(e:ResultEvent):void {
dispatchEvent(new Event("RefreshContatos",true));
}
protected function Endereco_OnGetByContato(e:ResultEvent):void {
enderecosVOs = e.result as ArrayCollection;
}
protected function Endereco_OnInsert(e:ResultEvent):void {
endereco.getByContato(contatoVO.id);
}
protected function Endereco_OnUpdate(e:ResultEvent):void {
endereco.getByContato(contatoVO.id);
}
protected function Endereco_OnDel(e:ResultEvent):void {
endereco.getByContato(contatoVO.id);
}
protected function OnCreationComplete(event:FlexEvent):void {
estado.getAll();
if (contatoVO == null)
contatoVO = new ContatoVO();
if (contatoVO.id > 0) {
endereco.getByContato(contatoVO.id);
}
}
protected function Estado_OnGetAll(e:ResultEvent):void {
comboEstados.dataProvider = e.result as ArrayCollection;
}
]]>
</fx:Script>
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Declarations>
<mx:RemoteObject id="contato" destination="contato" fault="OnFault(event)" >
<mx:method name="insert" result="Contato_OnInsert(event)"/>
<mx:method name="update" result="Contato_OnUpdate(event)"/>
</mx:RemoteObject>
<mx:RemoteObject id="endereco" destination="endereco" fault="OnFault(event)" >
<mx:method name="getByContato" result="Endereco_OnGetByContato(event)"/>
<mx:method name="insert" result="Endereco_OnInsert(event)"/>
<mx:method name="update" result="Endereco_OnUpdate(event)"/>
<mx:method name="del" result="Endereco_OnDel(event)"/>
</mx:RemoteObject>
<mx:RemoteObject id="estado" destination="estado" fault="OnFault(event)" >
<mx:method name="getAll" result="Estado_OnGetAll(event)"/>
</mx:RemoteObject>
</fx:Declarations>
<s:Label x="10" y="10" text="Nome:"/>
<s:TextInput x="10" y="26" width="197" text="@{contatoVO.Nome}"/>
<s:Label x="215" y="10" text="Email:" />
<s:TextInput x="215" y="26" width="191" text="@{contatoVO.Email}"/>
<s:Label x="414" y="9" text="Telefone:"/>
<s:TextInput x="414" y="25" text="@{contatoVO.Telefone}"/>
<mx:DataGrid x="10" y="56" width="528" id="dgEnderecos" dataProvider="{enderecosVOs}" enabled="{contatoVO.id>0}" >
<mx:columns>
<mx:DataGridColumn headerText="Logradouro" dataField="Logradouro"/>
<mx:DataGridColumn headerText="Numero" dataField="Numero"/>
<mx:DataGridColumn headerText="Complemento" dataField="Complemento"/>
<mx:DataGridColumn dataField="Cidade" headerText="Cidade"/>
<mx:DataGridColumn dataField="Estado" headerText="Estado"/>
<mx:DataGridColumn dataField="Cep" headerText="Cep"/>
</mx:columns>
</mx:DataGrid>
<s:Button x="10" y="206" label="Novo Endereço" enabled="{contatoVO.id>0}" >
<s:click>
<![CDATA[
enderecoVO = new EnderecoVO();
enderecoVO.idcontato = contatoVO.id;
]]>
</s:click>
</s:Button>
<s:Button x="123" y="206" label="Editar Endereço" enabled="{dgEnderecos.selectedItem!=null}" >
<s:click>
<![CDATA[
enderecoVO = dgEnderecos.selectedItem as EnderecoVO;
]]>
</s:click>
</s:Button>
<s:Button x="426" y="206" label="Excluir Endereço" enabled="{dgEnderecos.selectedItem!=null}" >
<s:click>
<![CDATA[
endereco.del( (dgEnderecos.selectedItem as EnderecoVO).id );
]]>
</s:click>
</s:Button>
<s:Panel x="10" y="235" width="528" height="167" dropShadowVisible="false" chromeColor="#E6E9F3" symbolColor="#B6CBEA" title="Endereço:" enabled="{contatoVO.id>0}" >
<s:Label x="10" y="10" text="Logradouro:"/>
<s:TextInput x="10" y="26" width="320" text="@{enderecoVO.Logradouro}" enabled="{enderecoVO!=null}" />
<s:Label x="338" y="10" text="Número:"/>
<s:TextInput x="338" y="26" width="84" text="@{enderecoVO.Numero}" enabled="{enderecoVO!=null}" />
<s:Label x="436" y="10" text="Comp:"/>
<s:TextInput x="436" y="26" width="80" text="@{enderecoVO.Complemento}" enabled="{enderecoVO!=null}" />
<s:Label x="10" y="56" text="Cep:"/>
<s:TextInput x="10" y="72" width="84" text="@{enderecoVO.Cep}" enabled="{enderecoVO!=null}" />
<s:Label x="106" y="55" text="Cidade:"/>
<s:TextInput x="106" y="71" width="256" text="@{enderecoVO.Cidade}" enabled="{enderecoVO!=null}" />
<s:Label x="374" y="56" text="Estado:"/>
<s:ComboBox id="comboEstados" x="370" y="71" labelField="Abr" />
<s:Button x="405" y="102" label="Salvar Endereço">
<s:click>
<![CDATA[
enderecoVO.idestado = (comboEstados.selectedItem as EstadoVO).id;
if (enderecoVO.id>0)
endereco.update(enderecoVO);
else
endereco.insert(enderecoVO);
]]>
</s:click>
</s:Button>
</s:Panel>
<s:controlBarContent>
<s:Button label="Salvar">
<s:click>
<![CDATA[
if (contatoVO.id > 0)
contato.update(contatoVO);
else
contato.insert(contatoVO);
]]>
</s:click>
</s:Button>
<s:Button label="Fechar">
<s:click>
<![CDATA[
dispatchEvent(new Event("RefreshContatos",true));
PopUpManager.removePopUp(this);
]]>
</s:click>
</s:Button>
</s:controlBarContent>
</s:TitleWindow>[/code]
Aí a imagem de quando aparece o erro: