Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [Java/html - Spring Boot] Tymeleaf: Caricare la lista(esempio di fornitori)

    Buongiorno a tutti, sto cercando di caricare una lista con thymeleaf e ho pensato di inserire nel form il codice:

    codice:
    <select>    
              <!--<select th:each="fornitore : ${listFornitori}">-->
              <datalist th:each="fornitore : ${listFornitori}">
                        <option th:text="${fornitore.nome}"></option>
                </datalist>
     </select>
    Non ottengo alcun errore ma la lista(select) è vuota.

    Ci sono errori?
    jabjoint

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    codice:
    <select>    
              <!--<select th:each="fornitore : ${listFornitori}">-->
              <datalist th:each="fornitore : ${listFornitori}">
                        <option th:text="${fornitore.nome}"></option>
                </datalist>
     </select>
    Semplicemente:
    codice:
    <select ......attributi...... >
      <option th:each="fornitore : ${listFornitori}" th:text="${fornitore.nome}"></option>
    </select>

    Attenzione, devi anche mettere il value in option (non posso sapere cosa vuoi mettere ma presumo un Id del fornitore?) ... altrimenti il <select> serve a ben poco ....

    P.S. <select> e <datalist> sono due cose un pochino diverse. E datalist non sta dentro un select.
    Ultima modifica di andbin; 22-01-2023 a 17:43
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Semplicemente:
    codice:
    <select ......attributi...... >
      <option th:each="fornitore : ${listFornitori}" th:text="${fornitore.nome}"></option>
    </select>

    Attenzione, devi anche mettere il value in option (non posso sapere cosa vuoi mettere ma presumo un Id del fornitore?) ... altrimenti il <select> serve a ben poco ....

    P.S. <select> e <datalist> sono due cose un pochino diverse. E datalist non sta dentro un select.
    In verità metto il nome e poi si, recupero il fornitore con un ciclo, in base all' id che è definito auto increment(tramite GenerateValue, Type.Identity nella tabella)
    Mi sembra più semplice ricordare il nome anziché l'ID.
    In verità poi funziona anche col datalist, tuttavia penso sia superfluo, come fai notare...
    Il value serve a dare un valore predefinito se ricordo bene,non mi pare sia necessario, recupero tramite il name, del select l'informazione nel metodo richiamato dal post.
    Ultima modifica di jabjoint; 22-01-2023 a 22:51
    jabjoint

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    Il value serve a dare un valore predefinito se ricordo bene,non mi pare sia necessario, recupero tramite il name, del select l'informazione nel metodo richiamato dal post.
    Il value è l'identificativo della option (non è visibile all'utente) ed quello che viene inviato, per l'option "selected", al submit del form. Quindi è ovvio che serve se devi inviare il valore del select.

    Se poi vuoi mantenere il selected tra più request o comunque dal backend al frontend, allora devi fare quanto è scritto nella documentazione: https://www.thymeleaf.org/doc/tutori...list-selectors
    Guarda l'esempio, il <select> ha il th:field, il suo valore viene confrontato con tutti i value in automatico per stabilire quale è l'option "selected".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Il value è l'identificativo della option (non è visibile all'utente) ed quello che viene inviato, per l'option "selected", al submit del form. Quindi è ovvio che serve se devi inviare il valore del select.

    Se poi vuoi mantenere il selected tra più request o comunque dal backend al frontend, allora devi fare quanto è scritto nella documentazione: https://www.thymeleaf.org/doc/tutori...list-selectors
    Guarda l'esempio, il <select> ha il th:field, il suo valore viene confrontato con tutti i value in automatico per stabilire quale è l'option "selected".
    Grazie del link
    jabjoint

  6. #6
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    384
    Ciao,
    devi mettere qualcosa quiqui

    <option th:each="fornitore : ${listFornitori}" th:text="${fornitore.nome}"> QUIQUI </option>

    altrimenti la select non ti visualizza niente

    Premetto che non conosco java, ma solo html
    Da un grande potere derivano grandi responsabilità

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da abellos Visualizza il messaggio
    devi mettere qualcosa quiqui

    <option th:each="fornitore : ${listFornitori}" th:text="${fornitore.nome}"> QUIQUI </option>
    No, non è obbligatorio. A runtime (quando il template viene processato) quel QUIQUI verrà comunque sostituito dal valore della espressione in th:text.
    Il QUIQUI semmai serve solo a livello "documentativo" (per lo sviluppatore) o se si apre il template "staticamente" (caratteristica permessa dal natural-templating di Thymeleaf)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.