[RESOLVIDO][Flex] Erro na comunicação Flex > Java

6 respostas
Ijimero

Olá pessoal!

estou tendo um pequeno problema na comunicação do Flex com o Java.

Tenho uma classe em Java que possui um Objeto como propriedade, quando ele manda essa classe para o Flex, ele recebe sem problemas, mas quando vou mandar do Flex para o Java (uma nova instância) o Java interpreta essa propriedade como null…

as outras propriedades desse objeto vem normais.

por exemplo:

list.get(i).getDesresCResposta() //retorna o int certo

list.get(i).getAvaliacaoPerguntaSis().getAvaperSId() //retorna null

não sei se ficou confuso… mas agradeceria se alguém pudesse me ajudar =)

6 Respostas

luyz

voce esta usando remoteObject?
tem como postar o codigo dessa parte pra gente ver?

Ijimero

sim, estou usando RemoteObject…

essa é a parte do Java onde eu vou resgatar os dados;

public void salvaListaResposta(List<DesempenhoRespostaCad> list, long idAluno) throws SQLException {
	DesempenhoCadDao desCadDao = new DesempenhoCadDao();
	List<DesempenhoCad> listDes = desCadDao.listIdAluno(idAluno);
			
	String query = "";
			
	for (int i=0; list.size() > i; i++){
		if (!query.equals("")){
			query = query + ", ";
		}
		query = query + "("+ listDes.get(0).getDesCId() +", "+ list.get(i).getAvaliacaoPerguntaSis().getAvaperSId() +", "+ list.get(i).getDesresCResposta() +")";
			
	}
}

essa é a parte em flex onde eu populo o arrayCollection:

var desempenhoResposta:JV_DesempenhoRespostaCad = new JV_DesempenhoRespostaCad();
									desempenhoResposta.desresCResposta = int(RadioButton(HBox(VBox(HBox(VBox(Canvas(tabNavigator.getChildAt(k)).getChildAt(0)).getChildAt(i)).getChildAt(1)).getChildAt(0)).getChildAt(j)).value);
									desempenhoResposta.avaliacaoperguntaSis = new JV_AvaliacaoPerguntaSis();
									for (var l:int = 0; perguntaDP.length > l; l++){
										if (JV_AvaliacaoPerguntaSis(perguntaDP[l]).avaperSId == parseInt(RadioButton(HBox(VBox(HBox(VBox(Canvas(tabNavigator.getChildAt(k)).getChildAt(0)).getChildAt(i)).getChildAt(1)).getChildAt(0)).getChildAt(j)).groupName)){
											desempenhoResposta.avaliacaoperguntaSis = JV_AvaliacaoPerguntaSis(perguntaDP[l]);
										}
									}
									listaDesempenhoResposta.addItem(desempenhoResposta);

classe em java:

package br.com.pilates.conteudo;

// Generated 15/06/2011 13:04:29 by Hibernate Tools 3.3.0.GA

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

/**
 * DesempenhoRespostaCad generated by hbm2java
 */
@Entity
@Table(name = "DesempenhoRespostaCad", catalog = "pilates")
public class DesempenhoRespostaCad implements java.io.Serializable {

	private Long desresCId;
	private DesempenhoCad desempenhoCad = new DesempenhoCad();
	private AvaliacaoPerguntaSis avaliacaoPerguntaSis = new AvaliacaoPerguntaSis();
	private Integer desresCResposta;

	public DesempenhoRespostaCad() {
	}

	public DesempenhoRespostaCad(DesempenhoCad desempenhoCad,
			AvaliacaoPerguntaSis avaliacaoPerguntaSis) {
		this.desempenhoCad = desempenhoCad;
		this.avaliacaoPerguntaSis = avaliacaoPerguntaSis;
	}

	public DesempenhoRespostaCad(DesempenhoCad desempenhoCad,
			AvaliacaoPerguntaSis avaliacaoPerguntaSis, Integer desresCResposta) {
		this.desempenhoCad = desempenhoCad;
		this.avaliacaoPerguntaSis = avaliacaoPerguntaSis;
		this.desresCResposta = desresCResposta;
	}

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "desresC_id", unique = true, nullable = false)
	public Long getDesresCId() {
		return this.desresCId;
	}

	public void setDesresCId(Long desresCId) {
		this.desresCId = desresCId;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "desresC_desC_id", nullable = false)
	public DesempenhoCad getDesempenhoCad() {
		return this.desempenhoCad;
	}

	public void setDesempenhoCad(DesempenhoCad desempenhoCad) {
		this.desempenhoCad = desempenhoCad;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "desresC_avaperS_id", nullable = false)
	public AvaliacaoPerguntaSis getAvaliacaoPerguntaSis() {
		return this.avaliacaoPerguntaSis;
	}

	public void setAvaliacaoPerguntaSis(
			AvaliacaoPerguntaSis avaliacaoPerguntaSis) {
		this.avaliacaoPerguntaSis = avaliacaoPerguntaSis;
	}

	@Column(name = "desresC_resposta")
	public Integer getDesresCResposta() {
		return this.desresCResposta;
	}

	public void setDesresCResposta(Integer desresCResposta) {
		this.desresCResposta = desresCResposta;
	}

}

classe espelho em flex:

package pilates.telas.componentes.classes
{
	[Bindable]
	[RemoteClass(alias="br.com.pilates.conteudo.DesempenhoRespostaCad")]
	public class JV_DesempenhoRespostaCad
	{
		public var desresCId:Number;
		public var desempenhoCad:Object;
		public var avaliacaoperguntaSis:Object;
		public var desresCResposta:int;
		public function JV_DesempenhoRespostaCad()
		{
		}

	}
}
luyz

Olha, axo que pode ser pq na tua classe espelho no flex voce definiu as variaveis desempenhoCad e avaliacaoperguntaSis como Object, ae quando ele envia para o java, o java nao reconhece como o objeto que elas são intendeu?axo que voce tera que fazer as classes espelhos desse objetos tbm, desempenhoCad, avaliacaoperguntaSis no flex…

tenta ae e depois posta oque aconteceu…

Ijimero

ah, esqueci de comentar, eu ja havia tentado isso, e deu na mesma… =/

Ijimero

nossa, descobri o problema, é algo bem besta…

se reparar, vc vai perceber que o nome da variável que se refere ao Objeto está diferente no Flex…

no java é: avaliacaoPerguntaSis
já no flex é: avaliacaoperguntaSis

era isso que fazia o java não entender o retorno…

desculpa pela perda de tempo, e obrigado pela atenção!

luyz

Ijimero:
nossa, descobri o problema, é algo bem besta…

se reparar, vc vai perceber que o nome da variável que se refere ao Objeto está diferente no Flex…

no java é: avaliacaoPerguntaSis
já no flex é: avaliacaoperguntaSis

era isso que fazia o java não entender o retorno…

desculpa pela perda de tempo, e obrigado pela atenção!

Que isso cara, nao tem porque pedir desculpas, ainda bem que voce conseguiu resolver teu problema x)

I é sempre assim, quando a gente menos percebe é algo bem simples, até porque nao imaginamos que algo tao simpes possa acontecer…

Qualquer duvida é só perguntar…

Criado 16 de junho de 2011
Ultima resposta 17 de jun. de 2011
Respostas 6
Participantes 2