Inviare una stringa al controller usando Thymeleaf

di il
2 risposte

Inviare una stringa al controller usando Thymeleaf

Come passo al controller la stringa "Aggiungi" oppure la stringa "Rimuovi"? Cosa devo scrivere nel file html?
Io vorrei che premendo su "Aggiungi" al controller arrivasse la stringa "Aggiungi", idem con "Rimuovi"...
Ho già fatto mille prove ma nessuna è andata a buon file...
Nel controller pensavo if(datiInseriti.getOperazione().equals("Aggiungi")... ecc...

<form th:action="@{/gestione-ruoli}" th:object="${GestioneRuoli}" method="POST" id="gestioneRuoli">
    <table>
        <tr>
            <td><input type="submit" th:field="*{operazione}" th:value="Aggiungi" /></td>
            <td><input type="submit" th:field="*{operazione}" th:value="Rimuovi" /></td>
        </tr>
    </table>
</form>

public class GestioneRuoli {

    private String operazione;

    public GestioneRuoli() {
    }

    public GestioneRuoli(String operazione) {
        this.operazione = operazione;
    }

    public String getOperazione() {
        return operazione;
    }

    public void setOperazione(String operazione) {
        this.operazione = operazione;
    }

}

@RequestMapping(value = "/gestione-ruoli", method = RequestMethod.POST)
    public String gestioneRuoliPost(
            Model model,
            @ModelAttribute("GestioneRuoli") GestioneRuoli datiInseriti,
            Principal principal
    ) {
	...
        return "gestione-ruoli";
    }

2 Risposte

  • Re: Inviare una stringa al controller usando Thymeleaf

    iBaffiPro ha scritto:


    Come passo al controller la stringa "Aggiungi" oppure la stringa "Rimuovi"? Cosa devo scrivere nel file html?
    Un <input> deve avere un name affinché il value venga inviato in request. È scritto su qualunque reference HTML, es. su MDN <input>:
    If an input has no name specified, or name is empty, the input's value is not submitted with the form!

    E mi pare che il th:field in <input> abbia senso principalmente con type="text". Con "submit" non saprei dire ora come si comporta. Banalmente: verifica il HTML generato! Viene generato il name (giusto, che ti aspetti)? Se sì, il problema è altrove. Se no, il problema è quello, th:field lì non serve.

    P.S.: lo ripeto. Controlla sempre il HTML generato se hai dubbi.
  • Re: Inviare una stringa al controller usando Thymeleaf

    Hai indovinato, con le tue modifiche ora funziona tutto alla perfezione!
    grazie infinite
Devi accedere o registrarti per scrivere nel forum
2 risposte