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
Murillo MaletFranceStephen Shaw UNQUALIFIED
Claire TollnerSpainOnyama Limba NEGOTIATION
Octavia MaletAustraliaBernardo Dominic NEGOTIATION
Rodrigues CampainFranceAnna Fali PROPOSAL
Mujtaba NickaGermanyXuxue Feng RENEWAL
Greenwood BologniaRussiaAnna Fali QUALIFIED
Wickens NestleCanadaBernardo Dominic UNQUALIFIED
Juan WieserArgentinaOnyama Limba RENEWAL
Tony FollerArgentinaAsiya Javayant NEW
Claire TollnerJapanIvan Magalhaes NEGOTIATION
Munro FerenczFranceIoni Bowcher NEW
James ButtBrazilOnyama Limba PROPOSAL
Clifford RimUnited KingdomOnyama Limba PROPOSAL
Maisha RulapaughRussiaAmy Elsner PROPOSAL
Faith GillianFranceAmy Elsner PROPOSAL
Ashley DoeAustraliaAmy Elsner RENEWAL
Aika InouyeCanadaXuxue Feng UNQUALIFIED
Octavia MaletGermanyBernardo Dominic QUALIFIED
Ashley DoeAustraliaStephen Shaw UNQUALIFIED
Deepesh ChuiIndiaAsiya Javayant UNQUALIFIED
Aditya KuskoItalyAmy Elsner NEW
Tony FollerBrazilAnna Fali NEW
Isabel BowleyUnited KingdomOnyama Limba RENEWAL
Rodrigues CampainAustraliaIvan Magalhaes PROPOSAL
Greenwood BologniaItalyStephen Shaw NEGOTIATION
Izzy GarufiIndiaStephen Shaw PROPOSAL
Salvatore StockhamRussiaStephen Shaw NEW
David DarakjySpainElwin Sharvill PROPOSAL
Faith GillianSpainStephen Shaw QUALIFIED
Salvatore StockhamFranceBernardo Dominic QUALIFIED
Wickens NestleRussiaAsiya Javayant NEGOTIATION
Stacey MacleadCanadaOnyama Limba UNQUALIFIED
Antonio CaudyCanadaElwin Sharvill QUALIFIED
Jones VocelkaGermanyOnyama Limba QUALIFIED
Kadeem FlosiIndiaElwin Sharvill NEW
Kadeem FlosiGermanyBernardo Dominic NEGOTIATION
Isabel BowleyIndiaOnyama Limba QUALIFIED
Maisha RulapaughIndiaElwin Sharvill NEW
Jennifer AmigonItalyIoni Bowcher NEGOTIATION
Johnson SergiItalyElwin Sharvill RENEWAL
Adams MorascaArgentinaAsiya Javayant RENEWAL
David DarakjyCanadaAsiya Javayant QUALIFIED
Smith GlickArgentinaOnyama Limba QUALIFIED
Costa DilliardSpainXuxue Feng NEGOTIATION
Kadeem FlosiJapanIoni Bowcher UNQUALIFIED
Aruna FigeroaSpainElwin Sharvill RENEWAL
Ivar PaprockiItalyAnna Fali UNQUALIFIED
Ricardo GauchoAustraliaAmy Elsner UNQUALIFIED
Emily WhobreyItalyOnyama Limba PROPOSAL
Isabel BowleyUnited KingdomOnyama Limba QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Jefferson SchemmerSpainAnna Fali NEGOTIATION
Nicolas IturbideArgentinaAsiya Javayant PROPOSAL
Mayumi KolmetzFranceStephen Shaw QUALIFIED
Munro FerenczIndiaBernardo Dominic NEGOTIATION
Claire TollnerGermanyAnna Fali NEW
Murillo MaletUnited KingdomElwin Sharvill UNQUALIFIED
Ashley DoeCanadaElwin Sharvill RENEWAL
Stacey MacleadAustraliaAmy Elsner QUALIFIED
Tony FollerArgentinaAmy Elsner RENEWAL
Sinclair WaycottItalyOnyama Limba RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leon OldroydCanada2026-04-09Chapman, Ross E Esq QUALIFIED3Stephen Shaw
1001Claire TollnerItaly2026-03-29Rangoni Of Florence PROPOSAL95Bernardo Dominic
1002Leja CaldareraFrance2026-03-27Rangoni Of Florence QUALIFIED1Bernardo Dominic
1003Morrow RutaIndia2026-04-07Morlong Associates RENEWAL9Ivan Magalhaes
1004Darci PoquetteGermany2026-03-31Chapman, Ross E Esq QUALIFIED32Onyama Limba
1005Murillo MaletArgentina2026-04-20Printing Dimensions UNQUALIFIED85Onyama Limba
1006James ButtGermany2026-04-20Rangoni Of Florence NEGOTIATION76Onyama Limba
1007Ivar PaprockiArgentina2026-04-12Chanay, Jeffrey A Esq PROPOSAL46Onyama Limba
1008Leon OldroydIndia2026-04-22Buckley Miller Wright UNQUALIFIED66Amy Elsner
1009Emily WhobreyIndia2026-04-14Rangoni Of Florence UNQUALIFIED96Ioni Bowcher
1010Nicolas IturbideGermany2026-04-11Benton, John B Jr NEW90Amy Elsner
1011Ricardo GauchoIndia2026-04-21King, Christopher A Esq PROPOSAL14Onyama Limba
1012Alejandro PerinArgentina2026-04-02Chapman, Ross E Esq UNQUALIFIED96Ioni Bowcher
1013Sinclair WaycottGermany2026-04-22Feltz Printing Service NEW55Asiya Javayant
1014Ivar PaprockiUnited Kingdom2026-04-17Dorl, James J Esq NEW45Amy Elsner
1015Ashley DoeBrazil2026-04-20King, Christopher A Esq UNQUALIFIED19Onyama Limba
1016Costa DilliardArgentina2026-03-28Feiner Bros NEGOTIATION17Amy Elsner
1017Rodrigues CampainUnited Kingdom2026-04-19Buckley Miller Wright UNQUALIFIED73Amy Elsner
1018Stacey MacleadItaly2026-04-17Chapman, Ross E Esq RENEWAL85Elwin Sharvill
1019Izzy GarufiItaly2026-03-31Truhlar And Truhlar Attys UNQUALIFIED56Bernardo Dominic
1020Wickens NestleItaly2026-04-08Dorl, James J Esq RENEWAL80Stephen Shaw
1021Faith GillianJapan2026-04-21Buckley Miller Wright PROPOSAL76Onyama Limba
1022Cody SaylorsItaly2026-04-09Buckley Miller Wright NEW16Onyama Limba
1023Wickens NestleItaly2026-03-28Chemel, James L Cpa PROPOSAL9Amy Elsner
1024Aika InouyeItaly2026-04-13Rangoni Of Florence NEGOTIATION12Ioni Bowcher
1025Maisha RulapaughArgentina2026-04-11Commercial Press NEGOTIATION39Elwin Sharvill
1026Alejandro PerinArgentina2026-03-29Chanay, Jeffrey A Esq UNQUALIFIED45Amy Elsner
1027Isabel BowleyUnited Kingdom2026-04-18Chanay, Jeffrey A Esq NEGOTIATION82Ivan Magalhaes
1028Mujtaba NickaItaly2026-04-14Chapman, Ross E Esq QUALIFIED62Asiya Javayant
1029Ashley DoeItaly2026-04-05Rangoni Of Florence RENEWAL19Stephen Shaw
1030Emily WhobreyFrance2026-04-15Morlong Associates NEW65Ivan Magalhaes
1031David DarakjyFrance2026-03-29Chemel, James L Cpa QUALIFIED17Bernardo Dominic
1032Deepesh ChuiRussia2026-03-30Chemel, James L Cpa PROPOSAL78Onyama Limba
1033Antonio CaudyAustralia2026-03-28Chapman, Ross E Esq PROPOSAL46Elwin Sharvill
1034Jones VocelkaAustralia2026-03-29Chanay, Jeffrey A Esq QUALIFIED7Bernardo Dominic
1035Leon OldroydCanada2026-03-27Commercial Press NEGOTIATION40Bernardo Dominic
1036Rodrigues CampainCanada2026-04-09Feiner Bros NEGOTIATION49Ivan Magalhaes
1037Jefferson SchemmerItaly2026-04-21Feiner Bros RENEWAL29Asiya Javayant
1038Morrow RutaArgentina2026-04-10Chapman, Ross E Esq NEGOTIATION71Bernardo Dominic
1039Adams MorascaFrance2026-04-09Commercial Press RENEWAL97Stephen Shaw
1040Jennifer AmigonIndia2026-04-19King, Christopher A Esq RENEWAL18Xuxue Feng
1041Faith GillianArgentina2026-04-18Chanay, Jeffrey A Esq UNQUALIFIED11Elwin Sharvill
1042Nicolas IturbideCanada2026-04-14Chanay, Jeffrey A Esq NEW65Onyama Limba
1043Maisha RulapaughItaly2026-04-10Truhlar And Truhlar Attys QUALIFIED31Bernardo Dominic
1044Murillo MaletUnited Kingdom2026-04-04Chanay, Jeffrey A Esq PROPOSAL17Asiya Javayant
1045Mujtaba NickaSpain2026-04-19Rousseaux, Michael Esq RENEWAL34Stephen Shaw
1046Cody SaylorsFrance2026-04-13Chanay, Jeffrey A Esq RENEWAL2Onyama Limba
1047James ButtArgentina2026-04-14Commercial Press NEW19Elwin Sharvill
1048Ivar PaprockiSpain2026-04-20Truhlar And Truhlar Attys RENEWAL32Ivan Magalhaes
1049Kadeem FlosiSpain2026-04-08Dorl, James J Esq RENEWAL4Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Salvatore StockhamSpainStephen Shaw UNQUALIFIED
Kaitlin OstroskyUnited KingdomIoni Bowcher NEGOTIATION
Morrow RutaRussiaAmy Elsner NEW
Murillo MaletBrazilAsiya Javayant NEGOTIATION
Tony FollerBrazilAnna Fali NEW
Chavez BriddickJapanOnyama Limba NEGOTIATION
Octavia MaletGermanyAmy Elsner QUALIFIED
Darci PoquetteArgentinaOnyama Limba UNQUALIFIED
Tony FollerJapanAnna Fali NEW
Ashley DoeSpainStephen Shaw QUALIFIED
Jones VocelkaIndiaAsiya Javayant RENEWAL
Mayumi KolmetzSpainIvan Magalhaes NEGOTIATION
Murillo MaletArgentinaAnna Fali RENEWAL
Aditya KuskoArgentinaOnyama Limba PROPOSAL
Murillo MaletRussiaAmy Elsner NEW
Aditya KuskoRussiaStephen Shaw PROPOSAL
Smith GlickItalyAsiya Javayant QUALIFIED
Stacey MacleadFranceXuxue Feng RENEWAL
Smith GlickSpainStephen Shaw NEW
Aditya KuskoRussiaIoni Bowcher PROPOSAL
Ricardo GauchoRussiaElwin Sharvill QUALIFIED
Deepesh ChuiUnited KingdomStephen Shaw NEW
Clifford RimIndiaIvan Magalhaes NEGOTIATION
Arvin AlbaresGermanyAnna Fali NEGOTIATION
Kaitlin OstroskyArgentinaBernardo Dominic QUALIFIED
Julie StensethJapanOnyama Limba NEGOTIATION
Alejandro PerinItalyElwin Sharvill QUALIFIED
Johnson SergiFranceBernardo Dominic PROPOSAL
Izzy GarufiRussiaElwin Sharvill NEW
Octavia MaletIndiaXuxue Feng NEW
Salvatore StockhamSpainAmy Elsner NEGOTIATION
Octavia MaletItalyOnyama Limba RENEWAL
Chavez BriddickItalyElwin Sharvill QUALIFIED
Maria MarrierJapanAsiya Javayant NEGOTIATION
Julie StensethCanadaBernardo Dominic UNQUALIFIED
Mujtaba NickaFranceIoni Bowcher NEW
Jones VocelkaSpainIvan Magalhaes NEGOTIATION
Maisha RulapaughItalyAsiya Javayant RENEWAL
Misaki RoysterBrazilIvan Magalhaes PROPOSAL
Maisha RulapaughJapanStephen Shaw RENEWAL
Arvin AlbaresJapanIvan Magalhaes QUALIFIED
Faith GillianJapanStephen Shaw UNQUALIFIED
Chavez BriddickGermanyAmy Elsner RENEWAL
Leja CaldareraBrazilStephen Shaw NEW
Alejandro PerinAustraliaIvan Magalhaes QUALIFIED
Smith GlickUnited KingdomIoni Bowcher PROPOSAL
Jennifer AmigonIndiaStephen Shaw NEW
Adams MorascaAustraliaAsiya Javayant PROPOSAL
Alejandro PerinRussiaAnna Fali NEW
Octavia MaletSpainIvan Magalhaes UNQUALIFIED
Frozen Columns
Name
Leja Caldarera
Ivar Paprocki
Stacey Maclead
Francesco Shinko
Rodrigues Campain
Tony Foller
Arvin Albares
Misaki Royster
Greenwood Bolognia
Salvatore Stockham
Aika Inouye
Cody Saylors
Wickens Nestle
Maria Marrier
Jeanfrancois Venere
Jefferson Schemmer
Leon Oldroyd
Nicolas Iturbide
Kaitlin Ostrosky
Antonio Caudy
Stacey Maclead
Jennifer Amigon
James Butt
Johnson Sergi
Kadeem Flosi
Isabel Bowley
Kaitlin Ostrosky
Jones Vocelka
Jennifer Amigon
Alejandro Perin
Smith Glick
Aika Inouye
Octavia Malet
Aditya Kusko
Faith Gillian
Faith Gillian
Isabel Bowley
James Butt
Mayumi Kolmetz
Faith Gillian
Aika Inouye
Kaitlin Ostrosky
Ashley Doe
Nicolas Iturbide
Greenwood Bolognia
Murillo Malet
Jefferson Schemmer
Morrow Ruta
Greenwood Bolognia
Cody Saylors
IdCountryDate
1000India2026-04-01
1001Brazil2026-03-30
1002Japan2026-04-17
1003Germany2026-04-24
1004Argentina2026-04-25
1005Brazil2026-04-18
1006Japan2026-04-04
1007Argentina2026-04-05
1008France2026-04-20
1009Canada2026-04-19
1010Argentina2026-04-16
1011Canada2026-04-22
1012India2026-04-17
1013Italy2026-04-25
1014France2026-03-28
1015France2026-04-05
1016Russia2026-04-04
1017France2026-04-15
1018Australia2026-04-12
1019Argentina2026-04-20
1020Japan2026-04-16
1021Japan2026-04-20
1022Brazil2026-04-09
1023India2026-04-14
1024Argentina2026-04-21
1025United Kingdom2026-04-18
1026Canada2026-04-21
1027India2026-04-22
1028Brazil2026-04-09
1029Argentina2026-04-19
1030Italy2026-04-12
1031Brazil2026-04-13
1032France2026-04-09
1033Spain2026-04-11
1034Canada2026-04-15
1035Germany2026-03-27
1036Russia2026-04-03
1037Germany2026-04-08
1038Japan2026-04-09
1039Spain2026-04-06
1040Spain2026-04-19
1041Argentina2026-04-21
1042Canada2026-04-21
1043United Kingdom2026-03-30
1044Russia2026-03-29
1045India2026-04-20
1046United Kingdom2026-04-01
1047Canada2026-03-30
1048Germany2026-04-16
1049Japan2026-03-28

