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
Antonio CaudySpainIvan Magalhaes PROPOSAL
Darci PoquetteArgentinaElwin Sharvill UNQUALIFIED
Misaki RoysterItalyIvan Magalhaes RENEWAL
Arvin AlbaresCanadaAnna Fali QUALIFIED
Isabel BowleyIndiaAmy Elsner QUALIFIED
Izzy GarufiAustraliaStephen Shaw PROPOSAL
Jeanfrancois VenereItalyOnyama Limba UNQUALIFIED
Kaitlin OstroskyBrazilElwin Sharvill NEGOTIATION
Arvin AlbaresArgentinaIvan Magalhaes UNQUALIFIED
Octavia MaletJapanOnyama Limba PROPOSAL
Sinclair WaycottFranceOnyama Limba UNQUALIFIED
Octavia MaletItalyBernardo Dominic RENEWAL
Costa DilliardItalyAnna Fali NEW
Costa DilliardFranceAmy Elsner NEW
Izzy GarufiJapanStephen Shaw UNQUALIFIED
Juan WieserSpainIoni Bowcher QUALIFIED
Antonio CaudyArgentinaAmy Elsner RENEWAL
James ButtUnited KingdomAnna Fali QUALIFIED
Claire TollnerAustraliaXuxue Feng QUALIFIED
Jefferson SchemmerSpainXuxue Feng PROPOSAL
Misaki RoysterIndiaOnyama Limba QUALIFIED
Chavez BriddickUnited KingdomIoni Bowcher NEW
Sinclair WaycottBrazilAnna Fali RENEWAL
Ashley DoeCanadaAnna Fali NEW
Maisha RulapaughIndiaAmy Elsner UNQUALIFIED
Jeanfrancois VenereIndiaIoni Bowcher RENEWAL
Leon OldroydAustraliaStephen Shaw NEW
Kadeem FlosiSpainAmy Elsner QUALIFIED
Murillo MaletJapanIoni Bowcher UNQUALIFIED
Deepesh ChuiGermanyIvan Magalhaes UNQUALIFIED
Francesco ShinkoGermanyElwin Sharvill QUALIFIED
Murillo MaletItalyIoni Bowcher NEGOTIATION
Misaki RoysterCanadaAsiya Javayant PROPOSAL
Jones VocelkaCanadaBernardo Dominic NEGOTIATION
Leja CaldareraAustraliaElwin Sharvill RENEWAL
Jones VocelkaGermanyXuxue Feng RENEWAL
Ashley DoeCanadaElwin Sharvill NEW
Morrow RutaBrazilOnyama Limba RENEWAL
Adams MorascaBrazilStephen Shaw RENEWAL
Costa DilliardAustraliaStephen Shaw RENEWAL
Alejandro PerinSpainAsiya Javayant NEGOTIATION
Mayumi KolmetzSpainElwin Sharvill RENEWAL
Kadeem FlosiItalyAmy Elsner QUALIFIED
Julie StensethItalyOnyama Limba UNQUALIFIED
Cody SaylorsCanadaAsiya Javayant PROPOSAL
Jefferson SchemmerAustraliaXuxue Feng UNQUALIFIED
Ashley DoeAustraliaXuxue Feng PROPOSAL
James ButtCanadaXuxue Feng NEW
Greenwood BologniaAustraliaStephen Shaw NEW
Ashley DoeBrazilOnyama Limba QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Kadeem FlosiArgentinaStephen Shaw PROPOSAL
Aruna FigeroaUnited KingdomStephen Shaw UNQUALIFIED
Maria MarrierUnited KingdomBernardo Dominic NEGOTIATION
Aditya KuskoFranceIoni Bowcher NEGOTIATION
Jennifer AmigonIndiaBernardo Dominic QUALIFIED
Misaki RoysterUnited KingdomAsiya Javayant UNQUALIFIED
Jefferson SchemmerAustraliaOnyama Limba UNQUALIFIED
Juan WieserFranceElwin Sharvill QUALIFIED
Darci PoquetteGermanyAsiya Javayant NEGOTIATION
Maria MarrierAustraliaElwin Sharvill QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Smith GlickRussia2026-03-28Feltz Printing Service NEGOTIATION18Elwin Sharvill
1001James ButtItaly2026-04-06Truhlar And Truhlar Attys NEW72Xuxue Feng
1002Izzy GarufiSpain2026-03-30Benton, John B Jr UNQUALIFIED60Anna Fali
1003Antonio CaudyBrazil2026-04-02Chapman, Ross E Esq NEGOTIATION74Anna Fali
1004Tony FollerBrazil2026-03-24Buckley Miller Wright NEW6Amy Elsner
1005Costa DilliardCanada2026-04-15Chemel, James L Cpa NEGOTIATION71Anna Fali
1006Alejandro PerinFrance2026-04-13Commercial Press NEW79Onyama Limba
1007Silvio SlusarskiUnited Kingdom2026-03-24Rangoni Of Florence UNQUALIFIED84Ivan Magalhaes
1008Aruna FigeroaCanada2026-04-10Rousseaux, Michael Esq RENEWAL85Amy Elsner
1009Juan WieserAustralia2026-04-12Benton, John B Jr NEW18Xuxue Feng
1010Francesco ShinkoGermany2026-04-12Chanay, Jeffrey A Esq RENEWAL68Stephen Shaw
1011Deepesh ChuiRussia2026-04-20Printing Dimensions QUALIFIED28Ivan Magalhaes
1012Ashley DoeArgentina2026-04-17Commercial Press UNQUALIFIED2Elwin Sharvill
1013Izzy GarufiBrazil2026-04-06Rangoni Of Florence NEW29Ivan Magalhaes
1014Arvin AlbaresFrance2026-04-10Morlong Associates RENEWAL49Stephen Shaw
1015Adams MorascaRussia2026-03-28King, Christopher A Esq RENEWAL14Xuxue Feng
1016Deepesh ChuiIndia2026-03-28Commercial Press RENEWAL31Stephen Shaw
1017Chavez BriddickAustralia2026-03-31King, Christopher A Esq RENEWAL48Ioni Bowcher
1018Isabel BowleyGermany2026-04-07Chemel, James L Cpa UNQUALIFIED61Bernardo Dominic
1019Emily WhobreyGermany2026-04-10Rangoni Of Florence PROPOSAL53Asiya Javayant
1020Nicolas IturbideAustralia2026-04-17Benton, John B Jr QUALIFIED72Xuxue Feng
1021Mayumi KolmetzGermany2026-04-22Rousseaux, Michael Esq UNQUALIFIED2Asiya Javayant
1022Costa DilliardGermany2026-03-31Feltz Printing Service NEW26Asiya Javayant
1023Sinclair WaycottIndia2026-04-06King, Christopher A Esq QUALIFIED81Xuxue Feng
1024Wickens NestleSpain2026-04-22Commercial Press RENEWAL81Ivan Magalhaes
1025Leon OldroydFrance2026-04-02Commercial Press UNQUALIFIED58Onyama Limba
1026Izzy GarufiAustralia2026-04-16Printing Dimensions NEGOTIATION8Elwin Sharvill
1027Ricardo GauchoUnited Kingdom2026-04-17Benton, John B Jr NEGOTIATION31Onyama Limba
1028Antonio CaudyUnited Kingdom2026-03-25Dorl, James J Esq NEW94Stephen Shaw
1029Deepesh ChuiGermany2026-03-31Printing Dimensions PROPOSAL36Ioni Bowcher
1030Morrow RutaRussia2026-04-09Feltz Printing Service NEGOTIATION18Onyama Limba
1031Sinclair WaycottJapan2026-04-06Buckley Miller Wright RENEWAL65Onyama Limba
1032Salvatore StockhamFrance2026-04-06Chanay, Jeffrey A Esq NEGOTIATION21Asiya Javayant
1033Morrow RutaIndia2026-04-16Commercial Press QUALIFIED22Anna Fali
1034Jefferson SchemmerItaly2026-04-07Commercial Press QUALIFIED2Anna Fali
1035Alejandro PerinGermany2026-04-08Commercial Press NEGOTIATION41Elwin Sharvill
1036Salvatore StockhamGermany2026-04-02Printing Dimensions UNQUALIFIED84Ioni Bowcher
1037Salvatore StockhamJapan2026-04-22Feiner Bros RENEWAL11Elwin Sharvill
1038Deepesh ChuiRussia2026-04-16Dorl, James J Esq NEGOTIATION68Asiya Javayant
1039David DarakjyIndia2026-03-31Feltz Printing Service NEW97Ioni Bowcher
1040Nicolas IturbideGermany2026-04-02Rousseaux, Michael Esq NEW25Bernardo Dominic
1041Tony FollerJapan2026-04-15Buckley Miller Wright UNQUALIFIED8Ivan Magalhaes
1042Misaki RoysterIndia2026-04-12Benton, John B Jr QUALIFIED65Bernardo Dominic
1043Cody SaylorsFrance2026-04-03Buckley Miller Wright PROPOSAL3Xuxue Feng
1044Julie StensethSpain2026-04-06Buckley Miller Wright NEW37Onyama Limba
1045Munro FerenczUnited Kingdom2026-03-29Benton, John B Jr UNQUALIFIED47Ivan Magalhaes
1046Leja CaldareraSpain2026-04-05Feiner Bros PROPOSAL45Elwin Sharvill
1047Johnson SergiArgentina2026-04-21Buckley Miller Wright RENEWAL74Bernardo Dominic
1048Antonio CaudySpain2026-04-22Commercial Press NEGOTIATION24Anna Fali
1049Johnson SergiArgentina2026-04-18Benton, John B Jr NEGOTIATION22Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Mujtaba NickaUnited KingdomOnyama Limba UNQUALIFIED
Wickens NestleBrazilStephen Shaw QUALIFIED
Wickens NestleFranceXuxue Feng NEW
Silvio SlusarskiAustraliaStephen Shaw RENEWAL
Maisha RulapaughAustraliaStephen Shaw PROPOSAL
Juan WieserRussiaAmy Elsner UNQUALIFIED
Murillo MaletCanadaXuxue Feng RENEWAL
Wickens NestleAustraliaIvan Magalhaes NEW
Sinclair WaycottAustraliaOnyama Limba RENEWAL
Claire TollnerBrazilBernardo Dominic QUALIFIED
Salvatore StockhamArgentinaAnna Fali NEW
Kadeem FlosiCanadaAnna Fali PROPOSAL
Clifford RimSpainOnyama Limba PROPOSAL
Mujtaba NickaSpainAnna Fali QUALIFIED
Munro FerenczFranceBernardo Dominic NEGOTIATION
Leon OldroydGermanyElwin Sharvill NEGOTIATION
Deepesh ChuiCanadaIvan Magalhaes UNQUALIFIED
Faith GillianItalyIoni Bowcher RENEWAL
Kaitlin OstroskyCanadaIvan Magalhaes PROPOSAL
Costa DilliardRussiaAmy Elsner UNQUALIFIED
Cody SaylorsSpainAmy Elsner NEW
Isabel BowleyRussiaIoni Bowcher UNQUALIFIED
Ivar PaprockiGermanyXuxue Feng UNQUALIFIED
Kadeem FlosiAustraliaAnna Fali UNQUALIFIED
Cody SaylorsRussiaAsiya Javayant QUALIFIED
Salvatore StockhamBrazilAsiya Javayant QUALIFIED
Misaki RoysterCanadaAmy Elsner PROPOSAL
Greenwood BologniaSpainOnyama Limba UNQUALIFIED
Salvatore StockhamUnited KingdomStephen Shaw QUALIFIED
Morrow RutaCanadaBernardo Dominic UNQUALIFIED
Rodrigues CampainSpainBernardo Dominic RENEWAL
Clifford RimItalyAmy Elsner QUALIFIED
David DarakjySpainAmy Elsner UNQUALIFIED
Nicolas IturbideItalyAnna Fali PROPOSAL
James ButtItalyOnyama Limba UNQUALIFIED
Claire TollnerSpainStephen Shaw PROPOSAL
Isabel BowleyGermanyXuxue Feng UNQUALIFIED
Arvin AlbaresRussiaAnna Fali PROPOSAL
Maria MarrierItalyAsiya Javayant NEW
Kaitlin OstroskyJapanIvan Magalhaes PROPOSAL
Leon OldroydSpainOnyama Limba PROPOSAL
Darci PoquetteSpainStephen Shaw QUALIFIED
Adams MorascaArgentinaElwin Sharvill NEW
David DarakjyRussiaAnna Fali PROPOSAL
Mujtaba NickaSpainBernardo Dominic NEW
Francesco ShinkoIndiaElwin Sharvill PROPOSAL
Smith GlickJapanXuxue Feng NEW
Julie StensethJapanXuxue Feng RENEWAL
Greenwood BologniaItalyStephen Shaw NEW
Jones VocelkaBrazilStephen Shaw NEW
Frozen Columns
Name
James Butt
Francesco Shinko
David Darakjy
Aditya Kusko
Mujtaba Nicka
Munro Ferencz
James Butt
Clifford Rim
Cody Saylors
Faith Gillian
Aruna Figeroa
Leon Oldroyd
Clifford Rim
Leon Oldroyd
Leon Oldroyd
Stacey Maclead
Mayumi Kolmetz
Darci Poquette
Johnson Sergi
Octavia Malet
Mayumi Kolmetz
Jefferson Schemmer
Clifford Rim
Emily Whobrey
Aika Inouye
Emily Whobrey
Stacey Maclead
Kaitlin Ostrosky
Wickens Nestle
Maria Marrier
Deepesh Chui
Adams Morasca
Jones Vocelka
Silvio Slusarski
Jeanfrancois Venere
Sinclair Waycott
Ashley Doe
Octavia Malet
Mayumi Kolmetz
Morrow Ruta
Adams Morasca
Alejandro Perin
Arvin Albares
Ashley Doe
Isabel Bowley
Aika Inouye
Nicolas Iturbide
Ashley Doe
Wickens Nestle
Wickens Nestle
IdCountryDate
1000Russia2026-03-24
1001Canada2026-03-28
1002Germany2026-04-11
1003Italy2026-04-07
1004Russia2026-04-10
1005Japan2026-04-15
1006Australia2026-04-01
1007India2026-04-17
1008India2026-03-27
1009Australia2026-04-14
1010Russia2026-04-11
1011India2026-04-01
1012Italy2026-03-31
1013Germany2026-04-07
1014Japan2026-04-17
1015Australia2026-04-10
1016Argentina2026-04-01
1017Argentina2026-04-08
1018Brazil2026-04-22
1019Australia2026-03-29
1020United Kingdom2026-04-01
1021Canada2026-03-30
1022Italy2026-04-20
1023Spain2026-03-25
1024Argentina2026-04-12
1025Italy2026-03-25
1026Argentina2026-04-07
1027Australia2026-03-25
1028Australia2026-04-20
1029Japan2026-04-17
1030Argentina2026-04-21
1031Australia2026-04-05
1032India2026-04-21
1033Russia2026-04-05
1034Spain2026-04-12
1035Italy2026-04-21
1036Brazil2026-04-18
1037Brazil2026-04-09
1038France2026-04-22
1039Italy2026-04-14
1040Italy2026-04-20
1041Germany2026-04-04
1042Argentina2026-04-14
1043Italy2026-04-17
1044Canada2026-03-26
1045Canada2026-03-28
1046United Kingdom2026-04-10
1047Germany2026-04-14
1048Germany2026-04-05
1049Germany2026-04-15

