【问题标题】:JSF issue with changing default radioselection更改默认无线电选择的 JSF 问题
【发布时间】:2012-09-19 13:58:03
【问题描述】:

我使用 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 的空指针异常。 任何解决该问题的指示都会非常有帮助。在此先感谢。

【问题讨论】:

  • NPE 发生在哪里?在 selectedRecurrenceValue 的设置器中?您能否将 setter 方法添加到您的问题中?
  • 嗨,马特,我已经添加了 setter 方法,并在尝试选择新选项时尝试调试代码。发生的情况是,在选择新选项时,控件直接进入 selectedRecurrenceValue 的 getter 方法,并且 NPE 发生 @selectedRecurrenceValue = adminScheduledetailsVO.getFrequency();。 adminScheduledetailsVO 似乎为空。看起来我选择的新选项没有设置。不知道为什么?

标签: jsf jsf-2


【解决方案1】:

如果我没看错你的问题,你似乎不需要 selectedRecurrenceValue 字段,应该将 adminScheduledetailsVO.frequency 直接绑定到你的 selectOneRadio:

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

那么adminScheduledetailsVO当然需要在之前初始化以避免NPE。

【讨论】:

  • 感谢马特的回复。但我不确定,你能告诉我我应该把它初始化成什么。
  • 您应该在构建 bean 期间或之后创建一个新实例。
猜你喜欢
  • 2013-03-12
  • 1970-01-01
  • 2011-07-27
  • 2021-12-24
  • 1970-01-01
  • 1970-01-01
  • 2016-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多