Comunidad de diseño web y desarrollo en internet online

duda amf

Citar            
MensajeEscrito el 10 Dic 2009 11:35 am
hello:

si uno tiene una clase a y extiende una clase b

ahora bien el amf puede parsear la clase b usando remoting y podra ver los atributos de a, pero no va poder parsear
los atributos de la clase b, entonces mi pregunta para poder hacer eso tendria que crear un objecto en a en b
(estoy utilizando java en el back end)

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Dic 2009 12:45 pm
Usualmente el traslado de datos se hace en lo que se denomica ValueObject, que son clases muy simples donde básicamente declaras propiedades públicas que asignas al recibir la info. Si mantienes la misma estructura en ambos lados (Flex y back-end) obtienes automáticamente objetos de ese tipo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Dic 2009 03:12 pm
pero con java y con weborb sucede que no funciona siguiendo tu logica
tengo en java una clase a ( con x atributos) , luego una clase b( con y atributos)
y b es una extension de a

lo mismo hago en as3 , pero en el back-end de java ingreso una clase de b
se ven los atributos de a tambien lo cual es correcto, pero si ingreso desde flex
con as3 y weborb una clase de b que es la extension de a solo se ven los atributos de b y no de a

me expico:
java

public void ingresar(classa b){
System.out.print(b.atributoa)
}
//funciona en java

pero ahora subo el jar y conecto con el remoting
escribo la funcion y tengo que paso una clase de b pero que es vo de su correspiende b de java
solo se ven los atributos de la clase de b de as3 y no su extension

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Dic 2009 03:14 pm
Desconozco Weborb, que es un sistema encima de Remoting, refiérete a la documentación de Weborb, aunque si usas Java, quizás BlazeDS sea una mejor opción

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Dic 2009 04:13 pm
registras la clase en flex?

Código :

 
flash.net.registerClassAlias( "ClaseJava", ClaseAS );

Por Wanaya

Claber

1115 de clabLevel

4 tutoriales

 

La Unión Sovietica U_U

firefox
Citar            
MensajeEscrito el 10 Dic 2009 11:32 pm
en que parte del codigo debo registrar estas clases podrias darme un ejemplo concreto?

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Dic 2009 11:37 pm
antes que se me olvide en cada vo tengo

[Bindable]
[RemoteClass(alias="com.directorio.nombreClase")]

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Dic 2009 12:04 am
ahh ok se puede registrar de las dos formas tanto en la parte de declaraciones de variables con:

Código :

flash.net.registerClassAlias( "ClaseJava", ClaseAS );


ó en cada clase vo como tu lo haces.

Si no te funciona así te recomiendo que tu clase de java que va a la par con la de flex, no extienda propiedades que vas a usar en flex, pues tal ves esto este causando el problema. Ademas es mas recomendable para la reutilización de código, en un futuro tienes separadas tus clases remotas de java.

Por Wanaya

Claber

1115 de clabLevel

4 tutoriales

 

La Unión Sovietica U_U

firefox
Citar            
MensajeEscrito el 11 Dic 2009 09:39 pm
estas diciendo entonces que no utilices los vo orientado al objecto sino que parse , me expico
en java ento la clase de a y una clase b , b extiende a , entonces hago lo mismo en as3 pero no la extiendo
es decir tengo un vo para clase a y vo para la clase b

en clase a tengo atributo x
en clase b tengo atributo y

entonces tendria que declarar el atributo x en b y no extender la clase a en as3 es lo que quiers decir , me expico

me explico:

En java:

class Persona{
String nombre
String apMaterno

}

class Alumno Extends Persona{
String matricula
}


En as3 para ocupar el remoting

package com.controlador.vo
{
[Bindable]
[RemoteClass(alias="com.clases.Alumno")]
public class Alumno
{


public var nombre:String;
public var apMaterno:String;
public var matricula:String;
}
}

package com.controlador.vo
{
[Bindable]
[RemoteClass(alias="com.clases.Persona")]
public class Alumno
{


public var nombre:String;
public var apMaterno:String;

}
}


