Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    116

    [JSF-JAVA] Trinidad e Comparable

    Ho questa situazione:

    Una tabella trinidad sulla quale c'è una colonna che espone degli enumeratori.
    La colonna è <tr:column sortable="true" sortProperty="chiave">.
    Dunque al click sull'header mi ordina gli enumeratori in base al metodo compareTo() definito nella classe Enum.

    Il problema è che a me non piace, vorrei implementare un mio metodo di ordinamento, ma non posso fare l'override del metodo compareTo degli enum perchè è dichiarato final..

    Come potrei aggirare il problema?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JSF-JAVA] Trinidad e Comparable

    Originariamente inviato da Verce
    Una tabella trinidad sulla quale c'è una colonna che espone degli enumeratori.
    La colonna è <tr:column sortable="true" sortProperty="chiave">.
    Dunque al click sull'header mi ordina gli enumeratori in base al metodo compareTo() definito nella classe Enum.

    Il problema è che a me non piace, vorrei implementare un mio metodo di ordinamento, ma non posso fare l'override del metodo compareTo degli enum perchè è dichiarato final..

    Come potrei aggirare il problema?
    Se questa trinidad (che preciso: non conosco) permette di assegnare/gestire un java.util.Comparator, puoi definire tu una comparazione alternativa.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    116
    Sono andato a vedere ma putroppo non sembra possibile assegnare un comparator al componente trinidad... (nemmeno io sono un esperto )

  4. #4
    Ma l'enumeratore che fai vedere è un tuo enumeratore ?

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    116
    la dicitura è questa:

    public enum ChiaveParametro implements java.io.Serializable

    se provo ad aggiungere Comparable tra gli implements si arrabbia..

  6. #6
    Allora se puoi modificare l'enumeratore ti basta sapere che esso viene ordinato in base all'ordine con cui è stato definito. Faccio un esempio
    codice:
    public enum ChiaveParametro implements java.io.Serializable
    {
    	PARAMETRO5,PARAMETRO4,PARAMETRO3,PARAMETRO2,PARAMETRO1;
    }
    public static void main(String[] args)
    	{
    		List<ChiaveParametro> chiaveParametriList = new ArrayList<ChiaveParametro>();
    		chiaveParametriList.add(ChiaveParametro.PARAMETRO1);
    		chiaveParametriList.add(ChiaveParametro.PARAMETRO2);
    		chiaveParametriList.add(ChiaveParametro.PARAMETRO3);
    		chiaveParametriList.add(ChiaveParametro.PARAMETRO4);
    		chiaveParametriList.add(ChiaveParametro.PARAMETRO5);
    		System.out.println(chiaveParametriList);
    		Collections.sort(chiaveParametriList);
    		System.out.println(chiaveParametriList);
    		
    	}
    Il secondo System.out ti stamperà esattamente la sequenza :
    PARAMETRO5,PARAMETRO4,PARAMETRO3,PARAMETRO2,PARAME TRO1;
    che è esattamente l'ordine in cui l'enumeratore è stato dichiarato.
    Quindi se vuoi cambiare l'ordine ti basta cambiare tale sequenza

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    116
    Eh lo so, ma il problema esattamente qual'è? Sono in un ambiente internazionalizzato, percui a seconda della lingua devo recuperare un bundle per ordinare le righe della tabella a seconda dell'ordinamento alfabetico della traduzione del nome dell'enumeratore.. è questa la grana..

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    116
    Tra l'altro ho scoperto ora che se faccio:

    <tr:column sortable="true" sortProperty="chiave.metodo">

    usa comparable sulla classe tornata dal metodo, il che è perfetto se nel metodo riesco a recuperare quello che mi serve, solo che non è così semplice :\

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.