Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ezequiellorenzatti

mx:Tree, não popula dados internos do objeto.

Recommended Posts

Estou usando flex e java para e preciso montar uma tree com uma série de regras, que irá formar o código de conduta que será aplicado aos jogadores

 

Cada regra pode conter outras regras, então eu montei essas duas classes vo espelhadas no flex e no java.

 

Se eu disparar o meto listar em ambas as classes todo o conteúdo é listado, mas no tree,só é populado o conteúdo da primeira regra.

 

Na ordem:

Classe Java

Classe AS3

App Air

package com.projeto.vos.codigoconduta;

import java.io.Serializable;
import java.util.ArrayList;

public class RegraVO implements Serializable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private int id;
	private int numero;
	private String nome;
	private String descricao;
	private ArrayList<RegraVO> regras;
	
	public RegraVO(){
		
	}
	
	
	public RegraVO(int numero, String nome, String descricao){
		this.numero = numero;
		this.nome = nome;
		this.descricao = descricao;
	}
		
	public RegraVO(int numero, String nome){
		this.numero = numero;
		this.nome = nome;
	}
	
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public int getNumero() {
		return numero;
	}
	public void setNumero(int numero) {
		this.numero = numero;
	}
	
	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	
	public ArrayList<RegraVO> getRegras() {
		return regras;
	}

	public void setRegras(ArrayList<RegraVO> regras) {
		this.regras = regras;
	}
	
	public void addRegra(RegraVO regra){
		if(regras == null){
			regras = new ArrayList<RegraVO>();
		}
		regras.add(regra);
	}
	
	
	public void listar(){
		System.out.println(numero+"-"+nome);
		if(descricao != null){
			System.out.println("Descrição:");
			System.out.println(descricao);	
		}
		if(regras != null){
			for (int i = 0; i < regras.size(); i++) {
				regras.get(i).listar();
			}		
		}
	}
}
package
{
	import flash.system.System;
	
	import mx.collections.ArrayCollection;

	[RemoteClass(alias="com.projeto.codigoconduta.RegraVO")]
	[Bindable]
	public class RegraVO
	{
		private var _id:int;
		private var _numero:int;
		private var _nome:String;
		private var _descricao:String;
		private var _regras:ArrayCollection = new ArrayCollection();
				
		public function RegraVO(obj:Object=null){
			this._id = obj.id;
			this._numero = obj.numero;
			this._nome = obj.nome;
			this._descricao = obj.descricao;
			this._regras = obj.regras;
		}
		
		public function get id():int
		{
			return _id;
		}

		public function set id(value:int):void
		{
			_id = value;
		}

		public function get numero():int
		{
			return _numero;
		}

		public function set numero(value:int):void
		{
			_numero = value;
		}

		public function get nome():String
		{
			return _nome;
		}

		public function set nome(value:String):void
		{
			_nome = value;
		}

		public function get descricao():String
		{
			return _descricao;
		}

		public function set descricao(value:String):void
		{
			_descricao = value;
		}

		public function get regras():ArrayCollection
		{
			return _regras;
		}

		public function set regras(value:ArrayCollection):void
		{
			
			if(value!=null){
				for (var i:int = 0; i < value.length; i++){
					_regras.addItem(new RegraVO(value.getItemIndex(i)));	
				}
			}
		}
		
		public function addRegra(regra:RegraVO):void {
			if(regras == null){
				regras = new ArrayCollection();				
			}
			regras.addItem(regra);
		}
		
		public function listar():void{
			trace(numero+"-"+nome);
			if(descricao != null){
				trace("Descrição:");
				trace(descricao);	
			}
			if(_regras != null){
				for (var i:int = 0; i < _regras.length; i++) 
				{
					new RegraVO(regras.getItemAt(i)).listar();
				}		
			}
		}
	}
}
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
					   xmlns:s="library://ns.adobe.com/flex/spark" 
					   xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="iniciar(event)" xmlns:sparkTree="com.sparkTree.*">
	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
	
	<fx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;
			import mx.collections.XMLListCollection;
			import mx.controls.Alert;
			import mx.events.FlexEvent;
			import mx.rpc.events.FaultEvent;
			import mx.rpc.events.ResultEvent;
			
			private var treeService:RemoteServer;
			
			[Bindable]
			public var tree:RegraVO;
			
			protected function iniciar(event:FlexEvent):void
			{
				treeService = new RemoteServer(new Destination("Tree","com.projeto.servicos.Tree"));
				treeService.invoke("getCodigoDeCondutaXML",seFalhar,seCarregar,null);
			}
			
			protected function seFalhar(event:FaultEvent):void{
				Alert.show(event.fault.toString(),"Erro:");
			}
			
			protected function seCarregar(event:ResultEvent):void {
				tree = new RegraVO(event.result);
			}
			
	]]>
	</fx:Script>
	<mx:Tree labelField="nome" dataProvider="{tree}" width="100%" height="100%"/>
	
