簡體   English   中英

jsf selectOneMenu奇怪的itemValue

[英]jsf selectOneMenu strange itemValue

在我的應用程序中,我具有selectOneMenu選擇月份。

                    <h:selectOneMenu value="#{register.monthOfBirth}">
                        <f:selectItems value="#{register.dateValues.monthsList}" var="month" itemLabel="#{month.valueLabel}" itemValue="#{month.valueValue}"/>
                        <f:ajax listener="#{register.monthChanged}" render="messages" />
                    </h:selectOneMenu>

這是我的DateValues類,用於填充selectOneMenu的類:

    public class DateValues {

    public static class Values{
    public String valueLabel;
    public String valueValue;

    public Values(String valueLabel, String valueValue){
        this.valueLabel = valueValue;
        this.valueLabel = valueValue;
    }

    public String getValueLabel(){
        return valueLabel;
    }

    public String getValueValue(){
        return valueValue;
    }

}

    public Values[] daysList;
    public Values[] monthsList;
    public Values[] yearsList;

    public DateValues(){
            daysList = new Values[31];
            for(int i=0;i<31;i++){
                daysList[i] = new Values(""+ (i+1),""+(i+1));
            }
            monthsList = new Values[12];
            for(int i=0;i<12;i++){
                monthsList[i] = new Values("" + (i+1),"" + (i+1));
            }
            yearsList = new Values[109];
            Calendar cal = Calendar.getInstance();
            int currentYear = cal.get(Calendar.YEAR);
            int first = currentYear - 108;
            for(int i=0;i<109;i++) {
                yearsList[i] = new Values("" + (first + (108-i)),"" + (first + (108-i)));
            }
    }



public Values[] getDaysList() {
    return daysList;
}


    public Values[] getMonthsList() {
    return monthsList;

}

    public Values[] getYearsList() {
    return yearsList;
}

    }

在@ManagedBean中,我有一個ajax偵聽器:

        public void monthChanged(){
           System.out.println("New month is month number " + monthOfBirth);

        }

我在輸出中得到的是:

    "INFO: New month is month number dyplom.dyplom.date.DateValues$Values@79f6099"

而不是(例如)2(月數,所以2月)

我做錯了什么?

編輯:

生成的HTML:

    <h2><select id="j_idt56:j_idt70" name="j_idt56:j_idt70" size="1" onchange="mojarra.ab(this,event,'valueChange',0,'j_idt56:messages')">  <option value="dyplom.dyplom.date.DateValues$Values@32b0c37e">1</option>
       <option value="dyplom.dyplom.date.DateValues$Values@72f29f31">2</option>
       <option value="dyplom.dyplom.date.DateValues$Values@16b184ec">3</option>
       <option value="dyplom.dyplom.date.DateValues$Values@608dad97">4</option>
       <option value="dyplom.dyplom.date.DateValues$Values@757fc606">5</option>
       <option value="dyplom.dyplom.date.DateValues$Values@17a1f02e">6</option>
       <option value="dyplom.dyplom.date.DateValues$Values@89f6821">7</option>
       <option value="dyplom.dyplom.date.DateValues$Values@196d52f3">8</option>
       <option value="dyplom.dyplom.date.DateValues$Values@5860dc8f">9</option>
       <option value="dyplom.dyplom.date.DateValues$Values@3f305d9d">10</option>
       <option value="dyplom.dyplom.date.DateValues$Values@520ed4">11</option>
       <option value="dyplom.dyplom.date.DateValues$Values@b4b8076">12</option>
   </select>
   </h2>

問題解決了!
我為自己犯的錯誤感到羞恥! 看一下Values的構造函數:

public Values(String valueLabel, String valueValue){
    this.valueLabel = valueValue;
    this.valueLabel = valueValue;
}

如您所見,我已經用錯誤的變量設置了兩次valueLabel,而且我根本沒有設置valueValue!

現在,當我更正構造函數時:

public Values(String valueLabel, String valueValue){
    this.valueLabel = valueLabel;
    this.valueValue = valueValue;
}

一切都很好:)對不起,一團糟!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM