You are on page 1of 30

11

Personalización de Acciones

Copyright © 2004, Oracle. Todos los derechos reservados.


Objetivos

Al finalizar esta lección, debería estar capacitado


para hacer lo siguiente:
• Describir la estructura y los elementos XML de
Struts
• Describir la anatomía de una acción
• Utilizar el método de ejecución para mejorar el
comportamiento de una acción
• Describir el uso de los beans de pantalla
• Utilizar un bean de pantalla dinámico

Copyright © 2004, Oracle. Todos los derechos reservados.


Archivo de Configuración de Struts

• Es un archivo de tipo XML


• Es el descriptor de recursos de aplicación
• El servlet lo utiliza para determinar las acciones
que se van a realizar

<struts-config>
<action-mappings>
<action path="/action1"/>
<forward name="success" path="/page1.do"/>
</action>
</action-mappings>
<message-resources
parameter="view.ApplicationResources"/>
</struts-config>

Copyright © 2004, Oracle. Todos los derechos reservados.


Creación de una Clase de Acción

• En el menú contextual, seleccione “Go to Code”.


• O haga clic dos veces en la acción.
• Especifique un nombre para la acción.

/auth

Copyright © 2004, Oracle. Todos los derechos reservados.


Código por Defecto de una Acción

public class AuthUserAction extends Action


{
/* This is the main action called from the Struts
framework.*/
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
return mapping.findForward("success");
}
}

Copyright © 2004, Oracle. Todos los derechos reservados.


Reenvíos

success
Los reenvíos se pueden definir: /page1
• Mediante el uso del
diagrama de flujo de páginas
/authUser
• En el archivo XML
• En el panel Structure failure
/page2

<action path="/authUser"
type="view.AuthUserAction">
<forward path="/page1.do" name="success"/>
<forward path="/page2.do" name="failure"/>
</action>

Copyright © 2004, Oracle. Todos los derechos reservados.


ActionForward de una Clase de Acción

• El parámetro de retorno de ActionForward


especifica dónde enviar el control.
• La nomenclatura por defecto de un reenvío simple es
success.
• El método execute()se puede personalizar:
– Se puede agregar más código.
– Se pueden especificar otros reenvíos.
– Se realiza un reenvío adecuado para una prueba
condicional.
• El nombre de reenvío representa un nombre lógico.
• Un reenvío también puede ser un reenvío global.

Copyright © 2004, Oracle. Todos los derechos reservados.


Creación de Reenvíos Globales

• Un reenvío global es como cualquier reenvío, pero


cualquier acción puede acceder a él.
• El reenvío global se define en el archivo de
configuración.
<global-forwards>
<forward name="help" path="/help.do"/>
</global-forwards>

• El reenvío global se especifica en la clase de acción.


return mapping.findForward("help");

Copyright © 2004, Oracle. Todos los derechos reservados.


Beans de Pantalla

User Name
Conexión
Password
Logon

Envío

authUser
Rellena

logonBean

menú

Copyright © 2004, Oracle. Todos los derechos reservados.


Beans de Pantalla

• Un bean de pantalla se utiliza para transportar datos


entre una página y una acción.
• Puede ser estático:
– Se define como una clase FormBean
– Contiene métodos set(), get(), y reset()para cada
campo
– Contiene un método validate() para verificar la
entrada de usuario
• Puede ser dinámico:
– Cada campo está especificado en struts.config.xml
– No requiere código Java

Copyright © 2004, Oracle. Todos los derechos reservados.


Creación de un Bean de Pantalla Estático
• Cree una acción en el editor de flujo de páginas.
• Haga clic con el botón derecho del mouse y seleccione
“Go to FormBean”.
• Especifique un nombre (agregue al nombre el sufijo
“Form”).

/authUser

• Aparece un nuevo icono.

/authUser

Copyright © 2004, Oracle. Todos los derechos reservados.


Ejemplo: Bean de Pantalla Estático

public class AuthUserActionForm extends ActionForm

