代码之家  ›  专栏  ›  技术社区  ›  Saher Ahwal

用数据填充selectone菜单时出现问题

  •  0
  • Saher Ahwal  · 技术社区  · 14 年前

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

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

    <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年)的年份没有显示在下拉列表(selectOneMenu)中。

    有人能帮我弄清楚吗?

    1 回复  |  直到 14 年前
        1
  •  1
  •   BalusC    14 年前

    我不做冰面,所以它可能会做不同的事情,我不知道,但你通常饲料的 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() 在错误的时刻或者根本不打电话。