Locale

Language
English
English
English
French
German
German
German
Italian
Korean
Spanish
Catalan
Dutch
Portuguese
Portuguese
Arabic
Arabic
Bulgarian
Bangla
Bosnian
Czech
Greek
Estonian
Persian
Finnish
Danish
Hindi
Indonesian
Icelandic
Croatian
Japanese
Hungarian
Hebrew
Georgian
Central Kurdish
Khmer
Kyrgyz
Kazakh
Lithuanian
Latvian
Malay
Norwegian
Polish
Romanian
Russian
Slovak
Slovenian
Serbian
Serbian
Swedish
Thai
Turkish
Ukrainian
Uzbek
Vietnamese
Chinese
Chinese

Input Style

Free Themes

Built-in component themes created by the PrimeFaces Theme Designer.

Saga Saga
Vela Vela
Arya Arya

Legacy Free Themes

Luna Amber Luna Amber
Luna Blue Luna Blue
Luna Green Luna Green
Luna Pink Luna Pink
Nova Nova
Nova Nova Alt
Nova Nova Accent

DataTable Scroll

Both vertical and horizontal scrolling of the data is supported with optional frozen rows-columns and on-demand loading features.

Vertical
NameCountryRepresentativeStatus
Deepesh ChuiItalyOnyama Limba QUALIFIED
Morrow RutaItalyIoni Bowcher RENEWAL
Emily WhobreyCanadaStephen Shaw NEGOTIATION
James ButtBrazilAsiya Javayant PROPOSAL
Jennifer AmigonSpainIoni Bowcher PROPOSAL
Silvio SlusarskiCanadaAsiya Javayant NEW
Stacey MacleadSpainAmy Elsner PROPOSAL
Wickens NestleArgentinaAsiya Javayant RENEWAL
Maisha RulapaughBrazilBernardo Dominic QUALIFIED
Morrow RutaBrazilIvan Magalhaes QUALIFIED
Francesco ShinkoCanadaAmy Elsner PROPOSAL
David DarakjyCanadaAnna Fali QUALIFIED
Ivar PaprockiJapanAmy Elsner NEGOTIATION
Munro FerenczIndiaAsiya Javayant NEW
Nicolas IturbideSpainAmy Elsner QUALIFIED
Mujtaba NickaFranceIvan Magalhaes RENEWAL
Ashley DoeGermanyBernardo Dominic RENEWAL
Leon OldroydSpainAsiya Javayant RENEWAL
Munro FerenczIndiaAnna Fali QUALIFIED
Silvio SlusarskiIndiaIvan Magalhaes NEW
Kaitlin OstroskyUnited KingdomIvan Magalhaes NEGOTIATION
Faith GillianRussiaAsiya Javayant NEGOTIATION
Salvatore StockhamRussiaIoni Bowcher PROPOSAL
Mujtaba NickaFranceElwin Sharvill QUALIFIED
Misaki RoysterIndiaAnna Fali UNQUALIFIED
Chavez BriddickUnited KingdomAnna Fali RENEWAL
Aruna FigeroaBrazilBernardo Dominic PROPOSAL
Salvatore StockhamJapanBernardo Dominic NEW
Leja CaldareraArgentinaAmy Elsner NEGOTIATION
Isabel BowleyItalyOnyama Limba NEW
Antonio CaudyBrazilAsiya Javayant UNQUALIFIED
Jefferson SchemmerAustraliaOnyama Limba PROPOSAL
Jeanfrancois VenereItalyOnyama Limba NEW
Darci PoquetteSpainOnyama Limba QUALIFIED
Ivar PaprockiJapanIoni Bowcher RENEWAL
Jones VocelkaCanadaBernardo Dominic RENEWAL
Emily WhobreyArgentinaIvan Magalhaes UNQUALIFIED
Claire TollnerFranceStephen Shaw RENEWAL
Jeanfrancois VenereJapanIvan Magalhaes RENEWAL
Aditya KuskoAustraliaAnna Fali RENEWAL
Murillo MaletGermanyOnyama Limba QUALIFIED
Rodrigues CampainJapanIoni Bowcher NEGOTIATION
Jefferson SchemmerJapanIoni Bowcher UNQUALIFIED
Maria MarrierRussiaIoni Bowcher RENEWAL
James ButtItalyAmy Elsner RENEWAL
Tony FollerCanadaXuxue Feng QUALIFIED
Sinclair WaycottFranceXuxue Feng RENEWAL
Faith GillianGermanyXuxue Feng RENEWAL
Salvatore StockhamUnited KingdomIvan Magalhaes NEW
Aika InouyeJapanAsiya Javayant RENEWAL
Horizontal
NameCountryRepresentativeStatus
Silvio SlusarskiAustraliaXuxue Feng QUALIFIED
Juan WieserIndiaBernardo Dominic NEGOTIATION
Mayumi KolmetzAustraliaIoni Bowcher RENEWAL
Deepesh ChuiUnited KingdomAnna Fali UNQUALIFIED
Morrow RutaArgentinaOnyama Limba NEW
Julie StensethIndiaAsiya Javayant PROPOSAL
Mujtaba NickaRussiaOnyama Limba UNQUALIFIED
Johnson SergiCanadaStephen Shaw RENEWAL
Johnson SergiAustraliaAmy Elsner QUALIFIED
Ashley DoeBrazilOnyama Limba RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Faith GillianAustralia2026-05-22Rangoni Of Florence PROPOSAL29Onyama Limba
1001Jones VocelkaBrazil2026-05-15Morlong Associates PROPOSAL22Anna Fali
1002Arvin AlbaresIndia2026-05-09Chanay, Jeffrey A Esq UNQUALIFIED60Anna Fali
1003Jennifer AmigonGermany2026-05-21Morlong Associates RENEWAL22Amy Elsner
1004Jennifer AmigonFrance2026-05-14King, Christopher A Esq PROPOSAL61Anna Fali
1005Leja CaldareraAustralia2026-05-27Morlong Associates NEGOTIATION56Asiya Javayant
1006Greenwood BologniaFrance2026-05-30Benton, John B Jr NEW6Xuxue Feng
1007Sinclair WaycottGermany2026-05-20Benton, John B Jr UNQUALIFIED47Ioni Bowcher
1008Juan WieserUnited Kingdom2026-05-04King, Christopher A Esq RENEWAL31Anna Fali
1009Aditya KuskoCanada2026-05-14Dorl, James J Esq NEGOTIATION65Xuxue Feng
1010Francesco ShinkoBrazil2026-05-31Printing Dimensions PROPOSAL99Ioni Bowcher
1011Juan WieserSpain2026-05-08Chanay, Jeffrey A Esq QUALIFIED23Xuxue Feng
1012Johnson SergiGermany2026-05-17Printing Dimensions NEGOTIATION42Stephen Shaw
1013Jefferson SchemmerFrance2026-05-17Printing Dimensions QUALIFIED89Amy Elsner
1014Aditya KuskoBrazil2026-05-15Chanay, Jeffrey A Esq QUALIFIED96Elwin Sharvill
1015Juan WieserSpain2026-05-10Benton, John B Jr NEW54Anna Fali
1016Aika InouyeArgentina2026-05-21Printing Dimensions RENEWAL17Elwin Sharvill
1017Faith GillianJapan2026-05-13Buckley Miller Wright NEGOTIATION82Ivan Magalhaes
1018Juan WieserBrazil2026-05-21Benton, John B Jr UNQUALIFIED88Stephen Shaw
1019Greenwood BologniaGermany2026-05-10Dorl, James J Esq PROPOSAL50Ioni Bowcher
1020Johnson SergiIndia2026-05-22Chanay, Jeffrey A Esq QUALIFIED90Bernardo Dominic
1021Rodrigues CampainUnited Kingdom2026-05-14Feiner Bros NEW99Bernardo Dominic
1022Cody SaylorsAustralia2026-06-02King, Christopher A Esq PROPOSAL78Xuxue Feng
1023Kadeem FlosiJapan2026-05-16Benton, John B Jr RENEWAL94Xuxue Feng
1024Juan WieserUnited Kingdom2026-05-20King, Christopher A Esq UNQUALIFIED8Ivan Magalhaes
1025Rodrigues CampainGermany2026-05-19Morlong Associates NEW31Asiya Javayant
1026Alejandro PerinAustralia2026-05-24Feiner Bros RENEWAL9Xuxue Feng
1027Faith GillianItaly2026-05-23Morlong Associates RENEWAL93Anna Fali
1028Antonio CaudyUnited Kingdom2026-05-18Morlong Associates NEW56Amy Elsner
1029Greenwood BologniaIndia2026-05-18Rousseaux, Michael Esq UNQUALIFIED25Ioni Bowcher
1030Mayumi KolmetzFrance2026-05-05Chapman, Ross E Esq PROPOSAL80Bernardo Dominic
1031Jefferson SchemmerCanada2026-05-05King, Christopher A Esq UNQUALIFIED23Xuxue Feng
1032Maisha RulapaughJapan2026-05-08Chemel, James L Cpa QUALIFIED80Xuxue Feng
1033Jennifer AmigonBrazil2026-05-28Benton, John B Jr RENEWAL86Xuxue Feng
1034Octavia MaletArgentina2026-05-16Chapman, Ross E Esq QUALIFIED58Anna Fali
1035Nicolas IturbideItaly2026-05-28Chemel, James L Cpa PROPOSAL37Ioni Bowcher
1036Greenwood BologniaSpain2026-05-18King, Christopher A Esq NEGOTIATION58Ivan Magalhaes
1037Costa DilliardCanada2026-05-15Dorl, James J Esq RENEWAL88Asiya Javayant
1038Salvatore StockhamSpain2026-05-13Buckley Miller Wright PROPOSAL80Asiya Javayant
1039Costa DilliardRussia2026-05-10Rangoni Of Florence RENEWAL2Ivan Magalhaes
1040Murillo MaletIndia2026-05-09Buckley Miller Wright UNQUALIFIED35Xuxue Feng
1041Arvin AlbaresCanada2026-05-05Chemel, James L Cpa QUALIFIED7Amy Elsner
1042James ButtBrazil2026-05-27Rangoni Of Florence NEGOTIATION94Anna Fali
1043Maria MarrierFrance2026-05-19Rangoni Of Florence NEGOTIATION40Xuxue Feng
1044Tony FollerItaly2026-05-07Rousseaux, Michael Esq RENEWAL93Anna Fali
1045Kaitlin OstroskyGermany2026-05-27Commercial Press RENEWAL17Amy Elsner
1046Isabel BowleyCanada2026-05-29Chanay, Jeffrey A Esq NEW77Asiya Javayant
1047Emily WhobreyBrazil2026-05-09Morlong Associates NEW25Xuxue Feng
1048David DarakjyFrance2026-05-16King, Christopher A Esq NEW66Xuxue Feng
1049Jeanfrancois VenereIndia2026-05-13Chanay, Jeffrey A Esq NEGOTIATION96Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Emily WhobreyAustraliaElwin Sharvill UNQUALIFIED
Jennifer AmigonGermanyAsiya Javayant NEW
Faith GillianIndiaBernardo Dominic RENEWAL
Wickens NestleFranceBernardo Dominic NEW
Mujtaba NickaItalyIoni Bowcher NEW
Leon OldroydCanadaBernardo Dominic PROPOSAL
Kaitlin OstroskyItalyElwin Sharvill QUALIFIED
Tony FollerUnited KingdomStephen Shaw NEGOTIATION
Alejandro PerinUnited KingdomElwin Sharvill RENEWAL
Faith GillianCanadaIoni Bowcher RENEWAL
Leon OldroydArgentinaAsiya Javayant NEW
Emily WhobreyItalyXuxue Feng NEGOTIATION
Kaitlin OstroskyItalyIoni Bowcher NEGOTIATION
Morrow RutaFranceIoni Bowcher QUALIFIED
Jennifer AmigonBrazilAmy Elsner QUALIFIED
Rodrigues CampainJapanElwin Sharvill UNQUALIFIED
Greenwood BologniaIndiaAsiya Javayant NEW
Claire TollnerFranceBernardo Dominic RENEWAL
Silvio SlusarskiFranceIvan Magalhaes UNQUALIFIED
Aruna FigeroaUnited KingdomAmy Elsner RENEWAL
Aditya KuskoArgentinaIoni Bowcher PROPOSAL
Adams MorascaGermanyOnyama Limba NEGOTIATION
Ricardo GauchoSpainIoni Bowcher NEW
Jeanfrancois VenereAustraliaAsiya Javayant NEGOTIATION
Claire TollnerFranceBernardo Dominic QUALIFIED
Salvatore StockhamRussiaOnyama Limba UNQUALIFIED
Kadeem FlosiFranceOnyama Limba RENEWAL
Jeanfrancois VenereArgentinaAmy Elsner RENEWAL
Kaitlin OstroskyAustraliaBernardo Dominic RENEWAL
Nicolas IturbideBrazilAsiya Javayant QUALIFIED
Maisha RulapaughRussiaAmy Elsner RENEWAL
David DarakjySpainElwin Sharvill NEW
Izzy GarufiRussiaAnna Fali UNQUALIFIED
Ivar PaprockiFranceIoni Bowcher QUALIFIED
Jefferson SchemmerCanadaOnyama Limba RENEWAL
Antonio CaudyArgentinaOnyama Limba UNQUALIFIED
Leon OldroydCanadaElwin Sharvill QUALIFIED
Antonio CaudyFranceAmy Elsner NEW
Kaitlin OstroskyIndiaAnna Fali RENEWAL
Aditya KuskoArgentinaIvan Magalhaes NEW
Darci PoquetteAustraliaAnna Fali NEW
Isabel BowleyBrazilAsiya Javayant PROPOSAL
Rodrigues CampainItalyAsiya Javayant PROPOSAL
Ricardo GauchoSpainStephen Shaw PROPOSAL
Jennifer AmigonUnited KingdomAmy Elsner UNQUALIFIED
Rodrigues CampainIndiaIoni Bowcher QUALIFIED
Deepesh ChuiJapanIoni Bowcher RENEWAL
Mayumi KolmetzBrazilAmy Elsner RENEWAL
Julie StensethUnited KingdomOnyama Limba QUALIFIED
Clifford RimIndiaAnna Fali QUALIFIED
Frozen Columns
Name
Aruna Figeroa
Maisha Rulapaugh
Aika Inouye
Ricardo Gaucho
Tony Foller
Salvatore Stockham
Murillo Malet
Greenwood Bolognia
Rodrigues Campain
Julie Stenseth
Kaitlin Ostrosky
Arvin Albares
David Darakjy
Arvin Albares
Jennifer Amigon
Johnson Sergi
Johnson Sergi
Juan Wieser
Emily Whobrey
Morrow Ruta
James Butt
Stacey Maclead
Aika Inouye
Murillo Malet
Deepesh Chui
Mayumi Kolmetz
Juan Wieser
Greenwood Bolognia
Chavez Briddick
Greenwood Bolognia
Ivar Paprocki
Jefferson Schemmer
Arvin Albares
Sinclair Waycott
Ashley Doe
Chavez Briddick
Claire Tollner
Adams Morasca
Misaki Royster
Jennifer Amigon
Ivar Paprocki
Izzy Garufi
Aditya Kusko
Darci Poquette
James Butt
Nicolas Iturbide
Jones Vocelka
Aika Inouye
Jones Vocelka
Munro Ferencz
IdCountryDate
1000France2026-05-24
1001Italy2026-05-09
1002India2026-05-20
1003France2026-05-09
1004Germany2026-05-29
1005Germany2026-05-20
1006Germany2026-05-11
1007Italy2026-05-10
1008Brazil2026-05-09
1009India2026-05-10
1010Australia2026-05-28
1011Germany2026-05-05
1012Spain2026-05-11
1013Brazil2026-05-30
1014Brazil2026-05-19
1015India2026-05-19
1016Australia2026-05-07
1017United Kingdom2026-05-11
1018India2026-05-05
1019Germany2026-05-27
1020Germany2026-05-08
1021Italy2026-06-01
1022India2026-05-08
1023France2026-05-05
1024Spain2026-05-16
1025Brazil2026-05-22
1026Italy2026-05-07
1027Canada2026-05-31
1028United Kingdom2026-05-16
1029Italy2026-05-06
1030Brazil2026-05-17
1031Germany2026-05-10
1032Brazil2026-05-17
1033France2026-05-15
1034India2026-05-10
1035Germany2026-05-15
1036India2026-05-10
1037Australia2026-05-04
1038United Kingdom2026-05-22
1039Italy2026-05-16
1040Argentina2026-05-12
1041Argentina2026-05-12
1042India2026-05-22
1043India2026-05-29
1044India2026-05-29
1045Canada2026-05-19
1046Russia2026-05-23
1047Brazil2026-05-23
1048India2026-05-11
1049Germany2026-05-04

On-Demand Data

NameIdCountryDate
Darci Poquette1000Germany2026-05-29
Clifford Rim1001Germany2026-05-24
Misaki Royster1002Canada2026-05-23
Maisha Rulapaugh1003Canada2026-05-21
Maria Marrier1004Russia2026-05-14
Emily Whobrey1005Brazil2026-05-25
Antonio Caudy1006Germany2026-05-07
Johnson Sergi1007Japan2026-05-27
Murillo Malet1008Canada2026-05-16
Stacey Maclead1009Canada2026-05-23
Antonio Caudy1010Canada2026-05-07
Cody Saylors1011Australia2026-05-19
Ivar Paprocki1012Spain2026-05-23
Sinclair Waycott1013Italy2026-05-21
Leon Oldroyd1014France2026-05-16
Murillo Malet1015Spain2026-05-25
Leja Caldarera1016India2026-05-11
Jeanfrancois Venere1017Italy2026-06-02
Munro Ferencz1018Russia2026-05-17
Salvatore Stockham1019Russia2026-05-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Isabel BowleyGermanyAmy Elsner UNQUALIFIED
David DarakjyItalyAnna Fali NEGOTIATION
Izzy GarufiIndiaBernardo Dominic QUALIFIED
Cody SaylorsSpainElwin Sharvill PROPOSAL
Jones VocelkaBrazilXuxue Feng UNQUALIFIED
Aditya KuskoCanadaIoni Bowcher UNQUALIFIED
Jones VocelkaArgentinaStephen Shaw NEW
Jones VocelkaJapanIvan Magalhaes NEW
Silvio SlusarskiJapanIvan Magalhaes PROPOSAL
Stacey MacleadCanadaAnna Fali PROPOSAL
Francesco ShinkoItalyIvan Magalhaes NEGOTIATION
Mujtaba NickaBrazilElwin Sharvill NEW
Johnson SergiBrazilAsiya Javayant RENEWAL
Claire TollnerGermanyAmy Elsner NEGOTIATION
Jones VocelkaSpainElwin Sharvill QUALIFIED
Tony FollerBrazilXuxue Feng UNQUALIFIED
Ashley DoeAustraliaIoni Bowcher NEW
Leon OldroydUnited KingdomAnna Fali UNQUALIFIED
Jeanfrancois VenereBrazilXuxue Feng NEW
Leon OldroydJapanIoni Bowcher NEW
Jennifer AmigonJapanAsiya Javayant RENEWAL
Antonio CaudyFranceBernardo Dominic PROPOSAL
Isabel BowleyIndiaOnyama Limba UNQUALIFIED
Stacey MacleadJapanBernardo Dominic QUALIFIED
Kaitlin OstroskyRussiaAnna Fali RENEWAL
David DarakjyItalyAmy Elsner RENEWAL
Tony FollerGermanyIvan Magalhaes QUALIFIED
Chavez BriddickUnited KingdomXuxue Feng RENEWAL
Smith GlickJapanOnyama Limba NEGOTIATION
Misaki RoysterCanadaBernardo Dominic NEGOTIATION
Jones VocelkaAustraliaAmy Elsner RENEWAL
Ivar PaprockiSpainStephen Shaw QUALIFIED
Arvin AlbaresBrazilAmy Elsner QUALIFIED
Greenwood BologniaIndiaAsiya Javayant RENEWAL
James ButtArgentinaAmy Elsner RENEWAL
Faith GillianUnited KingdomElwin Sharvill QUALIFIED
Silvio SlusarskiSpainAnna Fali UNQUALIFIED
Leja CaldareraItalyStephen Shaw UNQUALIFIED
Mujtaba NickaRussiaXuxue Feng RENEWAL
Mujtaba NickaGermanyAmy Elsner RENEWAL

