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
Julie StensethSpainBernardo Dominic UNQUALIFIED
Faith GillianFranceStephen Shaw QUALIFIED
Claire TollnerAustraliaIoni Bowcher RENEWAL
Aditya KuskoArgentinaIoni Bowcher NEGOTIATION
Misaki RoysterJapanIvan Magalhaes NEW
Aditya KuskoBrazilBernardo Dominic PROPOSAL
Clifford RimAustraliaAsiya Javayant RENEWAL
Salvatore StockhamGermanyIoni Bowcher NEW
Leja CaldareraIndiaXuxue Feng NEGOTIATION
Stacey MacleadIndiaAmy Elsner UNQUALIFIED
Jennifer AmigonFranceAmy Elsner PROPOSAL
Misaki RoysterAustraliaAnna Fali PROPOSAL
Greenwood BologniaBrazilAsiya Javayant PROPOSAL
Claire TollnerSpainXuxue Feng UNQUALIFIED
Kaitlin OstroskyJapanStephen Shaw NEGOTIATION
Jennifer AmigonItalyIvan Magalhaes NEW
Murillo MaletFranceXuxue Feng QUALIFIED
Sinclair WaycottBrazilOnyama Limba UNQUALIFIED
Deepesh ChuiAustraliaIvan Magalhaes UNQUALIFIED
Arvin AlbaresBrazilStephen Shaw RENEWAL
Johnson SergiGermanyAnna Fali NEW
James ButtBrazilStephen Shaw PROPOSAL
Darci PoquetteItalyAsiya Javayant QUALIFIED
Leon OldroydArgentinaXuxue Feng NEW
Antonio CaudyAustraliaBernardo Dominic UNQUALIFIED
Maisha RulapaughSpainXuxue Feng UNQUALIFIED
Maisha RulapaughSpainElwin Sharvill PROPOSAL
Kadeem FlosiBrazilAnna Fali NEGOTIATION
Aditya KuskoRussiaBernardo Dominic NEW
Leja CaldareraItalyXuxue Feng PROPOSAL
Leja CaldareraItalyAsiya Javayant RENEWAL
Antonio CaudyArgentinaAnna Fali RENEWAL
Octavia MaletSpainBernardo Dominic QUALIFIED
Kaitlin OstroskyJapanAnna Fali NEW
Leon OldroydRussiaAsiya Javayant QUALIFIED
Ivar PaprockiGermanyIoni Bowcher QUALIFIED
Munro FerenczArgentinaAnna Fali RENEWAL
Clifford RimAustraliaAmy Elsner QUALIFIED
Jeanfrancois VenereSpainStephen Shaw NEGOTIATION
Emily WhobreyJapanElwin Sharvill QUALIFIED
Silvio SlusarskiSpainStephen Shaw PROPOSAL
Isabel BowleyUnited KingdomXuxue Feng UNQUALIFIED
Maria MarrierFranceIoni Bowcher PROPOSAL
Mayumi KolmetzIndiaAnna Fali PROPOSAL
Izzy GarufiCanadaStephen Shaw RENEWAL
Octavia MaletFranceOnyama Limba QUALIFIED
David DarakjyGermanyOnyama Limba UNQUALIFIED
Faith GillianCanadaAmy Elsner NEGOTIATION
Jeanfrancois VenereIndiaIoni Bowcher QUALIFIED
Clifford RimSpainIvan Magalhaes PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Leja CaldareraItalyAnna Fali QUALIFIED
Cody SaylorsJapanIvan Magalhaes RENEWAL
Adams MorascaUnited KingdomXuxue Feng RENEWAL
Deepesh ChuiCanadaXuxue Feng RENEWAL
Jefferson SchemmerFranceAsiya Javayant UNQUALIFIED
Johnson SergiUnited KingdomAmy Elsner PROPOSAL
Faith GillianJapanStephen Shaw QUALIFIED
Aruna FigeroaSpainAsiya Javayant PROPOSAL
Chavez BriddickFranceXuxue Feng RENEWAL
Ivar PaprockiBrazilElwin Sharvill QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Emily WhobreyCanada2026-03-25Chapman, Ross E Esq QUALIFIED19Ivan Magalhaes
1001Alejandro PerinBrazil2026-03-27Printing Dimensions UNQUALIFIED23Amy Elsner
1002Nicolas IturbideFrance2026-04-19Truhlar And Truhlar Attys PROPOSAL1Anna Fali
1003Greenwood BologniaAustralia2026-04-21King, Christopher A Esq RENEWAL76Amy Elsner
1004Faith GillianBrazil2026-04-06Truhlar And Truhlar Attys QUALIFIED6Onyama Limba
1005Leja CaldareraSpain2026-04-14Feltz Printing Service PROPOSAL63Onyama Limba
1006Greenwood BologniaRussia2026-03-31Chanay, Jeffrey A Esq QUALIFIED45Xuxue Feng
1007Chavez BriddickBrazil2026-04-16Dorl, James J Esq PROPOSAL97Ivan Magalhaes
1008Silvio SlusarskiSpain2026-04-10Morlong Associates RENEWAL49Bernardo Dominic
1009Greenwood BologniaSpain2026-04-12Commercial Press PROPOSAL22Anna Fali
1010Morrow RutaItaly2026-04-01Commercial Press PROPOSAL70Ioni Bowcher
1011Mujtaba NickaSpain2026-04-18Dorl, James J Esq NEGOTIATION42Onyama Limba
1012Cody SaylorsRussia2026-04-05Feiner Bros NEGOTIATION62Elwin Sharvill
1013Jeanfrancois VenereAustralia2026-03-30Printing Dimensions NEW28Ioni Bowcher
1014Faith GillianItaly2026-04-03Rousseaux, Michael Esq UNQUALIFIED23Anna Fali
1015Kaitlin OstroskySpain2026-04-14Benton, John B Jr NEW10Elwin Sharvill
1016Leon OldroydSpain2026-04-11King, Christopher A Esq NEGOTIATION92Xuxue Feng
1017Sinclair WaycottFrance2026-04-18Rangoni Of Florence QUALIFIED11Anna Fali
1018Ricardo GauchoJapan2026-04-15Feiner Bros QUALIFIED51Asiya Javayant
1019Ashley DoeItaly2026-04-17Truhlar And Truhlar Attys PROPOSAL92Ioni Bowcher
1020Kaitlin OstroskyArgentina2026-04-05Buckley Miller Wright NEGOTIATION45Onyama Limba
1021Ricardo GauchoFrance2026-03-30Printing Dimensions RENEWAL71Stephen Shaw
1022Maisha RulapaughAustralia2026-04-15Rangoni Of Florence UNQUALIFIED29Ioni Bowcher
1023Deepesh ChuiGermany2026-04-04Dorl, James J Esq NEW71Ivan Magalhaes
1024Stacey MacleadItaly2026-03-25Rangoni Of Florence UNQUALIFIED31Bernardo Dominic
1025Johnson SergiJapan2026-03-28Printing Dimensions PROPOSAL55Bernardo Dominic
1026Ivar PaprockiBrazil2026-03-26Truhlar And Truhlar Attys NEGOTIATION86Bernardo Dominic
1027Johnson SergiUnited Kingdom2026-04-09Chanay, Jeffrey A Esq NEGOTIATION75Bernardo Dominic
1028James ButtIndia2026-03-25Feiner Bros PROPOSAL10Asiya Javayant
1029Tony FollerFrance2026-03-25Printing Dimensions NEW67Bernardo Dominic
1030Leja CaldareraArgentina2026-03-28Commercial Press NEW32Anna Fali
1031Mujtaba NickaGermany2026-04-07Commercial Press PROPOSAL64Anna Fali
1032Munro FerenczUnited Kingdom2026-03-29Commercial Press UNQUALIFIED15Asiya Javayant
1033Maria MarrierIndia2026-04-11Chapman, Ross E Esq PROPOSAL43Elwin Sharvill
1034Antonio CaudySpain2026-04-02Feltz Printing Service NEGOTIATION1Anna Fali
1035Aruna FigeroaGermany2026-04-05Benton, John B Jr RENEWAL96Elwin Sharvill
1036Izzy GarufiFrance2026-04-07Printing Dimensions UNQUALIFIED65Xuxue Feng
1037Nicolas IturbideIndia2026-04-07King, Christopher A Esq UNQUALIFIED20Stephen Shaw
1038Antonio CaudyFrance2026-04-15Rangoni Of Florence RENEWAL75Asiya Javayant
1039Julie StensethAustralia2026-04-22Truhlar And Truhlar Attys UNQUALIFIED2Elwin Sharvill
1040Cody SaylorsJapan2026-04-01Commercial Press NEGOTIATION88Amy Elsner
1041Costa DilliardJapan2026-04-10Chapman, Ross E Esq NEGOTIATION72Ivan Magalhaes
1042Tony FollerBrazil2026-04-07Feiner Bros NEW93Bernardo Dominic
1043Tony FollerArgentina2026-04-04Rousseaux, Michael Esq UNQUALIFIED20Amy Elsner
1044Chavez BriddickSpain2026-04-15Feltz Printing Service UNQUALIFIED41Bernardo Dominic
1045Juan WieserItaly2026-04-04Chemel, James L Cpa PROPOSAL97Anna Fali
1046Francesco ShinkoUnited Kingdom2026-04-10Commercial Press NEGOTIATION32Anna Fali
1047Arvin AlbaresSpain2026-04-02Dorl, James J Esq NEW60Elwin Sharvill
1048Smith GlickIndia2026-03-29Commercial Press QUALIFIED70Onyama Limba
1049Deepesh ChuiFrance2026-03-29Morlong Associates RENEWAL48Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Izzy GarufiBrazilElwin Sharvill NEW
Rodrigues CampainArgentinaElwin Sharvill QUALIFIED
Ashley DoeItalyAsiya Javayant PROPOSAL
Mujtaba NickaItalyAmy Elsner NEW
Claire TollnerUnited KingdomElwin Sharvill QUALIFIED
Arvin AlbaresGermanyXuxue Feng QUALIFIED
Octavia MaletCanadaAnna Fali NEW
Deepesh ChuiArgentinaIoni Bowcher QUALIFIED
Silvio SlusarskiRussiaIvan Magalhaes NEW
Jennifer AmigonBrazilIoni Bowcher NEGOTIATION
Faith GillianAustraliaStephen Shaw NEW
Johnson SergiItalyAsiya Javayant RENEWAL
Stacey MacleadGermanyIoni Bowcher UNQUALIFIED
Chavez BriddickGermanyAsiya Javayant UNQUALIFIED
Arvin AlbaresIndiaIoni Bowcher UNQUALIFIED
Deepesh ChuiBrazilElwin Sharvill UNQUALIFIED
Francesco ShinkoSpainAsiya Javayant QUALIFIED
Mujtaba NickaSpainElwin Sharvill PROPOSAL
Clifford RimJapanOnyama Limba QUALIFIED
Deepesh ChuiItalyAmy Elsner PROPOSAL
Aika InouyeFranceAmy Elsner NEGOTIATION
Jones VocelkaCanadaIvan Magalhaes NEGOTIATION
Darci PoquetteBrazilAmy Elsner NEW
Darci PoquetteUnited KingdomBernardo Dominic QUALIFIED
Emily WhobreyJapanElwin Sharvill NEW
Darci PoquetteFranceXuxue Feng PROPOSAL
Jeanfrancois VenereGermanyXuxue Feng QUALIFIED
Arvin AlbaresRussiaElwin Sharvill NEGOTIATION
Misaki RoysterJapanIoni Bowcher RENEWAL
Jennifer AmigonIndiaIoni Bowcher NEW
Morrow RutaArgentinaOnyama Limba PROPOSAL
Maisha RulapaughIndiaBernardo Dominic RENEWAL
Leon OldroydCanadaBernardo Dominic QUALIFIED
Ricardo GauchoBrazilAsiya Javayant PROPOSAL
Wickens NestleUnited KingdomIvan Magalhaes NEW
Francesco ShinkoAustraliaAsiya Javayant QUALIFIED
Faith GillianBrazilIoni Bowcher UNQUALIFIED
Leon OldroydArgentinaOnyama Limba NEGOTIATION
Maria MarrierJapanXuxue Feng PROPOSAL
Costa DilliardUnited KingdomBernardo Dominic NEW
Francesco ShinkoJapanXuxue Feng NEW
Ivar PaprockiSpainIoni Bowcher QUALIFIED
Jennifer AmigonItalyAnna Fali NEW
Emily WhobreyUnited KingdomStephen Shaw QUALIFIED
Julie StensethGermanyAnna Fali PROPOSAL
Ivar PaprockiCanadaAsiya Javayant RENEWAL
Nicolas IturbideGermanyIvan Magalhaes UNQUALIFIED
Jeanfrancois VenereArgentinaIoni Bowcher PROPOSAL
Isabel BowleyIndiaStephen Shaw NEW
Cody SaylorsRussiaOnyama Limba NEGOTIATION
Frozen Columns
Name
Aruna Figeroa
Julie Stenseth
Aruna Figeroa
Ashley Doe
Munro Ferencz
Leon Oldroyd
Johnson Sergi
Jennifer Amigon
Silvio Slusarski
Mayumi Kolmetz
Arvin Albares
Leon Oldroyd
Nicolas Iturbide
Maria Marrier
Darci Poquette
Maria Marrier
Maisha Rulapaugh
Stacey Maclead
Greenwood Bolognia
Sinclair Waycott
Alejandro Perin
Kaitlin Ostrosky
Cody Saylors
Mujtaba Nicka
Aika Inouye
Johnson Sergi
Isabel Bowley
Juan Wieser
Leja Caldarera
Deepesh Chui
Deepesh Chui
Salvatore Stockham
Maria Marrier
Cody Saylors
Salvatore Stockham
Deepesh Chui
Tony Foller
Faith Gillian
Misaki Royster
Silvio Slusarski
Silvio Slusarski
Aika Inouye
Julie Stenseth
Juan Wieser
Costa Dilliard
Ashley Doe
Chavez Briddick
Aika Inouye
Johnson Sergi
Wickens Nestle
IdCountryDate
1000France2026-03-26
1001France2026-04-13
1002Russia2026-04-18
1003India2026-04-11
1004Germany2026-03-28
1005India2026-04-12
1006Italy2026-04-04
1007Russia2026-04-16
1008Russia2026-04-07
1009Germany2026-04-16
1010Japan2026-04-16
1011France2026-04-06
1012Japan2026-03-25
1013India2026-03-27
1014Italy2026-04-19
1015Argentina2026-03-31
1016Italy2026-04-22
1017Australia2026-04-21
1018Japan2026-04-14
1019India2026-03-26
1020India2026-04-05
1021Italy2026-04-13
1022Australia2026-03-31
1023Canada2026-04-15
1024United Kingdom2026-04-15
1025France2026-04-04
1026Germany2026-04-15
1027Argentina2026-04-22
1028Japan2026-04-06
1029Brazil2026-04-20
1030Germany2026-04-16
1031France2026-04-11
1032Spain2026-04-07
1033Spain2026-04-16
1034France2026-04-08
1035Spain2026-03-29
1036Spain2026-04-08
1037Spain2026-04-04
1038Argentina2026-03-31
1039India2026-03-29
1040Russia2026-03-25
1041Brazil2026-04-02
1042Brazil2026-04-13
1043Brazil2026-04-17
1044Japan2026-04-12
1045Argentina2026-03-25
1046India2026-04-12
1047France2026-04-07
1048Canada2026-04-13
1049Brazil2026-04-09

