用数据填充SelectOneMenu时出现问题

时间:2010-06-15 13:57:24

标签: jsf icefaces

在我的ApplicationBean1.java类中,我有一个Option []属性years和一个填充方法:

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

这是我使用icefaces的jsp页面:

<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 个答案:

答案 0 :(得分:1)

我不做IceFaces,所以它可能会做一些我不知道的事情,但你通常用SelectItem[]List<SelectItem>或{{3}来提供f:selectItems。 },而不是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(),或者可能根本不会调用它。