Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    76

    Associare HahMap a <html:select> [Struts]

    In una JSP come si associa ad una select un HashMap?
    Nell’Action ho caricato l’HashMap:

    request.setAttribute("elenco", mioHashMap.values);
    // mioHashMap.values restituisce la collection

    nella JSP vorrei visualizzare in una select il valore del mioHashMap, e associando (senza visualizzarlo) la relativa chiave, in mode che quando l’utente selezionerà la voce dalla select, invierà la relativa chiave!

    <html:select property="selectElenco">
    <htmlptions name="elenco"/>
    </html:select>

    Si accettano consigli!!!

    Grazieeeee!!!

  2. #2
    Utente di HTML.it L'avatar di nether
    Registrato dal
    Dec 2006
    Messaggi
    376
    che io sappia una cosa del genere "diretta" non e' possibile.

    pero' puoi usare la classe LabelValueBean, che ha un metodo setLabel(String s) e un metodo setValue(String s).
    Trasforma quindi la tua Map in una collection di LabelValueBeans, e riempi con quella la tua select. (tag <layoutptionsCollection> o <html-elptionsCollection> mi pare)
    ovviamente cio' che sta nella proprieta' "label" indica la stringa visualizzata come "etichetta", mentre cio' che sta nella proprieta' "value" e' quello che verra' passato come parametro al momento del submit del form...

  3. #3
    Si può fare così: se ad esempio la tua HashMap è popolata in questo modo:
    codice:
    Map map = new HashMap( );
    map.put( "rosso", "red" );
    map.put( "nero", "black" );
    map.put( "bianco", "white" );
    request.setAttribute( "colori", map );
    Nella JSP devi mettere qualcosa del genere:
    codice:
    <html:options collection="colori" property="key" labelProperty="value"/>
    In tal modo le options avranno come label il valore (nell'esempio la parola in inglese), mentre come valore la chiave (nell'esempio la parola in italiano).

    Ciao,

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    76
    Innanzi tutto... Grazie!
    poi... nether LabelValueBean non implementa Collection! Lo so che ci sono mille modi per fare una cosa... e tutti e 1000 funzionano... ma se ho una classe già fatta ... perchè devo costruirmene una??? HashMap o Hashtable non dovrebbero fare proprio la collezione di chiavi-valori???

    Ora provo cio' che consiglia interarete....

  5. #5
    Utente di HTML.it L'avatar di nether
    Registrato dal
    Dec 2006
    Messaggi
    376
    anche a me piace di piu' come dice interarete... anche e soprattutto perche' una mappa e' una struttura dati di base di java, mentre il LabelValueBean e' una classe di struts...

    il fatto e' che struts ha un sacco di taglib.. alcune sono piu' utili in alcuni frangenti ma non supportano funzionalita' di associazione tipo questa

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    76
    GRAZIEEEEE interarete!!!!

    Grazie logicamente anche a nether (non conoscevo LabelValueBean ... possibilmente mi sarà utile per altre cose!)!!!

    Per i posteri... ecco il codice funzionante (metto tutto in una jsp per comodità d'esempio):



    <% request.setAttribute("elenco", elencoHashMap); %>


    Elenco select:
    <html:select property="elencoSelect">
    <htmlptions collection="elenco" property="key" labelProperty="value"/>
    </html:select>

    GRAZIIIIEEEEEE!!!!!!!!!

  7. #7
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    qualcuno sa come ordinare il tutto?
    io ho un has così
    "0" Seleziona
    "1" Ita
    "2" ing

    il problma è che in output mi viene
    ing
    seleziona
    ita

    e seleziona è il selected perchè nel bean il valore è 0.
    qualcuno sa spiegarmi come diavolo fa'

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 © 2025 vBulletin Solutions, Inc. All rights reserved.