AJAX Primefaces 页面上的错误

AJAX errors on Primefaces page

我正在尝试模拟 Primefaces Showcase 以获得使用过滤和行扩展的结果集。每当我尝试其中任何一个时,我都会出错。页面加载没有错误。在代码示例中,我去除了过滤以隔离问题。似乎任何时候触发 AJAX 请求都会出错。尝试使用行扩展时会触发错误,因为它使用 AJAX 调用来获取扩展行。

我们在 IBM Rad 本地服务器 (Eclipse) 上使用 Primefaces 8.0。结果集是使用 Hibernate 从 DB2 中提取的,并且该部分有效。

请帮忙说明为什么 AJAX 每次都失败?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
<h:head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
</h:head>
<h:body>
    <ui:composition template="/template/maintemplate.xhtml">
        <ui:define name="title">Search Results</ui:define>
        <ui:define name="content">
            <h:form id="formId">
        #{searchResultsBean.init}   
            <p:dataTable id="parameterList" var="data"
                value="#{searchResultsBean.parameterList}">
                <p:column style="width:16px">
                    <p:rowToggler />
                </p:column>
                <p:column value="#{data.companyId}" >
                    <f:facet name="header">
                        <h:outputText value="Company ID" />
                    </f:facet>
                    <h:outputText value="#{data.companyId}" />
                </p:column>
                <p:column value="#{data.companyName}" >
                    <f:facet name="header">
                        <h:outputText value="Company Name" />
                    </f:facet>
                    <h:outputText value="#{data.companyName}" />
                </p:column>
                <p:column value="#{data.alertNumber}">
                    <f:facet name="header">
                        <h:outputText value="Alert Number" />
                    </f:facet>
                    <h:outputText value="#{data.alertNumber}" />
                </p:column>
                <p:column value="#{data.comment}">
                    <f:facet name="header">
                        <h:outputText value="Comment" />
                    </f:facet>
                    <h:outputText value="#{data.comment}" />
                </p:column>
                <p:rowExpansion>
                    <p:panelGrid columns="2" columnClasses="label,value"
                        style="width:300px">
                        <h:outputText value="Company ID" />
                        <h:outputText value="#{data.companyId}" />

                        <h:outputText value="Company Name" />
                        <h:outputText value="#{data.companyName}" />

                        <h:outputText value="Alert #" />
                        <h:outputText value="#{data.alertNumber}" />

                        <h:outputText value="Alert Description" />
                        <h:outputText value="$#{data.alertNumber}" />
                    </p:panelGrid>
                </p:rowExpansion>
            </p:dataTable>
        </h:form>
    </ui:define>
</ui:composition>
</h:body>

</html>

控制台收到错误:

ReferenceError: ajaxWaitCursorOn is not defined

primefaces 生成的特定错误javascript:

$(function(){PrimeFaces.cw("AjaxStatus","widget_j_id878804506_56ad391e",{id:"j_id878804506_56ad391e",delay:0,start:function(){ajaxWaitCursorOn()},success:function(){ajaxWaitCursorOff()}});});

注意 1:我们尝试将其更改为使用 @Inject 而不是调用 init 方法并得到相同的结果。

注意 2:我们使用控制台中的简单警报验证了 jQuery 已加载。

问题出在上面这一行:template="/template/maintemplate.xhtml

正在加载模板文件。我们没有做这个,而是从另一个项目复制的。由于某种原因,模板文件中有这一行:<p:ajaxStatus onstart="ajaxWaitCursorOn()" onsuccess="ajaxWaitCursorOff()" />

我不确定这个答案是否对除此之外的任何人都有价值:如果有模板文件,请检查。