Gestire due form con un unico controller SPRING MVC

di il
4 risposte

Gestire due form con un unico controller SPRING MVC

Ciao ragazzi, sto sviluppando una pagina JSP con due form: uno relativo all'aggiornamento del cliente, cioè updatecustdet e l'altro relativo all'eliminazione (deletefromdetailslist). Il primo funziona correttamente, mentre il secondo no. Purtroppo non mi risulta qual'è il problema.

Potete aiutarmi perfavore?

JSP
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>Aggiorna cliente</title>

</head>
<body>
<form action="../updatecustdet" method="post">
<c:forEach var="customer" items="${listCustomer}">
<input type="hidden" name="codicefiscale" value="${customer.codicefiscale}" />
								
Cognome:           <input type="text" name="cognome" value="${customer.cognome}" />
		
Nome:              <input type="text" name="nome" value="${customer.nome}" />
	    
Data nascita:      <input type="text" name="datanascita" value="${customer.datanascita}" />

Indirizzo:         <input type="text" name="indirizzo" value="${customer.indirizzo}" />

Numero telefono:   <input type="text" name="numerotelefono" value="${customer.numerotelefono}" />

Email:             <input type="text" name="email" value="${customer.email}" />

<tr>		    
<input type="submit" value="Salva cliente" />

</tr>	
</c:forEach>	
</body>
</html>

4 Risposte

  • Re: Gestire due form con un unico controller SPRING MVC

    alex989 ha scritto:


    Ciao ragazzi, sto sviluppando una pagina JSP con due form: uno relativo all'aggiornamento del cliente, cioè updatecustdet e l'altro relativo all'eliminazione (deletefromdetailslist). Il primo funziona correttamente, mentre il secondo no.
    Mi ricordo che avevi già posto questa questione qualche settimana fa. In quella discussione non avevo notato una cosa che invece ho notato ora nel codice JSP. Andiamo con ordine.

    Prima questione:

    Per il update hai prima aperto il form

    <form action="../updatecustdet" method="post">

    e poi messo il

    <c:forEach ........

    Questo vuol dire che il ciclo è dentro il form, quindi se hai 2+ customer, vengono tutti "srotolati" dentro lo stesso form!! Se avessi 4 customer, ti ritrovi ad avere un form con 4 input name="cognome", 4 input name="nome" ecc....
    E poi è vero che il submit è nel ciclo quindi per ciascun customer. Ma questo al form non interessa, se clicchi uno degli N pulsanti, il form invia TUTTO, ovvero i dati di tutti i customer emessi in output.

    In uno scenario come questo, come pensi che il tuo updateCustomer nel controller possa funzionare??? Te lo dico io, non funziona!

    Seconda questione:

    Per il delete hai fatto un form separato. E' assolutamente BEN distinto dal form e forEach precedente. Il punto è che:

    <input id="cust" name="customer" type="hidden" value="${customer.codicefiscale}"/>

    Quel customer cosa è e da dove arriva?? Tieni presente che il customer ce l'avevi DENTRO il <c:forEach> ma dopo il forEach non c'è e non ha alcun senso usarlo!

    ----------------------

    Riassumendo e concludendo: se vuoi che per ciascun customer ci sia 1 form di update e 1 form di delete, si può fare benissimo MA devi ristrutturare e innestare ben diversamente le cose nella JSP.
  • Re: Gestire due form con un unico controller SPRING MVC

    andbin ha scritto:


    alex989 ha scritto:


    Ciao ragazzi, sto sviluppando una pagina JSP con due form: uno relativo all'aggiornamento del cliente, cioè updatecustdet e l'altro relativo all'eliminazione (deletefromdetailslist). Il primo funziona correttamente, mentre il secondo no.
    Mi ricordo che avevi già posto questa questione qualche settimana fa. In quella discussione non avevo notato una cosa che invece ho notato ora nel codice JSP. Andiamo con ordine.

    Prima questione:

    Per il update hai prima aperto il form

    <form action="../updatecustdet" method="post">

    e poi messo il

    <c:forEach ........

    Questo vuol dire che il ciclo è dentro il form, quindi se hai 2+ customer, vengono tutti "srotolati" dentro lo stesso form!! Se avessi 4 customer, ti ritrovi ad avere un form con 4 input name="cognome", 4 input name="nome" ecc....
    E poi è vero che il submit è nel ciclo quindi per ciascun customer. Ma questo al form non interessa, se clicchi uno degli N pulsanti, il form invia TUTTO, ovvero i dati di tutti i customer emessi in output.

    In uno scenario come questo, come pensi che il tuo updateCustomer nel controller possa funzionare??? Te lo dico io, non funziona!

    Seconda questione:

    Per il delete hai fatto un form separato. E' assolutamente BEN distinto dal form e forEach precedente. Il punto è che:

    <input id="cust" name="customer" type="hidden" value="${customer.codicefiscale}"/>

    Quel customer cosa è e da dove arriva?? Tieni presente che il customer ce l'avevi DENTRO il <c:forEach> ma dopo il forEach non c'è e non ha alcun senso usarlo!

    ----------------------

    Riassumendo e concludendo: se vuoi che per ciascun customer ci sia 1 form di update e 1 form di delete, si può fare benissimo MA devi ristrutturare e innestare ben diversamente le cose nella JSP.
    perfetto, ho risolto. Grazie per la risposta chiara e precisa. UpdateCustomer funzionava correttamente come lo avevo fatto, il problema era solo sul delete. Grazie ancora ^_^
  • Re: Gestire due form con un unico controller SPRING MVC

    alex989 ha scritto:


    UpdateCustomer funzionava correttamente come lo avevo fatto
    No, ti funzionava solo per 1 customer o comunque solo per il primo di N.

    P.S. dato che la generazione del HTML completo è server-side (il browser NON vede <c:out>, <c:forEach> ecc...), il consiglio è molto semplice: guarda da browser il HTML della pagina (View page source o similare a seconda del browser) e .... te ne rendi subito conto ...
  • Re: Gestire due form con un unico controller SPRING MVC

    andbin ha scritto:


    alex989 ha scritto:


    UpdateCustomer funzionava correttamente come lo avevo fatto
    No, ti funzionava solo per 1 customer o comunque solo per il primo di N.

    P.S. dato che la generazione del HTML completo è server-side (il browser NON vede <c:out>, <c:forEach> ecc...), il consiglio è molto semplice: guarda da browser il HTML della pagina (View page source o similare a seconda del browser) e .... te ne rendi subito conto ...
    Si è vero, scusami ma su questa cosa non avevo fatto caso. Sono alle prime armi. Ti ringrazio tanto tanto
Devi accedere o registrarti per scrivere nel forum
4 risposte