Es a eso a lo que te refieres tendria que quedar a si mi vo y olvidarme un poco de oop con vo

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Dic 2009 11:05 pm
No presisamente si no que mantengas tus clases entidades que pasas de java a flex sin extenderla, si vas a pasar un objeto de java a flex que es un Alumno.

entonces:

Código :

class Alumno{
String nombre
String apMaterno
String matricula
}

y en flex:

Código :

package com.controlador.vo
{
[Bindable]
[RemoteClass(alias="com.clases.Alumno")]
public class Alumno
{
public var nombre:String;
public var apMaterno:String;
public var matricula:String;
}
}


Esto funciona 100% ademas asi mantienen siempre una entidad que estaras pasando entre java y flex.

Si realmente es necesario eso que necesitas hacer extendiendo la clase te suguiero que en ves de heredar propiedades, uses composicion:

java:

Código :

class Persona{
String nombre
String apMaterno
}

class Alumno{
String matricula
Persona persona;
public Alumno(){
persona = new Persona();
}
public void setNombre(String nombre) {
this.persona.nombre = nombre;
}
public Strin getNombre(){
return this.persona.nombre;

//...
}
}



flex:

Código :

package com.controlador.vo
{
[Bindable]
[RemoteClass(alias="com.clases.Alumno")]
public class Alumno
{

public var matricula:String;
public var nombre:String;
public var apMaterno:String;

}
}


No he verificadoeste ultimo codigo.

Por Wanaya

Claber

1115 de clabLevel

4 tutoriales

 

La Unión Sovietica U_U

firefox
Citar            
MensajeEscrito el 12 Dic 2009 02:06 am
evitaria repetir codigo entre alumno y persona
como tu dices evitar la extension de una clase cuando utilice flex

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Dic 2009 02:33 am
he hecho las prueba en weborb y esto es el resultado:

En Java :

Si tengo una clase Alumno con atributo matricula que es una extension de Persona que tiene un atributo nombre
como es logico y por todos conocido que el atributo nombre se puede ver desde alumno

Código :

alumno.setNombre("nombre");
alumno.getNombre();

esto funciona en java perfectamente:

Si quiero mantener la misma extructura con flex:

Código :

package com.controlador.vo
{
[Bindable]
[RemoteClass(alias="com.clases.Persona")]
public class Persona
{
public var nombre:String;
public var apMaterno:String;
}
}

package com.controlador.vo
{
[Bindable]
[RemoteClass(alias="com.clases.Alumno")]
public class Alumno extends Persona
{

public var apMatricula:String;
}
}



Luego hacemos la siguientos operaciones, primeramente desde el back-end de java usando weborb
y usando la estructura de java

1.-Devolver todos los alumnos que estan en x curso

El resultado obtenido desde flex y llevado a un datagrid
y hacemos dg.selectedItem.nombre

funciona perfectamete es decir tengo los datos de nombre y matricula por alumno, por consiguiente
la estructura del vo funciona desde java hacia flex.

Procedemos a la inversa , es decir vamos a crear un vo y lo mandaremos por remoting hacia java
con weborb

en primer lugar creamos el la clase (para esto muyyyyyyyyyyy simple) usemos la imaginacion
no quiero escribir tanto

Código :

....
public int addAlumno(Alumno al){
   return controlador.guardaEsteMaricon(al)

}


luego desde flex

Código :

var al:alumnoVo=new AlumnoVO()
al.nombre="nombre";
a.matricula="matricula";
...
..
//si imprimo con un alert lo que tiene al 
Aler.show(al.nombre+al.matricula)// sale nombrematricula todo ok, la extension funciona
//mandamos al remoting
.....
 miRemoting.addAlumno(al)


bien subimo el jar a webor y ejecutamos de flex el resultado que obtengo es que en la base de datos
guarda solamente matricula , la estructura desde flex hacia java no se funciona
si hago system.out.print(al.nombre) desde java no hay nada.

Conclusion en weborb desde flex hacia java no funciona el amf con herencia
desde java hacia flex si funciona

Alguien de ustedes ha hecho funcionar la herencia via BlazeDs?????

Por xcom

Claber

530 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.