Проблема в заполнении SelectOneMenu данными - PullRequest
0 голосов
/ 15 июня 2010

в моем классе ApplicationBean1.java у меня есть атрибут Option [] лет и метод заполнения:

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++;   
    }     
 }

А это моя страница jsp с использованием 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>

Моя проблема в том, что годы с 1900 по текущий год (2010) не отображаются в dropDownList (selectOneMenu).

А кто-нибудь поможет мне разобраться?

1 Ответ

1 голос
/ 15 июня 2010

Я не делаю IceFaces, поэтому он может делать вещи по-другому, я не знаю, но вы обычно кормите f:selectItems с SelectItem[], List<SelectItem> или Map<Object, Object>, не с Option[] или любым другим типом.

Это должно работать:

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)));
    }     
}

Если это все еще не работаетдайте что-нибудь, тогда вы, вероятно, звоните buildYearOptions() в неподходящий момент или, возможно, вообще не звоните.

...