On-Demand Data

NameIdCountryDate
Maria Marrier1000Canada2026-04-03
Mayumi Kolmetz1001Italy2026-03-26
Francesco Shinko1002Australia2026-04-11
Alejandro Perin1003Argentina2026-04-21
Claire Tollner1004France2026-04-06
Jones Vocelka1005Spain2026-04-19
Francesco Shinko1006United Kingdom2026-03-27
Julie Stenseth1007Australia2026-04-22
Johnson Sergi1008Spain2026-03-31
Octavia Malet1009France2026-03-24
Cody Saylors1010Russia2026-03-28
Arvin Albares1011Brazil2026-04-20
Deepesh Chui1012Japan2026-03-28
Emily Whobrey1013United Kingdom2026-04-15
Costa Dilliard1014Japan2026-04-17
Mayumi Kolmetz1015Brazil2026-04-11
Leon Oldroyd1016Japan2026-04-17
Costa Dilliard1017Australia2026-03-31
Deepesh Chui1018Germany2026-04-13
Julie Stenseth1019Italy2026-04-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kaitlin OstroskyIndiaStephen Shaw NEGOTIATION
Izzy GarufiUnited KingdomElwin Sharvill UNQUALIFIED
David DarakjyAustraliaXuxue Feng NEGOTIATION
Francesco ShinkoBrazilIoni Bowcher NEW
Sinclair WaycottUnited KingdomElwin Sharvill NEGOTIATION
Darci PoquetteIndiaIvan Magalhaes QUALIFIED
Cody SaylorsGermanyOnyama Limba NEGOTIATION
Munro FerenczItalyAnna Fali NEW
Silvio SlusarskiAustraliaIvan Magalhaes NEW
Johnson SergiArgentinaIvan Magalhaes NEW
Jennifer AmigonSpainOnyama Limba NEW
Nicolas IturbideSpainBernardo Dominic RENEWAL
Jones VocelkaBrazilBernardo Dominic NEW
Sinclair WaycottArgentinaElwin Sharvill RENEWAL
Jennifer AmigonUnited KingdomXuxue Feng NEW
Johnson SergiRussiaStephen Shaw NEGOTIATION
Antonio CaudyRussiaOnyama Limba UNQUALIFIED
Julie StensethGermanyAsiya Javayant QUALIFIED
Octavia MaletArgentinaStephen Shaw RENEWAL
Mujtaba NickaFranceElwin Sharvill RENEWAL
Silvio SlusarskiIndiaIoni Bowcher QUALIFIED
Chavez BriddickSpainAnna Fali NEGOTIATION
Chavez BriddickUnited KingdomXuxue Feng QUALIFIED
Kadeem FlosiFranceStephen Shaw QUALIFIED
Kadeem FlosiJapanOnyama Limba RENEWAL
Mujtaba NickaIndiaAnna Fali UNQUALIFIED
Kadeem FlosiGermanyAnna Fali NEW
Cody SaylorsUnited KingdomBernardo Dominic QUALIFIED
Cody SaylorsIndiaAnna Fali UNQUALIFIED
Misaki RoysterJapanXuxue Feng NEW
David DarakjyJapanBernardo Dominic QUALIFIED
Deepesh ChuiSpainStephen Shaw PROPOSAL
Isabel BowleyFranceXuxue Feng NEGOTIATION
Sinclair WaycottArgentinaElwin Sharvill NEGOTIATION
Salvatore StockhamCanadaAnna Fali NEGOTIATION
Adams MorascaBrazilElwin Sharvill PROPOSAL
Ivar PaprockiRussiaAmy Elsner NEGOTIATION
Murillo MaletUnited KingdomAsiya Javayant QUALIFIED
Chavez BriddickAustraliaBernardo Dominic UNQUALIFIED
Ricardo GauchoIndiaBernardo Dominic NEGOTIATION

<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>