{
String username;
public String getUsername()
{ return username; }
public void setUsername(String newUsername)
{ username=newUsername; }

public void reset( …

public ActionErrors validate( …


}

Copyright © 2004, Oracle. Todos los derechos reservados.


Beans de Pantalla Dinámicos

• Se trata de una forma alternativa de conseguir que


una acción tenga acceso a los campos entrantes
de una página.
• La clase de bean de pantalla no es necesaria.
• Los métodos definidores (set) y de obtención (get)
no son necesarios.
• Los nombres de campo se especifican en el
archivo struts-config.xml.
• Se pueden agregar nuevos campos de forma
dinámica.

Copyright © 2004, Oracle. Todos los derechos reservados.


Creación de una Pantalla Dinámica

1. Cree un bean de pantalla desde el panel Structure.


2. Especifique
org.apache.struts.action.DynaActionForm como
el tipo para el bean.
3. Cree una nueva propiedad de pantalla para cada
campo.
<form-bean name="logonBean"
type="org.apache.struts.action.DynaActionForm">
<form-property name="username" type="java.lang.String"/>

Copyright © 2004, Oracle. Todos los derechos reservados.


Uso del Bean en una Acción

• Mediante el uso de un bean estático:


– Cree y convierta el tipo ActionForm
– Utilice el método getXxx()
AuthUserActionForm authForm = (AuthUserActionForm) form;
String username=authForm.getUsername();

• Mediante el uso de un bean dinámico:


– Convierta el objeto de pantalla transferido al método
execute()a un tipo DynaActionForm

String username=(String)
((DynaActionForm)form).get("username");

Copyright © 2004, Oracle. Todos los derechos reservados.


Flujo de Páginas de Ejemplo

<action-mappings>
Conexión <action path="/logon“
forward="/logon.jsp"/>
<action path="/authUser"
name="logonBean"
type="view.AuthUserAction">
failure <forward
path="/logon.do“
name="failure"/>
authUser <forward
path="/menu.do“
name="success"/>
success </action>
<action path="/menu"
forward="/menu.jsp"/>
</action-mappings>
menú

Copyright © 2004, Oracle. Todos los derechos reservados.


Flujo de Páginas de Ejemplo: Elementos Struts

<action-mappings>
<action path="/logon“
Conexión forward="/logon.jsp"/>

<action path="/authUser"
name="logonBean"
failure type=" view.AuthUserAction ">
<forward
path="/logon.do“
authUser name="failure"/>
<forward
path="/menu.do“
success name="success"/>
</action>

menú <action path="/menu"


forward="/menu.jsp"/>
</action-mappings>

Copyright © 2004, Oracle. Todos los derechos reservados.


Flujo de Páginas de Ejemplo: Elementos Struts

<action-mappings>
<action path="/logon“
Conexión forward="/logon.jsp"/>

<action path="/authUser"
name="logonBean"
type=" view.AuthUserAction ">
failure
<forward
path="/logon.do“
authUser name="failure"/>

<forward
success path="/menu.do“
name="success"/>
</action>

<action path="/menu"
menú forward="/menu.jsp"/>
</action-mappings>

Copyright © 2004, Oracle. Todos los derechos reservados.


Flujo de Páginas de Ejemplo: Bean de Pantalla

User Name
Conexión
Password
Logon

failure Envío

authUser

success
logonBean

menú

Copyright © 2004, Oracle. Todos los derechos reservados.


Flujo de Páginas de Ejemplo: Bean de Pantalla

Conexión

<form-beans>
<form-bean
failure name="logonBean"
type="org.apache.struts.
action.DynaActionForm">
authUser
<form-property
name="username"
success type="java.lang.String"/>

<form-property
name="password"
type="java.lang.String"/>
menú </form-bean>
</form-beans>

Copyright © 2004, Oracle. Todos los derechos reservados.


Flujo de Páginas de Ejemplo

User Name
Conexión
Password
Logon

failure Envío

authUser
Transferido a Rellena

success
logonBean

menú

Copyright © 2004, Oracle. Todos los derechos reservados.


Flujo de Páginas de Ejemplo: Clase de Acción

public ActionForward execute(ActionMapping mapping,


ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws IOException,
ServletException
{
DynaActionForm LAF = (DynaActionForm) form;
String un = (String)LAF.get("username");
String pw = (String)LAF.get("password");
if (un.equals("Scott")) {
return mapping.findForward("success");
} else
return mapping.findForward("failure");
}

Copyright © 2004, Oracle. Todos los derechos reservados.


Flujo de Páginas de Ejemplo

User Name
Conexión
Password
Logon

failure Envío

authUser
Transferido a Rellena

success
logonBean

menú

Copyright © 2004, Oracle. Todos los derechos reservados.


Beans de Pantalla, Acciones de Datos y
Páginas de Datos

• ADF crea un bean de pantalla de forma automática


cuando se crean:
– Acciones de datos
– Páginas de datos
• El bean de pantalla ADF se denomina DataForm.
• DataForms no requiere código personalizado:
– No es necesaria ninguna clase de bean de pantalla
estático.
– No es necesaria ninguna declaración de bean de
pantalla dinámico.
• ADF utiliza estos objetos para gestionar los datos
de pantalla.

Copyright © 2004, Oracle. Todos los derechos reservados.


Resumen

En esta lección ha aprendido a:


• Describir la estructura y los elementos XML de Struts
• Describir la anatomía de una acción
• Utilizar el método de ejecución para mejorar el
comportamiento de una acción
• Describir el uso de los beans de pantalla
• Utilizar un bean de pantalla dinámico

Copyright © 2004, Oracle. Todos los derechos reservados.


Práctica 11-1: Visión General

Esta práctica cubre los siguientes temas:


• Uso del diagrama de flujo de páginas
• Adición de acciones de datos
• Adición de páginas de datos
• Creación de beans de pantalla

Copyright © 2004, Oracle. Todos los derechos reservados.


Práctica 11-1

Copyright © 2004, Oracle. Todos los derechos reservados.


Práctica 11-1

Copyright © 2004, Oracle. Todos los derechos reservados.


Práctica 11-1

Copyright © 2004, Oracle. Todos los derechos reservados.


Práctica 11-1

Copyright © 2004, Oracle. Todos los derechos reservados.

You might also like