0

ラジオボタンに問題があります。フィールドセットに2セットのラジオボタンと1つのコマンドボタンがあります。ラジオボタンの選択に基づいて、尊重された値がajax呼び出しによって表示されます。しかし、問題は常に最初のボタンがコマンド ボタン アクションで考慮されることです。そのため、常に最初の値が表示されますが、2 番目のラジオ ボタンが選択されています。

//test.xhtml

    <h:panelGroup id="demandDashBoardPanelGroupID">
    <fieldset> 
    <legend style="font-family:Arial;font-size: 12px;">Demand Dashboard</legend>

     <table>
        <tr>
        <td> 
            <h:selectOneRadio immediate="true" id="groupbyid" value="#{demandManagedBean.selectedRadioButton}" styleClass="labelstyle">  
                    <f:selectItem itemLabel="Group By Creation Date Time" itemValue="1" />  
                    <f:selectItem itemLabel="Group By Location" itemValue="2" />
            </h:selectOneRadio>
        </td>
        <td>

            <h:commandButton id="fetchbuttonID" value="Fetch" 
                    style="font-size:13px;width:60px;height:25px;" action="#{demandManagedBean.displayDemandRequestsTable}">
                    <f:setPropertyActionListener target="#{demandManagedBean.selectedRadioButtonParam}" value="#{demandManagedBean.selectedRadioButton}"/>
                    <f:ajax render=":parentformid:demandrequestpanelgrpid" immediate="true"/> 
            </h:commandButton>
        </td>
        </tr>
        </table>

     </fieldset>

     </h:panelGroup>

    <h:panelGroup id="demandrequestpanelgrpid" rendered="#{demandManagedBean.renderedFieldSet}"> 

     <fieldset id="demandrequestfieldsetid"> 

     <legend style="font-family:Arial;font-size: 12px;">Demand Requests</legend>

            <h:outputText rendered="#{demandManagedBean.renderCreationdateDmdtable}" value="first table"/>

            <h:outputText rendered="#{demandManagedBean.renderDmdLocationTable}" value="second table"/>

     </fieldset> 

   </h:panelGroup>

//バッキング Bean アクション

public void displayDemandRequestsTable(){


        if(selectedRadioButtonParam!= null && selectedRadioButtonParam.endsWith("1")){

            renderCreationdateDmdtable = true;
            renderDmdLocationTable = false;

        }else if(selectedRadioButtonParam!= null && selectedRadioButtonParam.endsWith("2")){

            renderCreationdateDmdtable = false;
            renderDmdLocationTable = true;

        }
        renderedFieldSet = true;
    }
4

1 に答える 1

1

f:setPropertyActionListener選択した値をバッキングBeanに取り込むために、ここは必要ありません。タグにexecute属性を追加し、 :を削除するだけです。f:ajaximmediate=true

<h:commandButton ...>
   <f:ajax render=":parentformid:demandrequestpanelgrpid" execute="@form" /> 
</h:commandButton>

フォーム全体の代わりに、実行するコンポーネントのIDを指定することもできます。

<h:commandButton ...>
   <f:ajax render=":parentformid:demandrequestpanelgrpid" execute="groupbyid" /> 
</h:commandButton>

またselectedRadioButton、バッキングBeanでが適切に初期化されていること、およびBeanが少なくとも。にあることを確認してください@ViewScoped

更新:を削除するとf:setPropertyActionListener、はselectedRadioButtonParam設定されません。selectedRadioButton次に、代わりにアクションメソッドの内部を確認する必要があります。

于 2012-05-22T07:04:36.817 に答える