(JSF 2.0) Проблемы с компонентом dataTable простых лиц. - PullRequest
1 голос
/ 28 марта 2011

Я хочу сделать простой набор данных с помощью функции нумерации страниц, но у меня есть 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 paginator по-прежнему не отображается, а также каждый раз, когда я обновляю, я вижу какое-то странное диалоговое окно:

enter image description here

Означает ли это, что основные лица не совместимы с Chrome?

------------------------ ОБНОВЛЕНИЕ 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>

------------------------ ОБНОВЛЕНИЕ 2 --------------------- ---------

Это изображение показывает, как компонент отображается в Chrome, и как на консолях Chrome отображается ошибка: enter image description here

Ответы [ 2 ]

2 голосов
/ 28 марта 2011

Если вы не видите каких-либо специфических импортов CSS / JS для PrimeFaces в сгенерированный HTML <head> (щелкните правой кнопкой мыши страницу в браузере, выберите Просмотреть исходный код , то это означает, что вам нужно заменить HTML <head> в вашем шаблоне от JSF <h:head>. Именно в этом случае все зависимости ресурсов (CSS / JS / images / etc, которые связаны с компонентами / библиотеками JSF) будут заканчиваться на.

В предыдущих версиях PrimeFaces (по крайней мере, в 2.0) вам также необходимо настроить сервлет ресурсов, чтобы 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 голос
/ 28 марта 2011

Из-за ошибки JS кажется, что библиотеки Javascript PrimeFaces включены неправильно.

У меня была такая же проблема с mojarra ("mojarra не определено" в консоли js).Кажется, что по какой-то причине js-библиотеки не включены (должно быть сделано сервером).Иногда они есть, иногда нет (никогда не выяснял причину).

Если у кого-нибудь есть эта идея, я был бы благодарен за любую подсказку.

Для mojarreМой обходной путь заключался в том, чтобы вручную включить js lib из mojarra.

Что касается вашей проблемы, попробуйте то же самое для Primefaces.

В моем проекте есть страница, которая использует p: dataTable и pagination.Включены следующие 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-файлы, связанные с разбиением на страницы.Если нет, включите их вручную.Обратите внимание, что /register в атрибутах src - это мой контекстный путь.Замените его своим контекстным путем.

...