2010-06-15 10 views
0

dans ma classe ApplicationBean1.java J'ai une option [] attribut années et une méthode de remplissage:problème pour remplir SelectOneMenu avec des données

public void buildYearOptions(){ 
    int initialYear = 1900; 
    int currentYear = Calendar.getInstance().get(Calendar.YEAR); 
    int i = 0; 
    for (int y = initialYear; y< currentYear; y++){ 
     Option op = new Option(y, Integer.toString(y)); 
     years[i] = op; 
     i++; 
    }  
} 

Et voici ma page jsp en utilisant ICEfaces:

<ice:selectOneMenu id="selectOneYearMenu" partialSubmit="true" 
    style="height: 24px; left: 238px; top: 94px; position: absolute; width: 72px;visibility: visible;" 
    visible="true"> 
    <f:selectItems id="selectOneMenuYearItems" value="#{ApplicationBean1.years}"/> 
</ice:selectOneMenu> 

Mon problème est que les années de 1900 à currentyear (2010) n'apparaissent pas dans dropDownList (selectOneMenu).

Est-ce que quelqu'un m'a aidé à comprendre cela?

Répondre

1

Je ne fais pas Icefaces, il peut faire les choses différemment, je ne suis pas au courant, mais vous nourrissez normalement f:selectItems avec un SelectItem[], List<SelectItem> ou Map<Object, Object>, non pas avec un Option[] ou quel type il est.

Cela devrait fonctionner:

private List<SelectItem> years; // +getter. 

public void buildYearOptions() { 
    final int initialYear = 1900; 
    final int currentYear = Calendar.getInstance().get(Calendar.YEAR); 
    for (int year = initialYear; year < currentYear; year++) { 
     years.add(new SelectItem(year, String.valueOf(year))); 
    }  
} 

Si elle ne donne toujours rien, alors vous appelez probablement buildYearOptions() au mauvais moment ou probablement pas l'appeler du tout.

+0

Merci l'homme pour votre réponse, cela m'a vraiment aidé. Apparemment dans Icefaces, vous ne pouvez pas utiliser l'interface List, cela ne fonctionnait que lorsque mon champ était avec le type ArrayList : private ArrayList years; –

Questions connexes