PDA

View Full Version : [STRUTS] Gestione di una tabella


loris_p
29-05-2007, 19:39
Ciao a tutti, il mio problema è:
ho una tabella stampata in una jsp che prende un'oggetto "users" dalla request e stampa una riga per ogni utente. Il tutto è realizzato con Struts, perciò ho una action che genera il suddetto oggetto.
In questa tabella ora vorrei aggiungere le operazioni "modifica" ed "elimina" in modo che venga fuori una cosa del tipo:

NOME | COGNOME | OPERAZIONI |
Pinco Pallino Modifica | Elimina
Paolino Paperino Modifica | Elimina

Dove i vari "Modifica" ed "Elimina" sono dei link o dei pulsanti..insomma la maniera più classica per realizzare un CRUD di base..
Il fatto è che con Struts non l'ho mai fatto quindi mi serviva il parere di una persona più esperta di me per sapere qual'è il modo migliore per affrontare il problema.
Ho visto che esistono le LookupDispatchAction che sembrerebbero fare al caso mio, però come faccio a passare alla action (ad esempio quella responsabile della cancellazione) l'id dell'oggetto da cancellare?

orpheus
30-05-2007, 08:33
Sono un pelo arrugginito..si la LookupDispatchAction fa al caso tuo e tra l'altro e' piu' comoda poi x gestire il codice, almeno IHMO.

beh se usi i link (caso in cui basta la DispatchAction), il parametro id basta che lo appendi normalmente all url di invocazione della action e dal metodo della action lo recuperi con il classico httpServletRequest.getParameter("nome_parametro_id").


nel tuo caso dovrebbe essere na cosa

action.do?mode=edit&id=234

dove mode e' il parametro settato nello struts-config.xml per recuperare l'esatto metodo dlla DispatchAction da invocare.

ally
30-05-2007, 08:44
...le soluzioni sono due...

...potresti aggiungere dei bean nel form e alimentarli dopo il submit tramite javascript :


function erase(form) {

form.operazione.value = 'erase';

if(window.confirm("confermare?"))
form.submit();
else
return false;
}


...ma tale sistema funziona bene solamente per piu' pulsanti generici sul form...per la possibilità di alimentare una tabella e permettere operazioni comuni su specifici elementi di questa potresti usare un passaggio di parametri alla action...

...alimenti un arrayList con i dati che ti serviranno per la tabella...poi tramite taglib crei la tabella aggiungendo i link alle operazioni che quetsa dovrà esporre...

<logic:iterate id="array" name="array" >
<tr>
<td>
<bean:write name="array" property="descrizione"/>
</td>
<td>
<bean:write name="array" property="descrizione"/>
</td>
<td>
<a href="/action.do?req=erase&domain=<bean:write name="array" property="id"/>">
<bean:message key="label.table.info"/> <bean:write name="array" property="descrizione"/>
</a>
</td>
<td>
<a href="/action.do?req=modify&id=<bean:write name="array" property="id"/>">
<bean:message key="label.table.modify"/> <bean:write name="array" property="sescrizione"/>
</a>
</td>
</tr>
</logic:iterate>

...gli attributi id e req rappresenteranno l'id dell'oggetto da modificare od elimanre e l'operazione da eseguire su esso...
...tali attributi li recupererai nella action tramite il codice sottostante...nel caso id e req siano valorizzati (correttamente) ti comporterai di conseguenza...


String var = request.getParameter("req");
if (var==null)
var="";
String id = request.getParameter("id");
if (id==null)
id="";

...ciao...

loris_p
30-05-2007, 18:39
Ok allora proverò con LookupDispatchAction o DispatchAction e vi farò sapere..
Grazie a tutti :)