Login
Cerca all'interno di JavaPortal
Help
Home Page Documentazione Forum Progetti Partner Pubblica!
Documentazione > Tutorial > Struts: mini how-to all'uso delle indexed properties
Modifica Impostazioni
Hide
Best Practices
EJB
Frameworks
Howto
J2EE
J2ME and Wireless
J2SE
JSP e Servlet
Java Application Server
Java IDE/Tools
Java Media
Java Security
Java Sys Admin
Java e XML
Java e SQL
OpenSource Java
Patterns
Repository
Tesi
UML
Web Services
Slide
White Paper di jws.it
project management
Eventi
Groovy

Hai una tesi in Java?
Tesine preparate
per esami?
Pubblica tutto su
JavaPortal!

Scrivi al nostro staff


Google Noop


Un giorno le macchine riusciranno...
a risolvere tutti i problemi, ma mai nessuna di esse potra' porne uno. Einstein


OpenOffice & MySql - Licenza per Documentazione Libera GNU


Rss Feed
Home Page
Articoli
News
Forum
Classi

  Visualizza Commenti (1) Aggiungi Commento    
Add to Shortcuts
 
Vota l'articolo
Struts: mini how-to all'uso delle indexed properties
By Giuseppe Peletti
7 giugno 2005

  Struts: mini how-to all'uso delle indexed properties

Questo documento non ha il pretenzioso scopo di spiegare qualcosa, solo di raccontare come ho risolto un problema che altre persone possono avere, infatti l'idea di questo articoletto è nata proprio sul forum di JavaPortal.

Il problema che ho dovuto risolvere è il seguente: gestire il submit di un form di n righe in cui una proprietà è rappresentata da un radiobutton.
Ad esempio recupero da un database un elenco di nominativi, li mostro in un form, e poi eseguo un update di quei dati.

Schema d'esempio:
database ---> action + actionForm ---> jsp (mostra i dati)
jsp ---> action + actionForm ---> database (update dei dati )


Un html form di questo tipo avra' associato un formBean le cui proprietà sono di tipo String array.
Esempio form: n righe del tipo
<input type="text" name="nome" >
<input type="radio" name="sex" value="m" >
<input type="radio" name="sex" value="f" >

Per ogni riga devo utilizzare gli stessi name per i campi, cosi' Struts precompilerà un formBean del tipo:

public class myForm extends ActionForm {
        String[] nome;
        String[] sex;

        // relativi setter e getter omessi
        }

Il problema nasce nel momento in cui ho appunto piu' di una riga nel form html: il radiobutton sarà mutualmente esclusivo per tutto il form e non per ogni singola riga; questo è dovuto al fatto che su ogni riga i radiobutton hanno gli stessi nomi.
Per ovviare a questo inconveniente utilizzo una indexed property per descrivere i radiobutton sia nel bean che nel form html.

Il nuovo bean sara':

public class myForm extends ActionForm {
String[] nome;
String[] sex;

        public void setStringIndexed( int index, String value ) {
                this.sex[index] = value;
        }

        public String getStringIndexed( int index ) {
                return this.sex[index];
        }
        // setter e getter per nome invariate
  }

La action precompila il formBean con i dati derivanti da database.
Quando dovra' precompilare il campo "sex" chiamerà il metodo setStringIndexed settando un valore diverso per ogni entry.
Ad esempio:


........
// ciclo per ogni record derivante da database
int i = 0;
while( rs.next() ) {

formBean.setStringIndexed(i, ""+i);
i++;

}
.......


L'importante è che ogni valore di stringIndexed sia univoco.
Cosi' facendo (anche se non ho il campo "sex" nel database) ho un formBean con proprietà String array di lunghezza n, e uno stringIndexed con valori tutti diversi.

Nella jsp invece avro' qualcosa del tipo:


  <%
        (for int i = 0; i < formBean.getNome().length; i++){
        %>
                <input type="text" name="nome" >
                <input type="radio" name="<%=myForm.getStringIndexed(i)%>" value="m" >
                <input type="radio" name="<%=myForm.getStringIndexed(i)%>" value="f" >
        <%
        }%>

Questo è tutto!.
Nella action recupero il formBean come sempre fatto, e recupero una ad una le proprietà.

Spero che questo documento possa essere intellegibile ed utile a qualcuno.
I consigli e suggerimenti sono sempre ben accetti.

link di riferimento all'how to ufficiale di struts:

http://jakarta.apache.org/struts/faqs/indexedprops.html

Username:
Password:
To sign up for an account, click register... Register
Hide





Powered By



Campagna Anti-IF


Skin


PARTNER
Zio Budda
HostingJava


LICENZA



Eccetto dove diversamente specificato, i contenuti di questo sito sono rilasciati sotto licenza Creative Commons

Sitemap  © 2002-2004 Copyright Information. Privacy . Today is domenica 1 agosto 2010