1

h:selectOneRadioを使用していて、デフォルトの無線選択を変更しようとすると問題が発生します。以下はJSFコードです

<h:selectOneRadio id="radioSelectID1" layout="pageDirection" value="#{scheduleBean.selectedRecurrenceValue}"   immediate="true" >
                                        <f:selectItem id="dailyID" itemLabel="#{adminBean.adminScreenLabelVO.dailyLabel}" itemValue="#{scheduleBean.dailyValue}"></f:selectItem>
                                        <f:selectItem id="weeklyID" itemLabel="#{adminBean.adminScreenLabelVO.weeklyLabel}" itemValue="#{scheduleBean.weeklyValue}"></f:selectItem>
                                        <f:selectItem id="monthlyID" itemLabel="#{adminBean.adminScreenLabelVO.monthlyLabel}" itemValue="#{scheduleBean.monthlyValue}"></f:selectItem>
                                        <f:ajax event="change" listener="#{scheduleBean.recurrenceChange}" render="recurrencePanelID" />
                                    </h:selectOneRadio>

以下は、selectedRecurrenceValueのbackingbeanコードです

public String getSelectedRecurrenceValue() {

    if(selectedRecurrenceValue == null)
    {
        selectedRecurrenceValue = adminScheduledetailsVO.getFrequency();
        if(selectedRecurrenceValue.equalsIgnoreCase(dailyValue))
        {
            dailyPanelRenderer = true ;
        }
        if(selectedRecurrenceValue.equalsIgnoreCase(weeklyValue))
        {
            dailyPanelRenderer = false ;
            weeklyPanelRenderer = true ;
        }

        if(selectedRecurrenceValue.equalsIgnoreCase(monthlyValue))
        {
            monthlyPanelRenderer = true ;
        }
    }

    return selectedRecurrenceValue;
}

この問題は、radioselectionオプションを変更しようとすると発生します。値を動的に取得しているため、selectedRecurrenceValueの値を初期化できません。別のラジオボタンを選択しようとすると、selectedRecurrenceValueのnullポインタ例外を受け取ります。問題を修正するためのポインタは本当に役に立ちます。よろしくお願いします。

4

1 に答える 1

1

あなたの質問を正しく読むと、フィールドは必要ないようで、selectOneRadio に直接selectedRecurrenceValueバインドする必要があります。adminScheduledetailsVO.frequency

<h:selectOneRadio id="radioSelectID1" 
                  layout="pageDirection" 
                  value="#{scheduleBean.adminScheduledetailsVO.frequency}" >

もちろんadminScheduledetailsVO、NPE を回避するために事前に初期化する必要があります。

于 2012-09-19T14:32:55.473 に答える