SlideShare una empresa de Scribd logo
Manejo de parámetros Request con Beans de Formulario



                       mayo de 2005
Formularios HTML
       Parte fundamental de aplicación web
       Dos retos para el desarrollador:
         Recoger datos al recibir formulario
         Rellenar el formulario con datos incompletos para
          corrección
       Struts facilita la tarea del programador 
        ActionForms
         Autorellenado de formulario desde ActionForm:
            <html:input property="address"/>
         Chequeo automática del tipo de dato del campo del
          formulario HTML en la recepción
         Validación automática de campos del formulario
Características de ActionForm
       Un ActionForm debe:
         Derivarse de org.apache.struts.ActionForm
         Seguir esquema de JavaBean (accesor, mutator)
         Declarar una propiedad por cada control HTML con
          el que se va a relacionar, con el mismo nombre
       Un ActionForm puede:
         Implementar método validate() para validación
          propiedades
         Implementar método reset() para inicializar las
          variables antes de rellenarlas
Ejemplo ActionForm
   Creamos un ActionForm partiendo del proyecto struts-blank.
   Creamos directorio app dentro de src/java y creamos
    MiFormulario.java:
         package java.app;

         import org.apache.struts.action.*;

         public class MiFormulario extends ActionForm {
             protected String nombre;
             protected String direccion;

             public String getNombre() {return this.nombre;}
             public void setNombre(String nombre) {
                 this.nombre = nombre;
             }
             public String getDireccion() {return this.direccion;}
             public void setDireccion(String direccion) {
                 this.direccion = direccion;
             }
         }
¿Qué Funciones cumple un
                  ActionForm? (I)
       Colector de información
         Abstrae de las peculiaridades de HTTP
            Convierte texto de campos HTML a datos nativos Java
            Independiza del método utilizado (GET / POST)
            Gestiona tipos de codificación diferentes (puede recibir
             ficheros)
            Todo campo HTML se transforma transparentemente al
             desarrollador a una propiedad de JavaBean
       Buffer de Datos
         Proporciona almacén de datos hasta que son
          validados
¿Qué Funciones cumple un
                 ActionForm? (II)
       Validador
         Verificación de datos correctos
            Verifica si dato puede ser convertido a Integer, Float,
             Double, etc. Chequea conversión correcta
         Verificación si datos coherentes
            Método validate() llama a lógica de negocio
            P.e. Saber si cantidad de pago está dentro de crédito
         Devuelve datos a usuario indicando incorrectos
       Transformador de tipos
         Pueden incorporarse métodos helper para
          establecer estrucutura de datos: P.e. teléfono,
          fecha.
¿Qué Funciones cumple un
              ActionForm? (III)
   Objeto de transferencia
       Transporte de datos que irán a modelo u
        otro proceso
   Firewall
       Permite examinar datos antes de que
        “afecten” a la aplicación
Capacidades de ActionForms
                         (I)
       Permiten compartición de nombres
          Un ActionForm puede tener propiedades con mismo nombre que
           JavaBean de lógica de negocio (columnas de BBDD, etc)
          Mapeo manual  No hay peligro
       Minimización de código a medida
          Son adaptadores de capa de presentación  Típicamente contiene
           código de presentación (validación, etc).
          Fomentan incluir lógica de negocio separada (en beans de negocio)
            Reutilización en otras partes
       Pueden encapusular helpers
          Puede ser práctico importar objetos de capa de negocio
              public String getTelephoneText() {
                  return
                  ContactBean.formatTelephone(this.telephoneText,getLocale())
                  ;
              }
Capacidades de ActionForms
                    (II)
   Pueden encapsular otros Beans
       Struts autorrellena beans encapsulados:
          <html:text property="values.telephoneText"
             size="14"
             maxlength="14"/>
       Equivale a:
          aForm.getValues().setTelephoneText((String)
            request.getAttribute(valueBean.telephoneText);
Tipos de ActionForms (I)
       ActionForm
         Tipo básico (visto hasta ahora).
         Requiere declarar una clase y esquema de bean típico
       ActionForm en base a Map
         Minimizar escribir código (gran cantidad de propiedades)
         Incorpora objeto Map para “meter” datos
         Se pueden mezclar propiedades “normales” con “mapeadas”
         Implica:
             Escribir par métodos para manejar cualquier propiedad “mapeada”:
                   public void setValue(String key, Object value)
                   public Object getValue(String key)
             Utilizar sintaxis algo diferente en JSPs value(key):
                   <html:text property="value(key)"/>
                   <bean:write name="formBean" property="value(key)"/>
Tipos de ActionForms (II)
       DynaActionForm
         Menos trabajo de codificación que Mapped ActionForms
         No se codifica ninguna clase Java, sólo configuración (struts-
          config.xml)
         Se maneja como un ActionForm desde el código
         Versión DynaActionForm de MiFormulario:

          <form-bean name="miFormulario"
           type="org.apache.struts.action.DynaActionForm">
             <form-property name="nombre"
              type="java.lang.String"/>
             <form-property name=“direccion"
              type="java.lang.String"/>
          </form-bean>
Transferencia de datos a
                 lógica de negocio
                   HTTP
   JSP                          ActionServlet


Retorno                             Rellenado
valores
incorrectos     ActionForm

                          Transferencia lógica de negocio

                Bean Datos                  Proceso automático (Struts)
                      o                     Proceso asitistido (JSP tags Struts)
               lógica negocio               Proceso manual
Estrategias transferencia (I)
       Implementar capa de negocio
          ActionForms implementan interfaces definidas por capa de negocio

          public class UserPreferencesForm extends ActionForm
              implements UserPreferencesBean {
              // ...
          }

              form es un objeto UserPreferencesForm

          userPreferencesModel.save((UserPreferencesBean) form);

              userPreferencesModel es un objeto de lógica de negocio (p.e. DAO acceso
               BBDD)
          Conversión de datos
              Los ActionForms requiere datos miembro de tipo String o boolean.
              La lógica de negocio requiere datos nativos (Integer, Double, etc.)
              Conversión a datos nativos (requeridos en lógica de negocio)  dentro del
               ActionForm (métodos de la interfaz)
Estrategias transferencia (II)
   Anidar objeto de datos mutable
       Sólo si objetos de datos requieren sólo
        datos tipo boolean o String.
       Acceso a datos del modelo como
        propiedades de ActionForm:
          values.telephone  getValues().getTelephone();

       Inconveniente  Se liga presentación a
        objetos de datos
Estrategias transferencia (III)
       Usar objeto de datos externo
              Los datos se le pasarían desde ActionForm a través de constructor o métodos set.
              Ejemplo:
                    ArticleForm aForm = (ArticleForm) form;
                    ArticleBean aBean = new ArticleBean();
                    aBean.setRecordHeader(
                          aForm.getArticleKey(),
                          aForm.getEditor());
                    aBean.setPeople(
                          aForm.getContributor(),
                          aForm.getCreator());
                    aBean.setText(
                          aForm.getTitle(),
                          aForm.getContent());


              Conversión de tipos
                   Se realiza en el Action
                   Internamente dentro del objeto de datos
                   Usar método helper dentro del ActionForm que haga la conversión:

                    Integer getArticleKeyInteger() {
                          return new Integer(this.getArticle())
                    }
              Inconvenientes
                   Cambio de objeto de datos si cambian propiedades de formularios
Estrategias transferencia (IV)
       Utilizar método factoría
         En vez de convertir propiedad a propiedad devolver
          el objeto de datos desde un método del ActionForm

             public ArticleBean getArticleBean() {}
             pulic void setArticleBean(ArticleBean bean) {}
         Conversión de tipos
            Se realizan dentro del ActionForm en vez de en el Action
Estrategias transferencia (V)
       Pasar un Map
             Aprovechar capacidades de Mapped ActionForms
             Se define el Map como propiedad del ActionForm (getMap, setMap)
             Se incluyen métodos para recuperar propiedades mapeadas (getValue, setValue)
                  public void setValue(String key, Object value) throws Exception {
                      getMap().put(key,value);
                  }
                  public Object getValue(String key) throws Exception {
                      return getMap().get(key);
                  }
             El objeto de datos del modelo deberá implementar método para pasarle el Map
                  form.setMap(bean.getMap());
                  bean.setMap(form.getMap());
             Conversión de tipos
                 Si capa de negocio espera tipos nativos la conversión se puede hacer en un método helper del
                  ActionForm:
                  public Map getTypedMap() {
                      Map map = this.getMap();
                      String keyString = (String) map.get("key");
                      Integer keyInteger = new Integer(keyString);
                      map.put("key",keyInteger);
                      return map;
                  }
Estrategias transferencia (VI)
   Utilizar reflexión
       El paquete BeanUtils facilita el copiado de
        propiedades y la transformación automática
        de tipos
             BeanUtils.copyProperties(myBusinessBean,myActionForm);
             myBusinessOperation(myBusinessbean);
             BeanUtils.copyProperties(myActionForm,myBusinessBean);

       Si se requiere hacer conversión a tipos no
        nativos (p.e. Timestamp) se pueden
        registrar conversores con BeanUtils
Estrategias transferencia (VII)
   Utilizar clase adaptadora
       Es llevar el código a una clase intermedia
          // Get data into ActionForm
          DataBean dBean = new DataBean();
          dBean.execute(something);
          AdaptorBean aBean = new AdaptorBean(dBean);
          aBean.populate(form);
          // Fetch data from ActionForm
          AdaptorBean adaptor = new AdaptorBean(new DataBean());
          BaseForm actionForm = (BaseForm) form;
          adaptor.set(actionForm);
          DataBean model = (DataBean) adaptor.getBean();
          data.execute();

Más contenido relacionado

PPT
PPTX
P1C5 Lenguaje de Expresiones
PPTX
Java certificacion
PPSX
Java Persistence Api (Jpa)
PPTX
P2C2 Introducción a JEE5
PPT
Estructura de datos , investigacion 2
PPT
06 validación
P1C5 Lenguaje de Expresiones
Java certificacion
Java Persistence Api (Jpa)
P2C2 Introducción a JEE5
Estructura de datos , investigacion 2
06 validación

Destacado (7)

PPT
Patrones j2 ee
PPT
02 instalación
PDF
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
PPT
21 bibsw tablasyotros
PPT
PPT
01 introducción
Patrones j2 ee
02 instalación
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
21 bibsw tablasyotros
01 introducción
Publicidad

Similar a 03 action forms (20)

DOCX
TEMA Nº 4: GENERACIÓN DE CONTENIDO DINÁMICO CON JSP
PPT
Introduccion Struts2
DOC
J2ME Netbeans Mobility Pack - Leonardo Torres Altez
PPTX
Etiquetas básicas jsf
PDF
Master j2ee
PPTX
Strust
PDF
Formularios HTML
DOCX
Tutorial struts 2
PPTX
PDF
Diploma de Desarrollo de Aplicaciones con JAVA
PDF
Curso de Struts 2: Unidad Didáctica 04 Formularios
PPTX
Javaserver Faces (jsf)
PPT
Arquitectura java web
PPTX
ASP.NET MVC (2011)
PPT
Curso Java Avanzado 6 Struts
PPT
Experiencias Usando la Tecnología ADF
DOC
Formularios en html
PPTX
Ejercicio basico jsf’s
PPTX
Comunicacion entre formularios HTML y paginas JSP
TEMA Nº 4: GENERACIÓN DE CONTENIDO DINÁMICO CON JSP
Introduccion Struts2
J2ME Netbeans Mobility Pack - Leonardo Torres Altez
Etiquetas básicas jsf
Master j2ee
Strust
Formularios HTML
Tutorial struts 2
Diploma de Desarrollo de Aplicaciones con JAVA
Curso de Struts 2: Unidad Didáctica 04 Formularios
Javaserver Faces (jsf)
Arquitectura java web
ASP.NET MVC (2011)
Curso Java Avanzado 6 Struts
Experiencias Usando la Tecnología ADF
Formularios en html
Ejercicio basico jsf’s
Comunicacion entre formularios HTML y paginas JSP
Publicidad

Más de Roberto Moreno Doñoro (20)

PPT
20 curvaselipticas
PPT
19 protocoloscripto
PPT
18 correoseguro
PPT
17 certdigitalespkcs
PPT
16 autenticafirma
PPT
15 funcioneshash
PPT
14 cifraasimetrica
PPT
13 ciframochilas
PPT
12 cifrasimetrica
PPT
11 cifraflujo
PPT
10 ciframoderna
PPT
09 cifraclasica
PPT
08 compalgoritmos
PPT
07 teorianumeros
PPT
06 teoriainfo
PPT
05 gestionseg
PPT
04 calidadinfo
PPT
02 breveintrocripto
PPT
01 presentalibro
PPT
03 introseginfo
20 curvaselipticas
19 protocoloscripto
18 correoseguro
17 certdigitalespkcs
16 autenticafirma
15 funcioneshash
14 cifraasimetrica
13 ciframochilas
12 cifrasimetrica
11 cifraflujo
10 ciframoderna
09 cifraclasica
08 compalgoritmos
07 teorianumeros
06 teoriainfo
05 gestionseg
04 calidadinfo
02 breveintrocripto
01 presentalibro
03 introseginfo

Último (20)

PDF
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
DOCX
2 GRADO UNIDAD 5 - 2025.docx para primaria
PDF
Fundamentos_Educacion_a_Distancia_ABC.pdf
PDF
Lección 6 Escuela Sab. A través del mar rojo.pdf
PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PDF
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf
DOCX
V UNIDAD - SEGUNDO GRADO. del mes de agosto
PDF
DI, TEA, TDAH.pdf guía se secuencias didacticas
PDF
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
PDF
Tomo 1 de biologia gratis ultra plusenmas
DOCX
Tarea De El Colegio Coding For Kids 1 y 2
PPTX
caso clínico iam clinica y semiología l3.pptx
PDF
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
PDF
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
PDF
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
PPT
Cosacos y hombres del Este en el Heer.ppt
PDF
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
DOCX
PROYECTO DE APRENDIZAJE para la semana de fiestas patrias
PDF
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
PDF
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
2 GRADO UNIDAD 5 - 2025.docx para primaria
Fundamentos_Educacion_a_Distancia_ABC.pdf
Lección 6 Escuela Sab. A través del mar rojo.pdf
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf
V UNIDAD - SEGUNDO GRADO. del mes de agosto
DI, TEA, TDAH.pdf guía se secuencias didacticas
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
Tomo 1 de biologia gratis ultra plusenmas
Tarea De El Colegio Coding For Kids 1 y 2
caso clínico iam clinica y semiología l3.pptx
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
Cosacos y hombres del Este en el Heer.ppt
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
PROYECTO DE APRENDIZAJE para la semana de fiestas patrias
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe

03 action forms

  • 1. Manejo de parámetros Request con Beans de Formulario mayo de 2005
  • 2. Formularios HTML  Parte fundamental de aplicación web  Dos retos para el desarrollador:  Recoger datos al recibir formulario  Rellenar el formulario con datos incompletos para corrección  Struts facilita la tarea del programador  ActionForms  Autorellenado de formulario desde ActionForm:  <html:input property="address"/>  Chequeo automática del tipo de dato del campo del formulario HTML en la recepción  Validación automática de campos del formulario
  • 3. Características de ActionForm  Un ActionForm debe:  Derivarse de org.apache.struts.ActionForm  Seguir esquema de JavaBean (accesor, mutator)  Declarar una propiedad por cada control HTML con el que se va a relacionar, con el mismo nombre  Un ActionForm puede:  Implementar método validate() para validación propiedades  Implementar método reset() para inicializar las variables antes de rellenarlas
  • 4. Ejemplo ActionForm  Creamos un ActionForm partiendo del proyecto struts-blank.  Creamos directorio app dentro de src/java y creamos MiFormulario.java: package java.app; import org.apache.struts.action.*; public class MiFormulario extends ActionForm { protected String nombre; protected String direccion; public String getNombre() {return this.nombre;} public void setNombre(String nombre) { this.nombre = nombre; } public String getDireccion() {return this.direccion;} public void setDireccion(String direccion) { this.direccion = direccion; } }
  • 5. ¿Qué Funciones cumple un ActionForm? (I)  Colector de información  Abstrae de las peculiaridades de HTTP  Convierte texto de campos HTML a datos nativos Java  Independiza del método utilizado (GET / POST)  Gestiona tipos de codificación diferentes (puede recibir ficheros)  Todo campo HTML se transforma transparentemente al desarrollador a una propiedad de JavaBean  Buffer de Datos  Proporciona almacén de datos hasta que son validados
  • 6. ¿Qué Funciones cumple un ActionForm? (II)  Validador  Verificación de datos correctos  Verifica si dato puede ser convertido a Integer, Float, Double, etc. Chequea conversión correcta  Verificación si datos coherentes  Método validate() llama a lógica de negocio  P.e. Saber si cantidad de pago está dentro de crédito  Devuelve datos a usuario indicando incorrectos  Transformador de tipos  Pueden incorporarse métodos helper para establecer estrucutura de datos: P.e. teléfono, fecha.
  • 7. ¿Qué Funciones cumple un ActionForm? (III)  Objeto de transferencia  Transporte de datos que irán a modelo u otro proceso  Firewall  Permite examinar datos antes de que “afecten” a la aplicación
  • 8. Capacidades de ActionForms (I)  Permiten compartición de nombres  Un ActionForm puede tener propiedades con mismo nombre que JavaBean de lógica de negocio (columnas de BBDD, etc)  Mapeo manual  No hay peligro  Minimización de código a medida  Son adaptadores de capa de presentación  Típicamente contiene código de presentación (validación, etc).  Fomentan incluir lógica de negocio separada (en beans de negocio)  Reutilización en otras partes  Pueden encapusular helpers  Puede ser práctico importar objetos de capa de negocio public String getTelephoneText() { return ContactBean.formatTelephone(this.telephoneText,getLocale()) ; }
  • 9. Capacidades de ActionForms (II)  Pueden encapsular otros Beans  Struts autorrellena beans encapsulados: <html:text property="values.telephoneText" size="14" maxlength="14"/>  Equivale a: aForm.getValues().setTelephoneText((String) request.getAttribute(valueBean.telephoneText);
  • 10. Tipos de ActionForms (I)  ActionForm  Tipo básico (visto hasta ahora).  Requiere declarar una clase y esquema de bean típico  ActionForm en base a Map  Minimizar escribir código (gran cantidad de propiedades)  Incorpora objeto Map para “meter” datos  Se pueden mezclar propiedades “normales” con “mapeadas”  Implica:  Escribir par métodos para manejar cualquier propiedad “mapeada”: public void setValue(String key, Object value) public Object getValue(String key)  Utilizar sintaxis algo diferente en JSPs value(key): <html:text property="value(key)"/> <bean:write name="formBean" property="value(key)"/>
  • 11. Tipos de ActionForms (II)  DynaActionForm  Menos trabajo de codificación que Mapped ActionForms  No se codifica ninguna clase Java, sólo configuración (struts- config.xml)  Se maneja como un ActionForm desde el código  Versión DynaActionForm de MiFormulario: <form-bean name="miFormulario" type="org.apache.struts.action.DynaActionForm"> <form-property name="nombre" type="java.lang.String"/> <form-property name=“direccion" type="java.lang.String"/> </form-bean>
  • 12. Transferencia de datos a lógica de negocio HTTP JSP ActionServlet Retorno Rellenado valores incorrectos ActionForm Transferencia lógica de negocio Bean Datos Proceso automático (Struts) o Proceso asitistido (JSP tags Struts) lógica negocio Proceso manual
  • 13. Estrategias transferencia (I)  Implementar capa de negocio  ActionForms implementan interfaces definidas por capa de negocio public class UserPreferencesForm extends ActionForm implements UserPreferencesBean { // ... }  form es un objeto UserPreferencesForm userPreferencesModel.save((UserPreferencesBean) form);  userPreferencesModel es un objeto de lógica de negocio (p.e. DAO acceso BBDD)  Conversión de datos  Los ActionForms requiere datos miembro de tipo String o boolean.  La lógica de negocio requiere datos nativos (Integer, Double, etc.)  Conversión a datos nativos (requeridos en lógica de negocio)  dentro del ActionForm (métodos de la interfaz)
  • 14. Estrategias transferencia (II)  Anidar objeto de datos mutable  Sólo si objetos de datos requieren sólo datos tipo boolean o String.  Acceso a datos del modelo como propiedades de ActionForm: values.telephone  getValues().getTelephone();  Inconveniente  Se liga presentación a objetos de datos
  • 15. Estrategias transferencia (III)  Usar objeto de datos externo  Los datos se le pasarían desde ActionForm a través de constructor o métodos set.  Ejemplo: ArticleForm aForm = (ArticleForm) form; ArticleBean aBean = new ArticleBean(); aBean.setRecordHeader( aForm.getArticleKey(), aForm.getEditor()); aBean.setPeople( aForm.getContributor(), aForm.getCreator()); aBean.setText( aForm.getTitle(), aForm.getContent());  Conversión de tipos  Se realiza en el Action  Internamente dentro del objeto de datos  Usar método helper dentro del ActionForm que haga la conversión: Integer getArticleKeyInteger() { return new Integer(this.getArticle()) }  Inconvenientes  Cambio de objeto de datos si cambian propiedades de formularios
  • 16. Estrategias transferencia (IV)  Utilizar método factoría  En vez de convertir propiedad a propiedad devolver el objeto de datos desde un método del ActionForm public ArticleBean getArticleBean() {} pulic void setArticleBean(ArticleBean bean) {}  Conversión de tipos  Se realizan dentro del ActionForm en vez de en el Action
  • 17. Estrategias transferencia (V)  Pasar un Map  Aprovechar capacidades de Mapped ActionForms  Se define el Map como propiedad del ActionForm (getMap, setMap)  Se incluyen métodos para recuperar propiedades mapeadas (getValue, setValue) public void setValue(String key, Object value) throws Exception { getMap().put(key,value); } public Object getValue(String key) throws Exception { return getMap().get(key); }  El objeto de datos del modelo deberá implementar método para pasarle el Map form.setMap(bean.getMap()); bean.setMap(form.getMap());  Conversión de tipos  Si capa de negocio espera tipos nativos la conversión se puede hacer en un método helper del ActionForm: public Map getTypedMap() { Map map = this.getMap(); String keyString = (String) map.get("key"); Integer keyInteger = new Integer(keyString); map.put("key",keyInteger); return map; }
  • 18. Estrategias transferencia (VI)  Utilizar reflexión  El paquete BeanUtils facilita el copiado de propiedades y la transformación automática de tipos BeanUtils.copyProperties(myBusinessBean,myActionForm); myBusinessOperation(myBusinessbean); BeanUtils.copyProperties(myActionForm,myBusinessBean);  Si se requiere hacer conversión a tipos no nativos (p.e. Timestamp) se pueden registrar conversores con BeanUtils
  • 19. Estrategias transferencia (VII)  Utilizar clase adaptadora  Es llevar el código a una clase intermedia // Get data into ActionForm DataBean dBean = new DataBean(); dBean.execute(something); AdaptorBean aBean = new AdaptorBean(dBean); aBean.populate(form); // Fetch data from ActionForm AdaptorBean adaptor = new AdaptorBean(new DataBean()); BaseForm actionForm = (BaseForm) form; adaptor.set(actionForm); DataBean model = (DataBean) adaptor.getBean(); data.execute();