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

Form di inserimento dati in Struts 2

In questo articolo vedremo come gestire una semplicissima maschera di inserimento dati usando il framework struts 2
In questo articolo vedremo come gestire una semplicissima maschera di inserimento dati usando il framework struts 2
Link copiato negli appunti

L'applicazione che presenteremo in questo articolo sarà volutamente dotata di poche e chiare funzionalità in modo che ci si possa soffermare sugli aspetti tecnologici ed implementativi. Presenteremo una maschera nella quale l'utente dovrà inserire il suo nome e cognome, con il successivo messaggio di benvenuto.

Nella nostra applicazione è necessaria una sola Action che chiameremo HtmlAction. L'Action validerà i dati inseriti dall'utente (nome e cognome) e lo redirigerà alla pagina di benvenuto, qualora i dati sono validi, oppure alla pagina di errore, qualora i dati non siano validi.

Il file di configurazione (struts.xml), per la nostra applicazione è il seguente:

Listato 1. File di configurazione struts.xml

<struts>
  <package name="html" extends="struts-default" namespace="/">
    <action name="HtmlAction" class="it.html.action.HtmlAction">
      <result name="input">/index.jsp</result>
      <result name="success">/welcome.jsp</result>
    </action>
  </package>
</struts>

Abbiamo definito due pagine JSP:

  • index.jsp che contiene la maschera di inserimento;
  • welcome.jsp che contiene il messaggio di benvenuto.

Mentre in Struts 1 i parametri di ciascuna Action vengono gestiti mediante un Form Bean, in Struts 2 i parametri vengono definiti direttamente nella Action. In entrambi i casi occorre implementare, per ciascun parametro, i classici metodi getter e setter che vengono richiamati automaticamente dal framework per la lettura e la scrittura.

La nostra action avrà due proprietà di tipo Stringa: nome e cognome.

Nel metodo execute della action verifichiamo che l'utente abbia impostato nome e cognome controllando la lunghezza delle stringhe. Qualora uno dei parametri è vuoto, riportiamo l'utente nella maschera di inserimento dati. Per segnalare un errore al framework è possibile usare il metodo addActionError che riceve in input il messaggio da far visualizzare. Naturalmente è corretto acquisire il messaggio d'errore direttamente dal resource bundle usando il metodo getText che va a leggere il messaggio corrispondente alla lingua dell'utente loggato.

Listato 2. Action

package it.html.action;

import java.util.ArrayList;
import java.util.List;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.util.LocalizedTextUtil;

public class HtmlAction extends ActionSupport{
  private static final long serialVersionUID = -6822656588379793714L;

  private String nome;
  private String cognome;
  
  public String getNome(){
    return nome;
  }
  public void setNome(String nome){
    this.nome = nome;
  }
  public String getCognome(){
    return cognome;
  }
  public void setCognome(String cognome){
    this.cognome = cognome;
  }
  
  public String execute() throws Exception {
    LocalizedTextUtil.addDefaultResourceBundle("Messaggi");

    if (nome.length() == 0){
      List<String> params = new ArrayList<String>(0);
      params.add(getText("nome"));
      addActionError(getText("campoObbligatorio", params));
      return INPUT;
    } else if (cognome.length() == 0) {
      List<String> params = new ArrayList<String>(0);
      params.add(getText("cognome"));
      addActionError(getText("campoObbligatorio", params));
      return INPUT;
    }
    return ActionSupport.SUCCESS;
  }
}

Il file per l'internazionalizzazione è il seguente (Messaggi.properties):

Listato 3. File per l'internazionalizzazione

titolo=Titolo della pagina
benvenuto=Benvenuto
nome=Nome
cognome=Cognome
campoObbligatorio=Il campo {0} è obbligatorio

La pagina index.jsp, che contiene la maschera di inserimento, contiene il form la cui action è HtmlAction che prenderà in carico la richiesta in seguito al submit dell'utente.

Listato 4. Pagina index.jsp

<s:i18n name="Messaggi">
  <s:form action="/HtmlAction.action" method="POST">
    <s:actionerror />
    <s:textfield key="nome" name="nome" />
    <s:textfield key="cognome" name="cognome" />
    <s:submit />
  </s:form>
</s:i18n>

Per inserire un campo di testo utilizziamo il comando <s:textfield> il cui parametro name deve corrispondere ad una delle proprietà della Action. Il framework richiamerà in modo automatico i metodi get e set della proprietà, per leggere e scrivere il valore corrispondente.

Mediante il tag <s:actionerror />, infine, è possibile stampare tutti gli errori riscontrati durante la validazione del form, cioè tutti quei messaggi che possiamo aggiungere nella action mediante il metodo addActionError.

La pagina welcome.jsp contiene soltanto la stampa del messaggio di benvenuto. Per stampare una delle proprietà della action è possibile utilizzare il tag <s:property />.

Listato 5. Pagina welcome.jsp

<s:i18n name="Messaggi">
  <s:text name="benvenuto" /> <s:property value="nome" /> <s:property value="cognome" />
</s:i18n>

Ti consigliamo anche