Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Componenti View di Struts

Esaminiamo come applicare i tag dalla libreria di Struts, utilizzare bean ActionForm e DynaActionForm e incorporare viste in applicazioni Struts
Esaminiamo come applicare i tag dalla libreria di Struts, utilizzare bean ActionForm e DynaActionForm e incorporare viste in applicazioni Struts
Link copiato negli appunti

La Struts View è una combinazione di JSP, custom tag librarie e oggetti Form Bean opzionali.

Le pagine JSP nel framework di Struts servono a due funzioni principali:

  • agire come livello presentazione dell'executed Controller action. La presentazione fatta così viene accompagnata da un set di custom tag il cui obiettivo è quello di iterare e reperire dati inviati alla pagina JSP target dell'azione del Controller;
  • reperire i dati richiesti per eseguire un'azione richiesta. Questa funzione viene condottam, spesso, con una combinazione di tag library e oggetti Form.

JSP che reperiscono dati

È possibile scegliere tra molti metodi quando si reperiscono dati attraverso JSP. Il più comune è l'utilizzo dell'elemento <form> e qualunque combinazione di sottoelementi <input>.

Quando si reperiscono dati da un form, Struts utilizza un set di Struts-specific JSP custom tag che emulano i tag HTML.

I bean ActionForm

Gli ActionForms sono JavaBeans che vengono utilizzati per incapsulare e validare la richiesta di dati submitted dalla richiesta HTTP.

Il metodo reset() di un ActionForm viene richiamato dal framework Struts con ciascuna richiesta che utilizza l'ActionForm definita. L'obiettivo di questo metodo è quello di effettuare un reset di tutti gli ActionForm's data member prima che vengano impostati i valori di una nuova richiesta.

Deploy di ActionForm nelle applicazioni Struts

L'elemento utilizzato per descrivere un ActionForm è l'elemento <form-bean>. Gli step di un form Submission di Struts sono:

  • Il controller crea o reperisce (se già esiste) un'istanza di bean ActionForm e lo memorizza in sessione se necessario.
  • Il controller chiama il metodo ActionFomr.reset() per impostare i data member su valori di default.
  • Il controller popola il bean con i dati che arrivano dal form.
  • Una volta che i data members del bean del form sono impostati, il controller invoca il metodo execute() dell'Action.

Un ActionForm alternativo: il bean DynaActionForm

Una cosa che si noterà nel momento in cui si sviluppano applicazioni Struts è la sua dipendenza con l'oggetto ActionForm.

Ci si troverà a sviluppare un nuovo oggetto ActionForm per ciascun pezzo di logica di business che si desidera eseguire. Si finisce per implementare un ActionForm per ogni Action. Questo processo può diventare estremamente dispendioso in termini di tempo, specialmente quando si catturano dati trivial (uno o due elementi) di un form.

Creazione di un DynaActionForm

Struts risolve il problema con l'introduzione di un ActionForm dinamico, chiamato DynaActionForm.

Questa versione dell'oggetto ActionForm permette allo sviluppatore di definire un oggetto Form utilizzando un XML entry nel file struts-config.xml:

Listato 1. Definisce un oggetto Form utilizzando un XML entry

<form-bean
  type="org.apache.struts.action.DynaActionForm"
  name="dynamicLookupForm">
    <form-property name="symbol" type="java.lang.String" initial="MSFT" />
</form-bean>

Utilizzo di DynaActionForm

Una volta definito il DynaActionForm è necessario modificare l'applicazione per utilizzarlo.

Listato 2. Applicazione per utilizzare DynaActionForm (Guarda codice completo)

..//
    Double price = null;

    String target = new String("success");

    if (form != null) {
      DynaActionForm lookupForm = (DynaActionForm) form;
    
      String symbol = (String) lookupForm.get("symbol");

      price = new Double(12.34);
    }
..//

Deploy della nuova azione (struts-config.xml):

Listato 3. Modifica da fare al file struts-config.xml

<action path="/DynamicLookup"
  type="prova.DynamicLookupAction"
  name="dynamicLookupForm">
  <forward name="success" path="/quote.jsp" />
  <forward name="failure" path="/dynamicindex.jsp" />
</action>

Il passo finale è quello di creare una pagina JSP che referenzi il DynaActionForm:

Listato 4. Pagina JSP che referenzia il DynaActionForm

<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<html>
<body>
    <html:form action="DynamicLookup">
        Symbol:<html:text property="symbol" />
        <html:submit/>
    </html:form>
<body>
<html>

Ti consigliamo anche