PrimeFaces commandButton从AJAX加载后无法正常工作

时间:2017-10-24 08:03:56

标签: jsf primefaces

我正在使用JSF + Primefaces 6.0开展项目。 在这个特定的页面上有一些错误,我不知道如何解决。 当#selected-operator或#selected-site值被更改时,#operatorsForm形式将通过AJAX正确更新,结果将显示在数据表中。

问题是当我点击在数据表中加载的commandButton时,模态对话框" confirmWV"没有显示。 在我的其他页面上,我有相同的模态代码,但是那些按钮没有通过AJAX加载,所以这让我认为这是与AJAX相关的问题。 调试时,单击按钮不会调用confirmOperatorsRightsAction()方法。

感谢您的帮助!

page.xhtml

<h:form id="operatorForm">
    <p:selectOneMenu id="selected-operator"
        value="#{operatorController.selectedOperator}">
        <f:selectItem itemValue="" itemLabel="Choose operator" />
        <f:selectItems value="#{operatorBean.getOperatorsList()}"
            var="operator" itemLabel="#{operator.username}"
            itemValue="#{operator.idPk}" />
        <f:ajax execute="selected-operator" />
    </p:selectOneMenu>

    <p:selectOneMenu id="selected-site"
            value="#{operatorBean.selectedSite}">
        <f:selectItem itemValue="" itemLabel="Choose site" />
        <f:selectItems value="#{operatorBean.getSites()}"
            var="site" itemLabel="#{site.strname}" itemValue="#{site.idPk}" />
        <f:ajax execute="selected-site" />
    </p:selectOneMenu>

</h:form>


<h:form id="operatorsForm">
    <p:dataTable var="operatorSite"
        value="#{operatorBean.getOperatorSites()}"
        id="operators-list">

        <p:column headerText="#{msg['item.Username']}">
            #{operatorSite.operator.username}
        </p:column>
        <p:column headerText="#{msg['item_SiteName']}">
            #{operatorSite.site.strname}
        </p:column>
        <p:column headerText="">
            <p:commandButton
                actionListener="#{operatorBean.confirmOperatorsRightsAction(operatorSite)}"
                                value="#{msg['item_Delete']}"
                                icon="fa fa-trash">
            </p:commandButton>
        </p:column>
    </p:dataTable>
</h:form>

<p:dialog widgetVar="confirmWV" modal="true"
    header="#{msg['modal.confirm.title']}" height="150" width="450">
    <h:form id="confirmOperatorForm">
        <my:confirm />
    </h:form>
</p:dialog>

OperatorBean.java

public void confirmOperatorsRightsAction(OperatorSite os) {

    //some code here
    RequestContext.getCurrentInstance().update("confirmOperatorForm");

    RequestContext.getCurrentInstance().execute("PF('confirmWV').show();");

}

0 个答案:

没有答案