(JSF 2.0)primefaces dataTable组件的问题。

时间:2011-03-28 10:07:00

标签: java jsf browser java-ee jsf-2

我想用分页功能制作一个简单的数据表,但我有两个问题:

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分页器中仍然没有显示,每次刷新时我都会看到一些额外的对话框:

enter image description here

这是否意味着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控制台如何显示错误: enter image description here

2 个答案:

答案 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是我的上下文路径。将其替换为您的上下文路径。