ajax事件未更新按钮以启用

时间:2014-02-26 09:15:24

标签: ajax jsf primefaces

我正在使用primefaces4.0,tomcat6作为我的应用程序。 我在一个带有提交按钮的对话框中有一个带复选框的表。 如果没有选中复选框,则禁用该按钮。 选择复选框后,我必须启用提交按钮。 但是在选择之后,提交按钮才会启用。

这是我的代码

<p:dataTable value="#{product.unsubscribedLicenseTypes}"
        selection="#{product.selectedLicense}"
        widgetVar="licenseTable" paginatorPosition="bottom"
        rowsPerPageTemplate="5,10,15" var="licType" paginator="true"
        currentPageReportTemplate="Showing {startRecord}-{endRecord} out of {totalRecords}"
        paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink}  {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
        pageLinks="0" rows="5" rowKey="#{licType.id}">
    <p:ajax event="toggleSelect" update="@(#submitBtn)" />
    <p:ajax event="rowSelect" update="@(#submitBtn)" onstart="alert('row select')" onerror="alert('err')" onsuccess="alert('Success')"/>
    <p:ajax event="rowUnselect" update="@(#submitBtn)" />
    <p:ajax event="rowSelectCheckbox" update="@(#submitBtn)" />
    <p:ajax event="rowUnselectCheckbox" update="@(#submitBtn)" />
</p:dataTable>

<p:commandButton  value="#{msg['button.submit']}" id="submitBtn"
    styleClass="submitFormButton" oncomplete="alert('hi');dlg.hide()"
    action="#{product.addLicenseTypeToProduct}" 
    disabled="#{fn:length(product.selectedLicense) eq 0}"/>

3 个答案:

答案 0 :(得分:0)

update="@(#submitBtn)"  update="submitBtn"

像我提到的那样更改你的更新..

答案 1 :(得分:0)

首先看看生成的代码在浏览器中的样子。我打赌你的按钮ID看起来像j_idt62:submitBtn,这是因为你的<h:form>没有id。其他一些<h:form>是一个命名容器,它会将自己的ID添加到其子组件中,因此如果您提供的表单ID如此<h:form id="form">,则您的按钮看起来像<button id="form:submitBtn" >。 Vicky提到使用按钮的相对路径,如果按钮和调用更新的组件可以找到对方,这将会起作用,因为它们不能使用按钮的绝对路径(假设您选择了表单)。

<p:ajax update=":form:submitBtn" />

答案 2 :(得分:0)

添加此

<p:commandButton widgetVar="var" ... />

... update="@widgetVar(var)"