5

私はprimefaces 3.4.1を使用しており、サブテーブル内のajax呼び出しでSelectOneRadioを使用しようとしています 、機能しません.ajaxリスナーは呼び出されません

<p:dataTable id="competenciesTable" var="competency" value="#{evaluationControl.currentEvaluation.evaluatedCompetencies}">
                <f:facet name="header">
                    <h:outputText value="#{gchmsg['global.competencies']}" />
                </f:facet>
                <p:subTable id="descriptorsTable" var="descriptor" value="#{competency.evaluationDescriptors}">
                    <f:facet name="header">
                        <h:outputText class="strong" value="#{competency.competency.name}" />
                    </f:facet>
                    <p:column>#{descriptor.descriptor.description}</p:column>
                    <p:column>
                        <p:selectOneRadio required="true" styleClass="calification_scale" id="descriptorCalification" value="#{descriptor.calification}" converter="calification">  
                            <f:selectItems value="#{competency.competency.calificationSchema.scales}" var="scale" itemLabel="#{scale.qualitativeValue}" itemDescription="#{scale.description}" itemValue="#{scale}" />
                            <p:ajax process="@this" listener="#{evaluationControl.handleRadioChange}" update=":evaluationForm:finalResultText, descriptorCalificationMsg" />
                        </p:selectOneRadio> 
                        <p:message id="descriptorCalificationMsg" for="descriptorCalification" display="icon" />
                    </p:column>
                </p:subTable>
            </p:dataTable>

EvaluationControl は SessionBean であり、メソッドは

public void handleRadioChange() {
    log.debug("Listener called");
}

助けていただければ幸いです。

4

2 に答える 2

6

あまりにも多くのデバッグとテストを行った後、最終的に問題を発見しました。primefaces Subtable コンポーネントは値を Backing Bean に戻しません。DataTable コンポーネント全体を処理する必要があるため、required="true"(検証エラーを回避するために)を削除する必要がありました。各 selectOneRadio を追加process="competenciesTable"しますp:ajax

于 2013-01-28T13:03:31.057 に答える