Note que não estamos nos preocupando com divisão por zero. Legal! O segundo passo agora é editar o remoting-config.xml informar tanto ao BlazeDS quanto ao compilador do Flex que a classe ServicosCalculadora é uma classe que contém serviços. Abra então o remoting-config.xml e adicione mais um destination que agora aponta para a nova classe e de um id para ele. Segue o remoting-config.xml completo:
Ótimo, a parte do lado Java está pronta. Simples não é? Vamos para o Flash Builder agora. Vamos reorganizar nossa interface, pois vamos utilizá-la a mesma tela para todos os exemplos. Na interface Design, vamos criar um painel (categoria Layout da paleta de componentes) e arrastar o botão do primeiro exemplo para dentro dele. Criaremos outro painel então para conter os componentes do exemplo que estamos implementando agora. Note que do lado direito da interface do Flash Builder existe a aba de propriedades do componente que está selecionado no momento. Lá você pode alterar as propriedades do componente que está editando. Veja como ficou:
Temos então os campos para os números que serão calculados, alguns radios para as operações, um botão para chamar o serviço de cálculo e um campo para o resultado. Para mentermos um padrão, segue o código do mxml que temos até o momento. Já defini os ids dos componentes.
Da mesma forma que fizemos para o primeiro exemplo, precisamos agora definir o <s:RemoteObject> que vai apontar para a nossa classe e mapear todos os métodos. Como exercício, logo abaixo do <s:RemoteObject> do exemplo anterior, declare no novo <s:RemoteObject> e os quatro métodos. Lembre-se que o destination tem que ser o mesmo que declaramos no remoting-config.xml (servicosCalculadora). Para os eventos fault e result de cada um dos métodos, aponte para as funções calculadoraFault(event) e calculadoraResult(event) respectivamente. Vamos utilizar os mesmo tratadores de eventos para cada um dos métodos. Em cada um deles, coloque um Alert, indicando um erro ou que o cálculo foi executado. Terminou? Veja se ficou parecido com isso aqui:
Certo, configuramos nosso objeto remoto, mapeamos os métodos, registramos os eventos de erro (FaultEvent) e de execução bem sucedida (ResultEvent). Falta agora fazer funcionar. Para isso iremos criar um método para tratar o evento click do botão, e neste método verificar qual a operação a ser executada e chamar o método correspondente do serviço. Para poupar espaço, vou colocar apenas o código do método que trata o evento click e como o código do botão “Calcular!” deve ficar.
Teste e veja se está ocorrendo algum erro. Se estive, corrija. Perceba que ainda não tratamos o resultado retornado. Isso será realizado no método que trata o ResultEvent, pois só quando ele é executado significa que o método remoto (nosso serviço) foi executado corretamente. Então vamos fazer a modificação necessária no método calculadoraResult para que o resultado do serviço seja colocado no campo de resultado. Segue então o método alterado:
Teste para verificar se está funcionando. Caso após executar o projeto do NetBeans o aplicativo swf não tiver sido atualizado, segure a tecla Shift e clique no botão atualizar do seu navegador. Assim ele é forçado a recarregar do “zero” o swf. Não se esqueça de sempre salvar o projeto no Flash Builder para que o projeto seja recompilado. Segue então o código mxml final deste exemplo:
Na próxima (e última) parte do nosso tutorial, iremos ver como trabalhar com objetos criados por nós mesmos, enviando e recebendo esses objetos entre as camadas feitas em ActionScript (swf) e Java (com suporte do BlazeDS). Utilizaremos banco de dados também, fazendo então um exemplo completo de um CRUD (Create Read Update Delete).