2012-09-19 46 views
1

當我嘗試更改默認無線電選擇時,使用h:selectOneRadio並出現問題。下面是JSF代碼更改默認無線電選擇的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

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

的backingbean代碼時,我試圖改變radioselection選項,就會出現問題。我無法初始化值selectedRecurrenceValue,因爲我動態獲取它。當我嘗試選擇另一個單選按鈕時,Im收到selectedRecurrenceValue的空指針異常。 任何解決問題的指針都會非常有用。感謝您的提前。

+0

NPE在哪裏發生?在setter中爲selectedRecurrenceValue?你可以在你的問題中添加setter方法嗎? –

+0

嗨馬特,我已經添加了setter方法,並試圖調試代碼以及​​當我嘗試選擇一個新的選項。會發生的是,在選擇新選項時,控件直接進入selectedRecurrenceValue的getter方法,並且NPE發生@ selectedRecurrenceValue = adminScheduledetailsVO.getFrequency();. adminScheduledetailsVO似乎爲空。看起來像我選擇的新選項沒有設置。不知道爲什麼? – vr3w3c9

回答

1

如果我讀了你的問題的權利,似乎你不需要現場selectedRecurrenceValue,應直接綁定adminScheduledetailsVO.frequency您selectOneRadio:

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

那麼當然adminScheduledetailsVO需要被初始化之前,以避免NPE 。

+0

感謝馬特的迴應。但林不知道,你可以讓我知道我應該初始化它。 – vr3w3c9

+0

您應該在構建bean的過程中或之後創建一個新實例。 –