Ajax Primefaces命令按钮操作不会第二次调用

Ajax Primefaces命令按钮操作不会第二次调用,ajax,jsf,primefaces,Ajax,Jsf,Primefaces,我已经将spring与JSF集成,我面临一个奇怪的行为: 我点击命令按钮,成功点击托管bean中的操作方法(我在下面的示例中删除了它) Ajax更新工作正常,表单也得到了更新 我点击了另一个按钮,现在托管bean中的操作方法没有点击 面板将恢复到初始视图,并在此视图上冻结 除非刷新页面并重复这些步骤,否则无法更新表单 DealerInfo.xhtml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <h

我已经将spring与JSF集成,我面临一个奇怪的行为:

  • 我点击命令按钮,成功点击托管bean中的操作方法(我在下面的示例中删除了它)
  • Ajax更新工作正常,表单也得到了更新
  • 我点击了另一个按钮,现在托管bean中的操作方法没有点击
  • 面板将恢复到初始视图,并在此视图上冻结
  • 除非刷新页面并重复这些步骤,否则无法更新表单
  • DealerInfo.xhtml:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:p="http://primefaces.org/ui">
    
    <ui:composition template="/WEB-INF/templates/default.xhtml">
        <ui:define name="content">
            <h:form id="toolBarForm">
                <p:toolbar style="margin-bottom:5px;">
                    <p:toolbarGroup align="right">
                        <p:commandButton value="Add"
                            update=":toolBarForm" icon="ui-icon-plusthick" />
                        </p:toolbarGroup>
                    </p:toolbar>
                <p:messages id="dealerInfoMessages" />
                <ui:include src="/pages/dealers/DealerMainInfo.xhtml" />
            </h:form>
        </ui:define>
    </ui:composition>
    </html>
    
    
    
    页面/经销商/经销商信息.xhtml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:p="http://primefaces.org/ui">
    
    <ui:composition>
        <p:panel id="dealerMainInfoPanel" header="Dealer Main Info"
            style="margin-bottom:5px;">
            <h:panelGrid columns="2">
                <p:outputLabel for="dealerCode" value="Dealer Code" />
                <p:inputText id="dealerCode" required="true"
                    value="#{dealerMainInfoBO.dealerCode}" style="width:200px;" />
    
                <p:outputLabel for="dealerName" value="Dealer Name" />
                <p:inputText id="dealerName" required="true"
                    value="#{dealerMainInfoBO.dealerName}" style="width:200px;" />
            </h:panelGrid>
        </p:panel>
    </ui:composition>
    </html>
    
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:p="http://primefaces.org/ui">
    
    <f:view contentType="text/html">
        <h:head>
        </h:head>
        <h:body>
            <h:form id="toolBarForm">
                <p:toolbar style="margin-bottom:5px;">
                    <p:toolbarGroup align="right">
                        <p:commandButton value="Add" update=":toolBarForm"
                            action="#{bean.add}" />
                    </p:toolbarGroup>
                </p:toolbar>
                <p:messages id="operationDefinitionMessages" />
                <h:panelGrid columns="2">
                    <p:outputLabel for="text" value="Text" />
                    <p:inputText id="text" required="true" value="#{bean.text}" />
                </h:panelGrid>
            </h:form>
        </h:body>
    </f:view>
    </html>
    
    
    
    更新: 我创建了一个非常简单的单页,我注意到当我删除
    标记时,ajax就像一个魅力但是没有花哨的primefaces UI,当我添加标记时,ajax停止(这是正常的,因为
    标记获取所有需要的JS和CSS),我能做什么

    示例.xhtml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:p="http://primefaces.org/ui">
    
    <ui:composition>
        <p:panel id="dealerMainInfoPanel" header="Dealer Main Info"
            style="margin-bottom:5px;">
            <h:panelGrid columns="2">
                <p:outputLabel for="dealerCode" value="Dealer Code" />
                <p:inputText id="dealerCode" required="true"
                    value="#{dealerMainInfoBO.dealerCode}" style="width:200px;" />
    
                <p:outputLabel for="dealerName" value="Dealer Name" />
                <p:inputText id="dealerName" required="true"
                    value="#{dealerMainInfoBO.dealerName}" style="width:200px;" />
            </h:panelGrid>
        </p:panel>
    </ui:composition>
    </html>
    
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:p="http://primefaces.org/ui">
    
    <f:view contentType="text/html">
        <h:head>
        </h:head>
        <h:body>
            <h:form id="toolBarForm">
                <p:toolbar style="margin-bottom:5px;">
                    <p:toolbarGroup align="right">
                        <p:commandButton value="Add" update=":toolBarForm"
                            action="#{bean.add}" />
                    </p:toolbarGroup>
                </p:toolbar>
                <p:messages id="operationDefinitionMessages" />
                <h:panelGrid columns="2">
                    <p:outputLabel for="text" value="Text" />
                    <p:inputText id="text" required="true" value="#{bean.text}" />
                </h:panelGrid>
            </h:form>
        </h:body>
    </f:view>
    </html>
    
    
    
    我的环境

    • 基本面:3.5
    • JSF Mojarra:2.2
    • 弹簧:3.2.3.释放

      • 以防任何人面临同样的问题。我注意到正在使用
        JSF-Mojarra-2.1.22
        。我将我的
        JSF-mojara
        版本从
        2.2
        降级到
        2.1.22
        ,它工作起来很有魅力


        如果我没有错,我想应该向primefaces报告(如果不是最新版本)。

        您是否遇到任何异常抛出?如果有,我会将其包括在我的问题中。