On-Demand Data

NameIdCountryDate
Clifford Rim1000Germany2026-04-08
Darci Poquette1001Spain2026-03-31
Aditya Kusko1002Australia2026-04-03
Johnson Sergi1003Brazil2026-04-13
Maria Marrier1004Japan2026-04-16
Isabel Bowley1005India2026-04-19
Alejandro Perin1006Brazil2026-04-15
Ivar Paprocki1007Russia2026-04-18
Murillo Malet1008Russia2026-04-08
Aruna Figeroa1009Brazil2026-03-26
Rodrigues Campain1010Germany2026-04-03
Arvin Albares1011Germany2026-04-14
James Butt1012United Kingdom2026-04-13
Clifford Rim1013Brazil2026-04-01
Claire Tollner1014Japan2026-04-07
Stacey Maclead1015Canada2026-04-07
Mayumi Kolmetz1016Russia2026-04-16
Tony Foller1017Russia2026-04-09
Nicolas Iturbide1018Spain2026-04-19
Rodrigues Campain1019Italy2026-04-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aika InouyeSpainAnna Fali NEW
Tony FollerUnited KingdomIoni Bowcher PROPOSAL
Maisha RulapaughArgentinaElwin Sharvill QUALIFIED
Cody SaylorsItalyElwin Sharvill NEW
Wickens NestleArgentinaBernardo Dominic PROPOSAL
Smith GlickBrazilOnyama Limba NEW
Francesco ShinkoItalyXuxue Feng UNQUALIFIED
Kadeem FlosiItalyIoni Bowcher NEW
Misaki RoysterFranceElwin Sharvill UNQUALIFIED
Ivar PaprockiRussiaOnyama Limba NEW
Misaki RoysterJapanXuxue Feng NEW
Aika InouyeJapanAmy Elsner NEW
Rodrigues CampainUnited KingdomStephen Shaw RENEWAL
Morrow RutaRussiaAnna Fali NEW
Morrow RutaCanadaIvan Magalhaes QUALIFIED
Chavez BriddickRussiaElwin Sharvill PROPOSAL
Salvatore StockhamCanadaOnyama Limba UNQUALIFIED
Arvin AlbaresFranceElwin Sharvill QUALIFIED
Maisha RulapaughBrazilElwin Sharvill NEGOTIATION
Jennifer AmigonArgentinaElwin Sharvill UNQUALIFIED
Julie StensethCanadaIvan Magalhaes NEGOTIATION
Costa DilliardUnited KingdomIvan Magalhaes PROPOSAL
Murillo MaletGermanyStephen Shaw UNQUALIFIED
Johnson SergiCanadaElwin Sharvill QUALIFIED
Rodrigues CampainRussiaXuxue Feng NEW
Jones VocelkaSpainOnyama Limba UNQUALIFIED
Aditya KuskoCanadaBernardo Dominic UNQUALIFIED
Johnson SergiItalyIvan Magalhaes RENEWAL
Ivar PaprockiUnited KingdomAmy Elsner UNQUALIFIED
Chavez BriddickGermanyBernardo Dominic QUALIFIED
David DarakjyAustraliaOnyama Limba NEW
Rodrigues CampainCanadaIoni Bowcher UNQUALIFIED
Smith GlickAustraliaAmy Elsner RENEWAL
Darci PoquetteUnited KingdomStephen Shaw QUALIFIED
Tony FollerIndiaOnyama Limba QUALIFIED
Mayumi KolmetzGermanyIoni Bowcher PROPOSAL
Cody SaylorsAustraliaElwin Sharvill UNQUALIFIED
Ivar PaprockiGermanyElwin Sharvill NEW
Munro FerenczGermanyIvan Magalhaes RENEWAL
Claire TollnerAustraliaXuxue Feng 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>