PrimeFaces 3.0 -заголовки не совпадают с использованием scrollable = "true" - PullRequest
15 голосов
/ 30 июня 2011

У меня есть веб-приложение JSF 2, использующее компоненты PrimeFaces 3.0.На одной странице я использую компонент <p:dataTable> внутри составного компонента для отображения таблицы объектов.У меня был успех с этим компонентом, пока я не попытался использовать опцию scrollable="true".Теперь заголовки столбцов таблицы не совпадают с содержимым столбцов.Я попытался использовать IE 7 (который является целевым браузером для моей клиентской среды) и Firefox 4.0.1 для сравнения.Оба демонстрируют проблему, но она более выражена в IE 7.

Скриншот IE 7 :

IE 7 screenshot

Скриншот Firefox 4.0.1 :

Firefox 4.0.1 screenshot

Вот код моей страницы Facelet:

<p:dataTable
        id="vesselsDataTable"
        value="#{cc.attrs.vesselAdapterList}"
        var="currentRow"
        selection="#{editVesselBean.selectedRow}"
        selectionMode="single"
        scrollable="true"
        height="500">
    <p:column
            id="imoColumn"
            style="width:45px"
            sortBy="#{currentRow.imo}">
        <f:facet name="header">
            <h:outputText value="IMO" />
        </f:facet>
        <div class="#{currentRow.imoStyleClass}">
            <h:outputText value="#{currentRow.imo}"
        </div>
    </p:column>
    <p:column
            id="notesIndicatorColumn"
            style="width:35px"
            sortBy="#{currentRow.hasNotes}">
        <f:facet name="header">
            <h:outputText value="#{bundle.labelNotes}" />
        </f:facet>
        <h:outputText 
            styleClass="noteIndicator"
            id="vesselNotesIndicator"
            value="#{bundle.stringNoteIndicatorText}"
            title="#{currentRow.notesAsTooltipText}"
            rendered="#{currentRow.hasNotes}"
    </p:column>
    <ui:remove>other column definitions omitted for brevity...</ui:remove>
<p:dataTable>

У каждого из моих столбцов есть определенный стиль с фиксированной шириной в пикселях, а в самой dataTable установлен атрибут height.Это похоже на то, что показано в демонстрационной версии Showcase и в PDF-руководстве по 2.2.

Цитируя это руководство:

Прокрутка - это способ отображенияДля данных с фиксированными заголовками, чтобы включить простую прокрутку, установите для параметров прокрутки значение true, определите фиксированную высоту в пикселях и установите фиксированную ширину для каждого столбца.

Может кто-нибудь сказатьмне, что я делаю не так?

Я использую текущий PrimeFaces 3.0-M2-SNAPSHOT с текущим Mojarra 2.1 JSF RI.

UPDATE

Я перешел на версию PrimeFaces 3.0-M2 (не снимок), и проблема все еще существует.Следуя предложениям Maple и BalusC, я (временно) удалил сортировку столбцов и попробовал разные типы документов.Я наконец остановился на XHTML 1.0 Strict doc type.Он не показывает каких-либо улучшений в IE 7, но показывает некоторое улучшение в Firefox 4.

IE 7 с XHTML 1.0 Strict

IE 7 with XHTML 1.0 Strict

Firefox 4 с XHTML 1.0 Strict

Firefox 4 with XHTML 1.0 Strict

<p:dataTable> находится внутри <p:panel>, который находится внутри <p:layout>.Может ли это быть связано?

Ответы [ 3 ]

2 голосов
/ 01 июля 2011

Это явно проблема CSS / JS.Прокручиваемая таблица с фиксированными заголовками невозможна в простом HTML (если tbody { overflow: scroll; } поддерживаются всеми браузерами ...). Для достижения этой цели было изобретено множество различных CSS / JS-решений (хаков).У меня нет понимания источника PF 3, и я не знаю, какой хак он использует.Но это определенно должно быть сообщено парням из ПФ.Единственное, что вы можете сделать, это проверить, используете ли вы правильный HTML-тип документа (читай: строгий тип документа), чтобы, по крайней мере, MSIE не работал в режим причуд .

Например, HTML5

<!DOCTYPE html>

или XHTML 1.1

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<f:view contentType="text/html">

или XHTML 1.0 Strict

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<f:view contentType="text/html">

возможно XHTML 1.0 Transitional

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<f:view contentType="text/html">
1 голос
/ 14 июля 2011

Эта проблема обсуждается здесь, на форуме поддержки PrimeFaces .

С сегодняшнего дня (20 июля 2011 г.) проблема теперь может быть замечена в витрине лабораторий, организованной PrimeFaces, когдадля просмотра используйте Internet Explorer 7.0:

Screenshot of PrimeFaces Labs Showcase

РЕДАКТИРОВАТЬ: Исправлено с сегодняшней ночной сборкой PrimeFaces 3.0-M3-SNAPSHOT (22 июля 2011 г.).

0 голосов
/ 20 сентября 2013

У меня была такая же раздражающая проблема с смещением верхнего и нижнего колонтитула в двух проектах с PF 3.4.1. Игра с заголовком не помогла.

Кажется исправленным в PF 3.5.

...