如何通过组件绑定更新p:selectOneRadio值

时间:2015-08-13 10:32:30

标签: jsf primefaces binding selectoneradio

我绑定了一个p:selectOneRadio组件,如下所示,

<p:selectOneRadio binding="#{bean.maritalStatusRadio}" value="#{bean.maritalStatus}" >
    <f:selectItems value="#{selectItemList.maritalStatusList}" /> 
    <p:ajax event="change" listener="#{bean.handleChangeInMaritalStatus}" />
</p:selectOneRadio>

但我无法从支持bean类更新其值。

SelectOneRadio maritalStatusRadio; 
    public void handleChangeInMaritalStatus() {
            String currentValue =String.valueOf(maritalStatusRadio.getValue());

            if(!currentValue.equals(MARITAL_STATUS_MARRIED)) {
                maritalStatusRadio.setValue(MARITAL_STATUS_MARRIED);

            }

    }`

2 个答案:

答案 0 :(得分:0)

您的侦听器方法不是更改选择值的地方。当用户在视图中更改所选选项时,可以执行任何操作。

如果要更改所选值,只需更改分配给绑定字段的值,在本例中为bean.maritalStatus。您可以在许多地方(包括youtr listener,如果需要)进行此操作。

通常在preRenderView方法上初始化一个选择默认值。 在你看来:

  <f:metadata>
    <f:event
      type="preRenderView"
      listener="#{bean.initializeForNew}" />
  </f:metadata>

在你的bean上:

 public void initializeForNew() throws ModelException {
    if (!isPostBack()) {//only on loading
      bean.maritalStatus = getDefaultMaritaStatus();
    }
  }

答案 1 :(得分:0)

<p:selectOneRadio id="radioButton" binding="#{nominee.maritalStatusRadio}" value="#{nominee.prospective.maritalStatus}"  disabled="#{disabled}" >
                                    <f:selectItems value="#{selectItemList.maritalStatusList}" />
                                    <p:ajax update="radioButton" event="change" listener="#{nominee.handleChangeInMaritalStatus}" />
                            </p:selectOneRadio>
It worked for me I was not updating p:selectOneRadio in  p:ajax