Art f:selectItems-Liste basierend auf Etiketten
Habe ich ein selectItem-Liste von Werten und Bezeichnungen. Daten aus der Datenbank geholt und der selectItem-Liste hat folgende Werte:
<1,100-500>
<2,1000-1500>
<3,500-1000>
Hier 1, 2, 3 sind die Werte der selectItem-Liste und '100-500', '1000-1500" und "500-1000" sind labels, respektive. Wie Sie sehen können, die Liste ist schon sortiert, basierend auf den Etiketten. Aber meine Anforderung ist, dass die Liste angezeigt werden soll, in der dropdown wie folgt:
100-500
500-1000
1000-1500
Kann bitte jemand eine Lösung vorschlagen?
InformationsquelleAutor shaleen | 2011-02-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nicht den code ändern, die holt sich der SelectItem-Instanzen aus der DB, so dass die kommen so sortiert, wie Sie möchten, dann haben Sie, um Sie zu Sortieren Sie selbst :
DwB es erklärt. Sie haben nicht gezeigt, uns Ihre SelectItem Klasse. Da Sie uns sagen, es hat die Werte <1, 100-500> usw., Ich nahm ein SelectItem hat einen Wert (1, 2 oder 3) und eine Beschriftung ("100-500", "500-1000" oder "1000-1500"). Mein Algorithmus sortiert diese nach Wert, also <1, 100-500> vor <2, 500-1000> kommt vor <3, 1000-1500>.
Diese
Collection.sort(list, comparator);
sollteCollections.sort(list, comparator);
. Brauchte das heute und bemerkt den Rechtschreibfehler. +1 vielen Dank.behoben, danke.
InformationsquelleAutor JB Nizet
Hier ein Beispiel für ein Programm, das ich schnell geschrieben, verwendet eine benutzerdefinierte Komparator:
Ausgabe:
InformationsquelleAutor mre
Umsetzung eines Komparators.
http://download.oracle.com/javase/1.4.2/docs/api/java/util/Comparator.html
Siehe download.oracle.com/javase/6/docs/api/java/util/Comparator.html eher, da Komparator wurde generified seit Java 5.
Zeig uns deinen code ein : wir haben keine Kristallkugel
Liste staffRange = get
/*Retretreiving Werte aus der Datenbank mit gängigen application-level-API */ Liste staffRangeList = getMasterValues("Personal Range"); SelectItem selectItem =null; String label=null; Iterator staffIter =staffRangeList.iterator(); while(staffIter.hasNext()){ selectItem =(SelectItem ) staffIter.next(); label= selectItem.getLabel(); Syste.aus.println(name+','); } Ausgabe: 100-500, 1000-1500, 500-1000, Jetzt meine Forderung ist, um die Liste neu anzuordnen, so dass die Werte sollten angezeigt dropdwon wie bereits im letzten Kommentar,ie, 100-500,500-1000, 1000-1500
InformationsquelleAutor foobar1234
Benutze ich Commons BeanUtils und tun es mit 1 Zeile code....
... ODER
InformationsquelleAutor Melloware
Art von Label
Werfen Sie einen Blick auf den code, der geschrieben von "JB Nizet". Sortiert nach Wert. Wenn Sie ändern
return s1.getValue().compareTo(s2.getValue());
auf der folgenden Schritte aus:
return s1.getLabel().compareTo(s2.getLabel());
Es werden Sortieren nach label.
Art Label Numerisch
Den oben Sortieren von string-Wert. Was bedeutet, dass 1 kleiner als 5 ist (also 1000 < 500). Der nächste Schritt ist die Umwandlung von label in eine Zahl um und Vergleiche es. Für diesen Einsatz eine variation der folgenden:
InformationsquelleAutor DwB
Danke Ihnen sehr für Ihre Hilfe. Ich erhalte das gewünschte Ergebnis. Im folgenden finden Sie den code für Ihre Referenz.
InformationsquelleAutor shaleen