Ho questo oggetto:
public class VariabileSistema {
public Long id;
public String variabile;
public String valore;
public VariabileSistema(){
}
public VariabileSistema(Long id, String variabile, String valore) {
this.id = id;
this.variabile = variabile;
this.valore = valore;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getVariabile() {
return variabile;
}
public void setVariabile(String variabile) {
this.variabile = variabile;
}
public String getValore() {
return valore;
}
public void setValore(String valore) {
this.valore = valore;
}
}
e questa lista di oggetti:
public class VariabiliDiSistema {
public ArrayList<VariabileSistema> variabiliDiSistema;
public VariabiliDiSistema() {
}
public VariabiliDiSistema(ArrayList<VariabileSistema> variabiliDiSistema) {
this.variabiliDiSistema = variabiliDiSistema;
}
public ArrayList<VariabileSistema> getVariabiliDiSistema() {
return variabiliDiSistema;
}
public void setVariabiliDiSistema(ArrayList<VariabileSistema> variabiliDiSistema) {
this.variabiliDiSistema = variabiliDiSistema;
}
}
La lista di oggetti viene istanziata sulla base di alcune informazioni presenti a database:
INSERT INTO variabili_sistema (variabile, valore) VALUES ('registrazione', 'true') ON CONFLICT DO NOTHING;
INSERT INTO variabili_sistema (variabile, valore) VALUES ('login', 'true') ON CONFLICT DO NOTHING;
Quando sono nella pagina html, modifico il tag input di tipo radio e premo sul pulsante, vorrei poter passare al controller la lista di oggetti aggiornata in modo da poter editare conseguentemente il database.
Ho provato questa soluzione che funzione in andata (riesco a renderizzare correttamente la pagina con una chiamata di tipo GET) ma non in ritorno (quando premo sul pulsante al controller non arriva nulla).
<form th:action="@{/pannello-di-controllo}" th:object="${VariabiliDiSistema}" method="post" id="variabiliSistema">
<div th:switch="${VariabiliDiSistema != null}" th:remove="tag">
<div th:case="${true}" th:remove="tag">
<div th:each="VariabileSistema:${VariabiliDiSistema}" th:remove="tag">
<div th:switch="${
VariabileSistema.variabile != null &&
#strings.equals(VariabileSistema.variabile, 'registrazione')
}" th:remove="tag">
<div th:case="${true}" th:remove="tag">
<p>Gli utenti possono registrarsi sul sito:</p>
<input type="radio" id="registrazioneTrue" name="registrazione" value="true"
th:checked="${#strings.equals(VariabileSistema.valore, 'true')} ? 'checked'">
<label for="registrazioneTrue">si</label><br>
<input type="radio" id="registrazioneFalse" name="registrazione" value="false"
th:checked="${#strings.equals(VariabileSistema.valore, 'false')} ? 'checked'">
<label for="registrazioneFalse">no</label><br>
<br>
</div>
</div>
<div th:switch="${
VariabileSistema.variabile != null &&
#strings.equals(VariabileSistema.variabile, 'login')
}" th:remove="tag">
<div th:case="${true}" th:remove="tag">
<p>Gli utenti registrati possono eseguire la procedura di autenticazione:</p>
<input type="radio" id="loginTrue" name="login" value="true"
th:checked="${#strings.equals(VariabileSistema.valore, 'true')} ? 'checked'">
<label for="loginTrue">si</label><br>
<input type="radio" id="loginFalse" name="login" value="false"
th:checked="${#strings.equals(VariabileSistema.valore, 'false')} ? 'checked'">
<label for="loginFalse">no</label><br>
<br>
</div>
</div>
</div>
</div>
</div>
<input type="submit" value="Salva le modifiche">
</form>
Ho provato a scrivere questa nuova pagina:
<form th:action="@{/pannello-di-controllo}" th:object="${VariabiliDiSistema}" method="post" id="variabiliSistema">
<div th:switch="${VariabiliDiSistema!=null}" th:remove="tag">
<div th:case="${true}" th:remove="tag">
<div th:each="vCorrente, x:${VariabiliDiSistema.variabiliDiSistema}" th:remove="tag">
<div th:switch="${variabiliDiSistema[${x.index}].variabile != null &&
#strings.equals(variabiliDiSistema[${x.index}].variabile,'registrazione')}" th:remove="tag">
<div th:case="${true}" th:remove="tag">
<p>Gli utenti possono registrarsi sul sito:</p>
<input type="radio" id="registrazioneTrue"
th:name="|variabiliDiSistema[${x.index}].variabile|"
th:value="${vCorrente.getValore()}"
th:checked="${#strings.equals(variabiliDiSistema[${x.index}].valore,'true')}?'checked'">
<label for="registrazioneTrue">si</label><br>
<input type="radio" id="registrazioneFalse"
th:name="|variabiliDiSistema[${x.index}].variabile|"
th:value="${vCorrente.getValore()}"
th:checked="${#strings.equals(variabiliDiSistema[${x.index}].valore,'false')}?'checked'">
<label for="registrazioneFalse">no</label><br>
<br>
</div>
</div>
<div th:switch="${variabiliDiSistema[${x.index}].variabile != null &&
#strings.equals(variabiliDiSistema[${x.index}].variabile,'login')}" th:remove="tag">
<div th:case="${true}" th:remove="tag">
<p>Gli utenti registrati possono eseguire la procedura di autenticazione:</p>
<input type="radio" id="loginTrue"
th:name="|variabiliDiSistema[${x.index}].variabile|"
th:value="${vCorrente.getValore()}"
th:checked="${#strings.equals(variabiliDiSistema[${x.index}].valore,'true')}?'checked'">
<label for="loginTrue">si</label><br>
<input type="radio" id="loginFalse"
th:name="|variabiliDiSistema[${x.index}].variabile|"
th:value="${vCorrente.getValore()}"
th:checked="${#strings.equals(variabiliDiSistema[${x.index}].valore,'false')}?'checked'">
<label for="loginFalse">no</label><br>
<br>
</div>
</div>
</div>
</div>
</div>
<input type="submit" value="Salva le modifiche">
</form>
e poi ho fatto altri 10000 tentativi ma non risolvo.