我正在使用primefaces 3.4.1而我正试图在subtable内使用带有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>
evaluateControl是一个SessionBean,方法是
public void handleRadioChange() {
log.debug("Listener called");
}
非常感谢帮助。
答案 0 :(得分:6)
经过太多的调试和测试后我终于发现了问题,主要的Subtable组件没有将值放回Backing Bean本身你必须处理整个DataTable组件,所以我不得不删除{{1} (以避免验证错误)每个selectOneRadio并将required="true"
添加到process="competenciesTable"
答案 1 :(得分:0)
您可以尝试删除process =&#34; @ this&#34;。它适用于我的情况。我不确定为什么p:subTable会发生这种情况,因为我从未遇到过p:dataTable这个问题。