【问题标题】:Problem in filling SelectOneMenu with data用数据填充 SelectOneMenu 的问题
【发布时间】:2010-06-15 13:57:24
【问题描述】:

在我的 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++;   
    }     
 }

这是我使用 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 年到 currentyear(2010) 的年份没有显示在 dropDownList (selectOneMenu) 中。

有人帮我解决这个问题吗?

【问题讨论】:

    标签: jsf icefaces


    【解决方案1】:

    我不使用 IceFaces,所以它可能会做一些不同的事情,我不知道,但你通常用 SelectItem[]List&lt;SelectItem&gt;Map&lt;Object, Object&gt;f:selectItems,而不是 @987654328 @ 或任何类型。

    这应该可行:

    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(),或者根本没有调用它。

    【讨论】:

    • 感谢您的回答,这真的很有帮助。显然,在 Icefaces 中,您不能使用接口 List ,只有当我的字段类型为 ArrayList: private ArrayList years;
    猜你喜欢
    • 2013-03-19
    • 2011-01-14
    • 2019-02-15
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多