DataGrid exibindo NaN

11 respostas
RicardoYukito

Estou retornando um Array de Objetos do java para preencher um DataGrid, porem os campos numéricos como id vem como NaN(not a number)… utilizo blazeDS e flex3.2…
Já fiz varios projetos e nunca tive esse problema … se alguem puder ajudar agradeço desde já.

11 Respostas

R

NaN para um número é a mesma coisa que null para um objeto.
Verifique se a informação está chegando corretamente, confira se o nome nas entidades está o mesmo.

RicardoYukito

No java retorna perfeitamente os valores nos ids , porém o array chega com os id´s NaN no flex.. a sintaxe esta correta.., cheguei a trocar os arquivos do BlazeDs mas continuou..

package beans;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.*;


@Entity
@Table (name = "CATEGORIA")
public class Categoria implements Serializable {


	@Id
	@SequenceGenerator (name = "Categoria_seq", sequenceName = "categoria_seq", allocationSize=1,initialValue=1)
	@GeneratedValue (strategy=GenerationType.SEQUENCE , generator = "Categoria_seq")
	@Column( name = "ID_CATEGORIA")
	private  int IdCategoria;
	
    @Column (name = "DESCRICAO" ,  length = 30)
    private String descricao;

    @OneToMany (mappedBy ="categoria", fetch=FetchType.EAGER)
    private List<Sessao> sessao = new ArrayList<Sessao>();
package Entity
{
import mx.collections.ArrayCollection;


[RemoteClass(alias = "beans.Categoria" )]
[Bindable]
	public class Categoria{
		
		public var IdCategoria : Number;
		public var descricao : String ;
		public var sessao : ArrayCollection;
	}

}
R

A descrição e a lista de sessões chegam corretamente?

RicardoYukito

sim, a descrição chega, e a lista vem null pq realmente nao existe.

R

E se colocar o IdCategoria no Flex como int?
E se colocar o IdCategoria no Java como Integer? E se colocar o IdCategoria no Java como Long? E manter no Flex como Number.

Se a descrição está chegando não é problema na comunicação.

RicardoYukito

Se deixar int no flex aparece 0 no lugar do NaN, no java testei de todos os jeitos já.

Não sei se isso interfere, mas a unica coisa que esta diferente de outros projetos que tenho é que atualizei a versao do plugin do flex de 3.1 para 3.2 para utilizar recursos de upload do flash10...

O código eu tenho certeza que esta com os nomes em todos os locais iguais..

<mx:RemoteObject id="CategoriaServ" destination="CategoriaServ">
		<mx:method name="gravar" result="resultGravar(event)"/>
		<mx:method name="listarTodas" result="resultlistarTodas(event)"/>			
	</mx:RemoteObject>
[Bindable]
     public var listaCategorias : ArrayCollection;

// o result
public function resultlistarTodas(e:ResultEvent):void {
  		listaCategorias = e.result as ArrayCollection;
  		
  		
  	}
e o data grid.
<mx:DataGrid x="10" y="128" width="500" dataProvider="{listaCategorias}">
		<mx:columns>
			<mx:DataGridColumn headerText="Codigo" dataField="IdCategoria"/>
			<mx:DataGridColumn headerText="Descricao" dataField="descricao"/>
		</mx:columns>
	</mx:DataGrid>
G

Ricardo, como foram definidas as classes POJO, quais são os nomes dos atributos…posta aí pra gente a classe.

RicardoYukito

Consegui resolver, não sei nem como explicar, mas quando coloquei o nome do atributo IdCategoria com o I minusculo em todos os lugares, funcionou, eu volto para maiusculo vem NaN, mesmo estando em todos os lugares iguais… eu postei esta classe no post anterior.

Vlw.

G

Ah, verdade, você criou a classe na camada do flex, não tinha visto, desculpe.

Cara, que loco isso de mudar pra minúsculo e funcionar…cada coisa!!!

R

Vou fazer um teste colocando a inicial da variavel em maiuscula.
Será que não era a falta de um setter? O BlazeDS obriga a entidade ter um setter para cada atributo para conseguir setar o valor senão ele vem nulo…

Bruno_Cebim

Cara, utilize classes Wrapper e evite alguns problemas, se o “espelhamento” está acontecendo nos outros campos e só neste está o problema.

Tente alterar de int para Integer e verifica se o get e o set está ok.

Verifique se a sua classe “espelho” no Flex está sendo utilizada em algum local do projeto, para ser adicionada no swf.

Check se o nome do campo está idêntico.

Depois poste aí se funcionou.

[]'s

Criado 21 de março de 2011
Ultima resposta 24 de mar. de 2011
Respostas 11
Participantes 4