2010-06-15 39 views
0

填充selectOneMenu用于我有一个选项[]属性年和填充方法:问题与我ApplicationBean1.java类数据

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

我不做ICEfaces的,所以它可能会做不同的事情,我不知道,但你通常与SelectItem[]List<SelectItem>Map<Object, Object>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()或可能不会调用它。

+0

谢谢你的答案真的有帮助。显然,在Icefaces中,你不能使用接口List,它只在我的字段是ArrayList类型时才起作用。: private ArrayList years; – 2010-06-16 08:42:26