ordeno no dao
String strSql = "select id_familia,desc_familia from family"
+ " order by DESC_FAMILIA";
monta a lista certinha de forma ordenada
List<Family> l = pDao.recuperarFamily();
for (Family f : l) {
getFamilies().put(f.getDescFamily(), String.valueOf(f.getIdFamily()));
}
jogo no map ... retorna o map ordenado, porem quando mostra na tela esta desordenado
xhtml
<p:selectOneMenu id="family" value="#{pnMB.familyValue}" required="true" style="width:200px">
<f:selectItem itemLabel="Selecione" itemValue="0" noSelectionOption="true" />
<f:selectItems value="#{pnMB.families}"/>
</p:selectOneMenu>
Você está usando um Map ordenado?
Family é Comparable?
Não sei se pode ser o caso, mas me parece que tem um probleminha na forma como o Map é suportado pela tag f:selectItems, talvez seja melhor você dar uma olhada nisso:
[quote=b10machado]pessoal agora que vi o L = Dao.recuperarFamily()…traz ordenado
mas na hora do for it, qdo joga no map ele desordena td…alguem sabe o motivo?[/quote]
Você leu o que escrevemos? Nos diga como é o seu Map. Os mapas não são ordenados a menos que use o mapa certo (um TreeMap, por exemplo) e seu objeto seja Comparable (ou passar um Comparator para o mapa).
entao eu pensei q como inserir no map de forma ordenada ele ficaria ordenado na hora do chamada…
só faço isso mesmo, recebo a lista e dou o put no map…nao faço mais nd…pensei q assim ele ja viria de forma ordenada…
public class..
private Map<String,String> families = new HashMap<String, String>();
Class(){
populaComboFamily()
}
get e sets
public void populaComboFamily() {
List<Family> l = pDao.recuperarFamily();
for (Family f : l) {
getFamilies().put(f.getDescFamily(), String.valueOf(f.getIdFamily()));
}
}
[quote=b10machado]usei o TreeMap<String, String>();
e funcionou corretamente…Obrigado[/quote]
Poderia, também, usar o LinkedHashMap<K, V>, que utiliza uma estrutura de lista ordenada para criar o mapa, baseado em uma regra de código hash.