<style>
    .ui-datatable-frozenlayout-left {
        width: 20%;
    }

    .ui-datatable-frozenlayout-right {
        width: 80%;
    }
</style>


<h:form>
    <div class="card">
        <h5 style="margin-top:0">Vertical</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers1}" scrollable="true" scrollHeight="250">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Horizontal</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers2}" scrollable="true" scrollWidth="600">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Horizontal and Vertical</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers3}" scrollable="true" scrollWidth="50%" scrollHeight="250">
            <p:column headerText="Id" footerText="Id">
                <h:outputText value="#{customer.id}"/>
            </p:column>
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Date" footerText="Date">
                <h:outputText value="#{customer.date}"/>
            </p:column>
            <p:column headerText="Company" footerText="Company">
                <h:outputText value="#{customer.company}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
            <p:column headerText="Activity" footerText="Activity">
                <h:outputText value="#{customer.activity}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Frozen Rows</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers4}" scrollable="true" scrollHeight="250"
                     frozenRows="2">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Frozen Columns</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers5}" scrollable="true" scrollHeight="250"
                     scrollWidth="300" frozenColumns="1">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Id" footerText="Id">
                <h:outputText value="#{customer.id}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Date" footerText="Date">
                <h:outputText value="#{customer.date}"/>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h3>On-Demand Data</h3>
        <p:dataTable var="customer" value="#{dtScrollView.customers6}" scrollRows="20" scrollable="true" liveScroll="true" scrollHeight="150">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Id" footerText="Id">
                <h:outputText value="#{customer.id}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Date" footerText="Date">
                <h:outputText value="#{customer.date}"/>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Virtual Scrolling - 20000 Rows</h5>
        <p:dataTable var="customer" value="#{dtScrollView.lazyModel}" scrollRows="20" scrollable="true"
                     virtualScroll="true" scrollHeight="200" rows="40" style="margin-bottom:0">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

</h:form>