我想用分页功能制作一个简单的数据表,但我有两个问题:
1-显示数据,但浏览器中未显示分页器(我尝试过IE和Chrome)
<p:dataTable var="garbage" value="#{resultsController.allGarbage}" paginator="true" rows="10">
<p:column>
<f:facet name="header">
<h:outputText value="Filename" />
</f:facet>
<h:outputText value="#{garbage.filename}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Description" />
</f:facet>
<h:outputText value="#{garbage.description}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Upload date" />
</f:facet>
<h:outputText value="#{garbage.uploadDate}" />
</p:column>
</p:dataTable>
2-在Google Chrome分页器中仍然没有显示,每次刷新时我都会看到一些额外的对话框:
这是否意味着primefaces与chrome不兼容?
------------------------ UPDATE 1 --------------------- ---------
这就是保持页面的样子:
<ui:composition template="WEB-INF/templates/BasicTemplate.xhtml">
<ui:define name="resultsForm">
<h:form enctype="multipart/form-data">
<h:inputText id="search" value="" /><h:commandButton value="search"/>
<h:selectOneRadio id="searchFilter" value="" >
<f:selectItem id="r1" itemLabel="text documents(.pdf, .docx ...)" />
<f:selectItem id="r2" itemLabel="audio(.mp3,.wav...)" />
<f:selectItem id="r3" itemLabel="multimedia(.mpeg,flv...)" />
<f:selectItem id="r4" itemLabel="other..." />
</h:selectOneRadio>
<p:dataTable var="garbage" value="#{resultsController.allGarbage}" paginator="true" rows="10"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15">
<p:column>
<f:facet name="header">
<h:outputText value="Filename" />
</f:facet>
<h:outputText value="#{garbage.filename}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Description" />
</f:facet>
<h:outputText value="#{garbage.description}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Upload date" />
</f:facet>
<h:outputText value="#{garbage.uploadDate}" />
</p:column>
</p:dataTable>
</h:form>
</ui:define>
------------------------ UPDATE 2 --------------------- ---------
此图像是组件在chrome中的显示方式以及chrome控制台如何显示错误:
答案 0 :(得分:2)
如果在生成的HTML <head>
中没有看到任何PrimeFaces特定的CSS / JS导入(在浏览器中右键单击页面,选择查看源,则表示您需要更换JSF <head>
模板中的HTML <h:head>
。这就是所有资源依赖关系(连接到JSF组件/库的CSS / JS / images / etc)最终都会出现的地方。
在以前的PrimeFaces版本中(至少在2.0版本中),您还需要配置资源servlet,以便PrimeFaces可以从JAR文件中提供它们:
<servlet>
<servlet-name>Resource Servlet</servlet-name>
<servlet-class>org.primefaces.resource.ResourceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Resource Servlet</servlet-name>
<url-pattern>/primefaces_resource/*</url-pattern>
</servlet-mapping>
但是我不确定更新的PrimeFaces版本是否超过2.0,目前用户手册因某些原因不再免费。
答案 1 :(得分:1)
从JS错误看,PrimeFaces javascript库似乎没有被正确包含。</ p>
我和mojarra有同样的问题(在js控制台中没有定义“mojarra”)。似乎由于某种原因,不包括js libs(应该由服务器完成)。有时它们有时不会(从未找到原因)。
如果有人读到这个有想法,我会感激任何提示。
对于mojarre,我的解决方法是手动包含mojarra的js lib。
关于您的问题,请尝试使用Primefaces。
在我的项目中有一个页面使用p:dataTable和分页。包含以下js文件(加上其他一些;显示在html输出源中):
<script type="text/javascript" src="/register/primefaces_resource/2.1/yui/datasource/datasource-min.js"></script>
<script type="text/javascript" src="/register/primefaces_resource/2.1/primefaces/paginator/paginator.js"></script>
<script type="text/javascript" src="/register/primefaces_resource/2.1/yui/datatable/datatable-min.js"></script>
<script type="text/javascript" src="/register/primefaces_resource/2.1/primefaces/datatable/datatable.js"></script>
<script type="text/javascript" src="/register/primefaces_resource/2.1/yui/swf/swf-min.js"></script>
<script type="text/javascript" src="/register/primefaces_resource/2.1/yui/charts/charts-min.js"></script>
<script type="text/javascript" src="/register/primefaces_resource/2.1/primefaces/charts/charts.js"></script>
查看您的html输出并检查是否包含与分页相关的js文件。如果没有,请手动包含它们。请注意,src属性中的/register
是我的上下文路径。将其替换为您的上下文路径。