</s:WindowedApplication>

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Encontrei a solução

 

O problema estava na construção dos objetos.

 

A solução foi a seguinte.

 

package 
{
	import flash.system.System;
	
	import mx.collections.ArrayCollection;

	[RemoteClass(alias="com.projeto.vos.codigoconduta.RegraVO")]
	[Bindable]
	public class RegraVO
	{
		private var _id:int;
		private var _numero:int;
		private var _nome:String;
		private var _descricao:String;
		private var _children:ArrayCollection;
				
		public function RegraVO(obj:Object=null){
			if(obj!=null){
				this._id = obj.id;
				this._numero = obj.numero;
				this._nome = obj.nome;
				this._descricao = obj.descricao;
				this._children = obj.children;	
			}
		}
		
		public function get id():int
		{
			return _id;
		}

		public function set id(value:int):void
		{
			_id = value;
		}

		public function get numero():int
		{
			return _numero;
		}

		public function set numero(value:int):void
		{
			_numero = value;
		}

		public function get nome():String
		{
			return _nome;
		}

		public function set nome(value:String):void
		{
			_nome = value;
		}

		public function get descricao():String
		{
			return _descricao;
		}

		public function set descricao(value:String):void
		{
			_descricao = value;
		}

		public function get children():ArrayCollection
		{
			return _children;
		}

		public function set children(value:ArrayCollection):void
		{
			this._children = value;
		}
		
		public function addRegra(regra:RegraVO):void {
			if(children == null){
				children = new ArrayCollection();				
			}
			children.addItem(regra);
		}
		
		public function listar():void{
			trace(numero+"-"+nome);
			if(descricao != null){
				trace("Descrição:");
				trace(descricao);	
			}
			if(_children != null){
				for (var i:int = 0; i < _children.length; i++) 
				{
					new RegraVO(children.getItemAt(i)).listar();
				}		
			}
		}
	}
}
package com.projeto.vos.codigoconduta;

import java.io.Serializable;
import java.util.ArrayList;

public class RegraVO implements Serializable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private int id;
	private int numero;
	private String nome;
	private String descricao;
	private ArrayList<RegraVO> children;
	
	public RegraVO(){
		
	}
	
	
	public RegraVO(int id, int numero, String nome, String descricao){
		this.id = id;
		this.numero = numero;
		this.nome = nome;
		this.descricao = descricao;
	}
		
	public RegraVO(int id, int numero, String nome){
		this.id = id;
		this.numero = numero;
		this.nome = nome;
	}
	
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public int getNumero() {
		return numero;
	}
	public void setNumero(int numero) {
		this.numero = numero;
	}
	
	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	
	public ArrayList<RegraVO> getChildren() {
		return children;
	}

	public void setChildren(ArrayList<RegraVO> regras) {
		this.children = regras;
	}
	
	public void addRegra(RegraVO regra){
		if(children == null){
			children = new ArrayList<RegraVO>();
		}
		children.add(regra);
	}
	
	
	public void listar(){
		System.out.println(numero+"-"+nome);
		if(descricao != null){
			System.out.println("Descrição:");
			System.out.println(descricao);	
		}
		if(children != null){
			for (int i = 0; i < children.size(); i++) {
				children.get(i).listar();
			}		
		}
	}
}

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.