【问题标题】:SelectOneRadio inside subtable ajax call not working子表ajax调用中的SelectOneRadio不起作用
【发布时间】:2013-01-11 03:34:07
【问题描述】:

我正在使用 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>

evaluationControl是一个SessionBean,方法是

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

感谢您的帮助。

【问题讨论】:

  • 你的 bean evaluationControl 的作用域是什么?
  • @elias 这是 SessionScoped
  • 是您的p:dataTable 在表单中吗?
  • 使用 firebug 等网络开发工具或类似工具检查此页面是否有任何 javascript 错误。检查:evaluationForm:finalResultTextdescriptorCalificationMsg 是否真的在生成的html 中使用了这个id。否则,JSF 将中断。

标签: ajax jsf jsf-2 primefaces


【解决方案1】:

你可以试试,删除 process="@this"。它在我的情况下有效。我不确定为什么 p:subTable 会发生这种情况,因为我从来没有遇到过 p:dataTable 的这个问题。

【讨论】:

    【解决方案2】:

    经过太多的调试和测试,我终于找到了问题,primefaces Subtable 组件没有将值放回Backing Bean,你必须处理整个DataTable 组件,所以我不得不删除required="true"(以避免验证错误)为每个 selectOneRadio 添加 process="competenciesTable"p:ajax

    【讨论】:

      猜你喜欢
      • 2012-04-06
      • 1970-01-01
      • 2023-03-16
      • 2015-01-02
      • 2012-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多