[RESOLVIDO] Passar Objeto do Java para o Flex

2 respostas
R

Após fazer o login da Aplicação tenho que armazenar o objeto usuário para que na próxima tela seja carregado um TextInput.

Não estou conseguindo passar objeto do Java para o Flex:

UsuarioDAO:

package com.fdc.remota;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;

public class UsuarioDAO {

	private Session session;
	private Transaction tx;


	public Usuario autenticar(String login, String senha)
			throws Exception {
		try {

			this.session = HibernateUtil.getSessionFactory().openSession();
			this.tx = this.session.beginTransaction();

			Usuario usuario = (Usuario) this.session.createCriteria(Usuario.class)
			.add(Restrictions.eq("login", login))
			.add(Restrictions.eq("senha", senha)).uniqueResult();
			
			return usuario;

		} catch (Exception e) {

			e.printStackTrace();

			throw new Exception();

		} finally {

			this.session.close();

		}
		
	}
	public void pingSessao()
	{
		
	}
	
}

UsuarioService

package com.fdc.remota;

import java.util.List;


public class UsuarioService {

	private UsuarioDAO usuarioDAO = new UsuarioDAO();
	

	public Usuario autenticar(String login, String senha)
			throws Exception {

		Usuario usuario = usuarioDAO.autenticar(login, senha);

		try {

			if (usuario == null)
				throw new UsuarioNaoExisteException(
						"Não foi possível se conectar, pois o usuário ou a senha está incorreto.");

			else {
				
				System.out.println(usuario.getNmCliente());
				return usuario;
			}

		} catch (UsuarioNaoExisteException e) {

			throw new UsuarioNaoExisteException(e.getMensagem());

		} catch (Exception e) {
			e.printStackTrace();
			throw new Exception();
		}

	}
}

Action Script Usuario.AS

package com.fdc.remota.vo  
{

	[RemoteClass(alias="com.fdc.remota.Usuario")] 

	[Bindable]
	public class Usuario
	{
		public function Usuario()
		{
		}

		public var cdCliente:Number

		public var login:String

		public var nmCliente:String

		public var senha:String

		public var dispositivo:String
		
	}
}

Login.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:Group 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"
		 creationComplete="onCreationComplete()"
		 width.State1="1154" height.State1="132">
	
	<s:states>
		<s:State name="State1"/>
		<s:State name="aplicacao"/>
	</s:states>
	
	<fx:Declarations>
		<s:RemoteObject id="usuarioService"
						destination="usuarioService"
						fault="onFault(event)">
			<s:method name="autenticar" result="onResultAutenticar(event)" />
		</s:RemoteObject>
	</fx:Declarations>
	
	<s:Panel width="200" height="150" title="Login"
			 horizontalCenter="54" verticalCenter="194" includeIn="State1">
		
		<s:Label x="10" y="24" text="Login&#xd;" width="37"
				 textAlign="right"/>
		<s:TextInput id="login"
					 x="56" y="14"/>
		
		<s:Label x="10" y="54" text="Senha"/>
		<s:TextInput id="senha"
					 x="56" y="44"/>
		
		<s:Button id="btEntrar"
				  x="114" y="80" label="Entrar"
				  click="autenticar()"/>
		
	</s:Panel>
	
	<fx:Script>
		<![CDATA[
			
			import mx.controls.Alert;
			import mx.managers.PopUpManager;
			import mx.rpc.events.FaultEvent;
			import mx.rpc.events.ResultEvent;
													
			private var timer:Timer;
								
			private function onCreationComplete():void
			{
				
				timer = new Timer(1000 * 50, 0);
				timer.addEventListener( TimerEvent.TIMER, onTimer );
				timer.start();

			}
			
			private function onTimer(event:TimerEvent):void
			{
				usuarioService.pingSessao();

			}
			
			private function autenticar():void
			{
				usuarioService.autenticar(login.text, senha.text);
			}
			
			private function onFault(event:FaultEvent):void
			{
				Alert.show(event.fault.rootCause.mensagem);
			}
			
			private function onResultAutenticar(event:ResultEvent):void
			{
				var telaconsumo: Consumo = Consumo(PopUpManager.createPopUp(this, Consumo, true));
				PopUpManager.centerPopUp(telaconsumo);			
			}

			
		]]>
	</fx:Script>
	
</s:Group>

Consumo.mxml (Nesta tela tenho que carregar o objeto Usuario)

<?xml version="1.0" encoding="utf-8"?>

<s:Group 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="512" height="506"
		 creationComplete="getConsumo();"
		  >
	
	<fx:Declarations>
		
		<s:RemoteObject id="consumoService"
						destination="consumoService"
						fault="onFault(event)">
			<s:method name="getConsumo" result="onResultAutenticar(event)"/>			
		</s:RemoteObject>
	</fx:Declarations>
	
	
<s:Panel width="512" title="Visualização de Consumo On-Line">

	<mx:DataGrid x="-1" y="40" width="253" height="416" id="dataGrid" dataProvider="{consumo}">
		<mx:columns>
			<mx:DataGridColumn headerText="Dia" dataField="data" />
			<mx:DataGridColumn headerText="Consumo" dataField="consumo"/>
		</mx:columns>
	</mx:DataGrid>
	
	<s:Button x="10" y="10" label="Visualizar Consumo Diário" id="vconsumo" enabled="{dataGrid.selectedItem}" click="vConsumoDiario()"/>
	<s:Button x="218" y="-27" label="Carregar Consumo" id="cConsumo" click="getConsumo()"/>
	<s:TextInput x="372" y="40" id="nmCliente" text="{usuario.nmCliente}"/>
</s:Panel>


	<fx:Script>
		<![CDATA[		
			import com.fdc.remota.vo.ConsumoTotal;
			import com.fdc.remota.vo.Usuario;
			
			import mx.collections.ArrayCollection;
			import mx.controls.Alert;
			import mx.managers.PopUpManager;
			import mx.rpc.events.FaultEvent;
			import mx.rpc.events.ResultEvent;
			
			[Bindable]
			public var consumo:ArrayCollection;
			
			[Bindable]
			public var usuario:Usuario;
			
			private function onTimer(event:TimerEvent):void
			{
				consumoService.pingSessao();
				
			}
					
			private function onFault(event:FaultEvent):void
			{
				Alert.show(event.fault.rootCause.mensagem);
			}
			
			private function onResultAutenticar(event:ResultEvent):void
			{

				consumo = event.result as ArrayCollection;
				
			}	
			private function getConsumo():void
				
			{	
				consumoService.getConsumo();

			}

			private function vConsumoDiario():void {
				
				var titleWindow:ConsumoDiario = ConsumoDiario(PopUpManager.createPopUp(this, ConsumoDiario, true));
				titleWindow.setStyle("borderAlpha", 0.9);
				titleWindow.consumos = dataGrid.selectedItem as ConsumoTotal;
			}
				
		]]>
	</fx:Script>
</s:Group>

2 Respostas

R

[RESOLVIDO] Tinha que carregar o Objeto no ResultEvent na Tela de Login:

private function onResultAutenticar(event:ResultEvent):void
		{
			var telaconsumo: Consumo = Consumo(PopUpManager.createPopUp(this, Consumo, true));
			PopUpManager.centerPopUp(telaconsumo);
			telaconsumo.usuario = event.result as Usuario;
		}
renzonuccitelli

Posta o erro que está ocorrendo, se não fica difícil te ajudar.

Criado 20 de dezembro de 2010
Ultima resposta 20 de dez. de 2010
Respostas 2
Participantes 2