2010-06-15 47 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