PDA

View Full Version : [struts-javascript]Form con 2 submit


ATOMIX84
25-03-2010, 13:14
Salve a tutti ho questo piccolo problema..vorrei creare un form con due submit ognuno dei quali mi genera un dispatch diverso:

<SCRIPT language="JavaScript">
function dispatch()
{
switch(document.pressed){
case "Inserisci":
document.scelta.action="/ricercaAction.do?dispatch=Inserisci";
break;
case "Ricerca":
document.scelta.action="/ricercaAction.do?dispatch=Ricerca";
break;
case "All":
document.scelta.action="/ricercaAction.do?dispatch=All";
break;
}

return true;
}
</SCRIPT>


<html:form name="scelta" onsubmit="return dispatch(); ">

<html:submit onclick="document.pressed=Ricerca" value="Cerca" />
<html:submit onclick="document.pressed=Inserisci" value="Inserisci" />
<html:submit onclick="document.pressed=All" value="All" />
</tr>
</table>
</html:form>

quando avvio il programma mi da errore dicendo che:
/jsp/cerca.jsp(37,4) Attribute name invalid for tag form according to TLD
cos'è che sbaglio?grazie ancora

ally
25-03-2010, 14:29
...il tag html dovrebbe specificare l'action di riferimento...ricordati di chiuderlo...


<html:form action="tuaAction" method="post">


...e scateni il javascript alla pressione del tasto...


<input type="button" value="inserisci" onClick="dispatch() return false;" />


...ciao Andrea...

ATOMIX84
25-03-2010, 14:59
Ciao Andrea ti ringrazio molto per avermi risposto,sei stato gentilissimo!Ho qualche problemino a capire la tua spiegazione in quanto non sono molto esperto ancora in materia:D ..potresti spiegare più dettagliatamente illustrandomi come fare e cosa cambiare del codice che ti ho scritto per favore?
Grazie ancora un saluto

ally
25-03-2010, 15:07
...qui (http://www.hwupgrade.it/forum/showthread.php?t=1489299) trovi qualche spunto interessante a riguardo...molto in sinto tu vorresti che la action che riceve la pagina in gestione si comporti in maniera diversa a seconda del pulsantone premuto...ti consiglio di implementare nel tuo form una variabile hidden che impartisce alla action cio' che deve fare evitando di passare parametri tramite url...tale variabile verrà alimentata in maniera suimile a quanto stai facendo...nella discussione linkata c'è un esempietto chiarificatore...

...ciao Andrea...

ATOMIX84
27-03-2010, 11:30
<SCRIPT language="JavaScript">
function dispatch()
{
switch(document.pressed.value){
case "Inserisci":
document.scelta.action="/ricercaAction.do?dispatch=Inserisci";
break;
case "Ricerca":
document.scelta.action="/ricercaAction.do?dispatch=Ricerca";
break;
case "All":
document.scelta.action="/ricercaAction.do?dispatch=All";
break;
}

return true;
}
</SCRIPT>

<html:form name="scelta" onsubmit="return dispatch(); ">
<input type="hidden" name="pressed" value="" />

<th scope="col">CAMPI</th>
<th scope="col">INPUT</th>
</tr>
<tr>
<td class="leftCell">Nome:</td>
<td class="rightCell"><html:text property="nome"></html:text></td>
</tr>
<tr>
<td class="leftCell">Cognome:</td>
<td class="rightCell"><html:text property="cognome"></html:text></td>
</tr>
<tr>
<td class="leftCell">Email:</td>
<td class="rightCell"><html:text property="email"></html:text></td>
</tr>
<tr>

<td class="rightCell"><html:submit onclick="document.pressed.value='Ricerca'" value="Cerca" /></td>
<td class="rightCell"><html:submit onclick="document.pressed.value='Inserisci'" value="Inserisci" />
<html:submit onclick="document.pressed.value='All'" value="All" /></td>
</tr>
</table>
</html:form>


ma mi da sempre ques'errore:Attribute name invalid for tag form according to TLD

non capisco dove sbaglio!!

ally
27-03-2010, 11:53
...onsubmit e name son corretti per il tag html:form...hai importato la tag-lib?...


<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>


...ciao Andrea...

ally
27-03-2010, 11:55
...onsubmit e name son corretti per il tag html:form...hai importato la tag-lib?...


<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>


...ciao Andrea...

...mi corrego...non penso che il cruccio sia qui...il file web.xlm è corretto?...specificato form-bean e action?...

...ciao Andrea...

ATOMIX84
27-03-2010, 12:02
in struts-config ho questo:

<action path="/ricercaAction" type="it.testhibernatestruts.action.RicercaAction" name="ricercaForm" scope="session" parameter="dispatch" validate="false">
<forward name="search" path="/jsp/view.jsp" />
<forward name="fail" path="/jsp/fail.jsp" />
<forward name="insert" path="/jsp/cerca.jsp" />
</action>
ma prima di mettere gl'ultimi due tasti nello stesso form(li avevo fuori con altri due form)funzionava quindi il problema è in qualcosa scritta male dopo:muro:

ATOMIX84
27-03-2010, 12:25
ho notato che il problema sta in <html:form name="scelta" onsubmit="return dispatch(); ">
non posso scrivere name="scelta"
ma allora se non do un nome al form come faccio a cambiare l'acrtion con document.scelta.action=?

ally
27-03-2010, 12:56
...scusa ma l'action utilizzata della pagina si chiama scelta o ricerca?...

...ciao Andrea...

ATOMIX84
27-03-2010, 13:03
il tasto cerca mi manda a:
/ricercaAction.do?dispatch=Ricerca
il tasto all mi manda:
/ricercaAction.do?dispatch=All
e il tasto inserisci a:
/ricercaAction.do?dispatch=Inserisci

che sono metodi della stessa action /ricercaAction.do