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()" />
我不确定这个答案是否对除此之外的任何人都有价值:如果有模板文件,请检查。
我正在尝试模拟 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()" />
我不确定这个答案是否对除此之外的任何人都有价值:如果有模板文件,请检查。