vuoi
o PayPal
tutte le volte che vuoi
In questo modo, quando seleziono
un parametro da “recipients” esso
viene aggiunto alla lista Current
Recipients. Tuttavia, quando ne
clicco un altro, questo viene subito
scambiato.
Quello che voglio ottenere è una
lista: quando clicco sul selezionabile
Add voglio che venga aggiunto alla
lista.
Quando seleziono un parametro
da add.new, questo viene inviato
alla stessa pagina in maniera
nascosta (“hidden”) con il nome
di “recipient”.
A questo punto, il <c:forEach> itera su
tutti i valori del parametro recipient e
va a stampare il valore dopo che il
parametro è stato ri-inviato alla stessa
pagina.
Inoltre, il <c:if> presente fa in modo che se il parametro passato all’inizio (param.addnew) è uguale
a un parametro che seleziono nuovamente dalla select (recipient), allora non lo inserisce
nell’elenco.
Con questo <c:if> permetto al tasto X, grazie a param[recipient] di eliminare la riga che voglio.
Esercizio 3 (CONTATORE)
Realizzare una pagina che sia in grado di contare il numero di volte che si è cliccato:
• (A) Posizionare un tasto e contare il numero di volte che si è cliccato su esso
• (B) Posizionare un href e contare il numero di volte che si è cliccato su di esso
• La funzionalità va realizzata tramite una sola pagina che richiami se stessa (C).
Con <c:set> la variabile count viene inizializzata a 0.
Con <c:if> controllo se il parametro count è presente nella richiesta (param.count). Se è presente,
significa che il modulo di submit è stato inviato e sto cercando di aggiornare il contatore. Se il
parametro count è presente questa istruzione imposta la variabile “count” al valore del parametro
“count”.
Nel modulo di submit ho un campo nascosto che contiene il valore del contatore incrementato di
1.
In questo caso, href reindirizza l’utente alla stessa pagina click.jsp ma con il parametro “count”
aggiornato al valore corrente del contatore incrementato di 1.
Quando si clicca sul link “Click!”, l’utente viene reindirizzato a click.jsp con il nuovo valore del
contatore come parametro.
ESERCIZIO 4 (CONTATORE)
Modificare l’esercizio precedente in modo che la pagina riesca a contare separatamente i click su
tasto e link.
• (A) Posizionare due contatori, uno dei quali sia associato al testo e un altro al link. Quando
si clicca su uno dei due controlli NON si deve perdere il conto dell’altro.
• (B) Realizzare l’esercizio inizialmente all’interno di una singola pagina
• (C) Successivamente spostare la logica che incrementa il solo contatore del link in una
pagina di action.
Per mantenere separati i due contatori, setto due variabili (countf per il tasto e counth per il link): il
funzionamento è lo stesso dell’esercizio precedente.
Tuttavia, devo mandare, sia con il link che con il tasto, la variabile dell’altro tipo, in modo che il
contatore non si resetti quando uso l’altro metodo.
Semplicemente, basta aggiungere un link che rimanda alla stessa pagina senza passaggio di
parametri per azzerare il contatore. (Ricomincia).
ESERCIZIO 5 (DATABASE)
• Creare la tabella findpassword2 mostrata in figura
• Codificare un algoritmo che cera una tabella HTML in cui le username compaiono in ordine
alfabetico e in cui eventuali successive ripetizioni sono oppresse e sostituite dal segno (--).
• Si codifichi un algoritmo che crea una tabella HTML in cui la cella di ogni username si
espanda tante righe quante sono le domande a cui essa si riferisce.
Inizialmente viene settata la variabile “uname_precedente” con un valore iniziale vuoto. Questa
variabile verrà utilizzata per tenere traccia dell’uname precedente durante l’iterazione.
Il <c:forEach> itera sui risultati della query memorizzti in “rset_domanda”. Ogni risultato viene
memorizzato nella variabile “domanda”.
A questo punto, se “${domanda.uname == username_precedente}”, viene stampato il valore “- -“
altrimenti viene stampato l’uname effettivo.
Alla fine di ogni iterazione, viene aggiornata la variabile “uname_precedente” con il valore
corrente di “domanda.uname” in modo che nella prossima iterazione possa essere confrontato con
l’uname successivo.
ESERCIZIO
Si definisca con c:set una stringa che consiste in una sequenza contente un numero arbitrario di
lettere separate da virgole.
• Utilizzando c:forTokens si spezzi la stringa in tanti elementi quante sono le lettere e si crei
una tabella HTML di 3 colonne, in cui ciascuna cella contiene una lettera distinta.
Durante il ciclo <c:forTokens> viene utilizzata una variabile “count” per tenere traccia del numero
di elementi che sono stati aggiunti alle colonne della tabella, inizializzata al valore 0.
Ogni volta che il valore “count” diventa un multiplo di 3 (count % 3 == 0) viene inserito un tag
“</tr><tr> per chiudere la riga attuale e iniziarne una nuova. In questo modo, ogni riga della tabella
conterrà al massimo 3 colonne.
Dopo l’inserimento di ogni elemento la variabile “count” viene incrementata di 1.