On-Demand Data

NameIdCountryDate
Emily Whobrey1000Argentina2026-04-07
Arvin Albares1001Australia2026-04-04
Aruna Figeroa1002United Kingdom2026-04-21
Maria Marrier1003Argentina2026-04-09
Francesco Shinko1004Russia2026-04-08
Julie Stenseth1005Canada2026-04-22
Ricardo Gaucho1006Italy2026-04-08
Alejandro Perin1007Japan2026-04-25
Kadeem Flosi1008Russia2026-03-31
Mujtaba Nicka1009United Kingdom2026-03-31
Clifford Rim1010Spain2026-04-10
David Darakjy1011Japan2026-04-19
Octavia Malet1012Spain2026-04-07
Darci Poquette1013Spain2026-04-01
Maria Marrier1014France2026-04-19
Johnson Sergi1015Russia2026-04-24
David Darakjy1016Russia2026-04-18
Sinclair Waycott1017India2026-03-27
Chavez Briddick1018Argentina2026-04-18
Morrow Ruta1019Spain2026-04-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Julie StensethSpainAsiya Javayant QUALIFIED
Clifford RimUnited KingdomAmy Elsner RENEWAL
Arvin AlbaresArgentinaAmy Elsner UNQUALIFIED
Chavez BriddickArgentinaOnyama Limba PROPOSAL
Maisha RulapaughArgentinaOnyama Limba NEW
Arvin AlbaresItalyXuxue Feng NEW
Salvatore StockhamIndiaOnyama Limba NEW
Leon OldroydBrazilAsiya Javayant NEW
Aika InouyeRussiaAsiya Javayant NEW
Darci PoquetteGermanyOnyama Limba RENEWAL
Francesco ShinkoAustraliaAmy Elsner RENEWAL
Misaki RoysterGermanyOnyama Limba NEW
Kadeem FlosiJapanAsiya Javayant QUALIFIED
Salvatore StockhamGermanyIoni Bowcher RENEWAL
Kaitlin OstroskyUnited KingdomAnna Fali UNQUALIFIED
Juan WieserGermanyIvan Magalhaes NEW
Jefferson SchemmerRussiaAnna Fali NEGOTIATION
Costa DilliardRussiaStephen Shaw RENEWAL
Antonio CaudyFranceAmy Elsner NEW
Ivar PaprockiCanadaAmy Elsner PROPOSAL
James ButtAustraliaElwin Sharvill NEGOTIATION
Mujtaba NickaSpainAnna Fali UNQUALIFIED
Cody SaylorsItalyStephen Shaw UNQUALIFIED
Clifford RimArgentinaStephen Shaw UNQUALIFIED
Ricardo GauchoRussiaStephen Shaw QUALIFIED
Jones VocelkaUnited KingdomAsiya Javayant PROPOSAL
Octavia MaletAustraliaXuxue Feng NEGOTIATION
Silvio SlusarskiAustraliaXuxue Feng NEGOTIATION
Aika InouyeGermanyOnyama Limba RENEWAL
Maisha RulapaughItalyBernardo Dominic NEW
Maisha RulapaughAustraliaBernardo Dominic PROPOSAL
Wickens NestleSpainIoni Bowcher RENEWAL
Izzy GarufiBrazilAnna Fali NEW
Aika InouyeJapanXuxue Feng NEGOTIATION
Rodrigues CampainFranceElwin Sharvill UNQUALIFIED
Antonio CaudyRussiaBernardo Dominic NEW
Emily WhobreyJapanStephen Shaw QUALIFIED
Darci PoquetteSpainIoni Bowcher NEW
Smith GlickFranceBernardo Dominic UNQUALIFIED
Antonio CaudyArgentinaIvan Magalhaes QUALIFIED

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