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
Sinclair WaycottArgentinaStephen Shaw UNQUALIFIED
Arvin AlbaresJapanXuxue Feng RENEWAL
Aruna FigeroaGermanyStephen Shaw RENEWAL
Mujtaba NickaIndiaOnyama Limba NEW
Maria MarrierAustraliaStephen Shaw QUALIFIED
Salvatore StockhamFranceAmy Elsner NEGOTIATION
Jeanfrancois VenereUnited KingdomElwin Sharvill RENEWAL
Leon OldroydCanadaXuxue Feng RENEWAL
Aruna FigeroaItalyAmy Elsner QUALIFIED
Johnson SergiUnited KingdomXuxue Feng QUALIFIED
Stacey MacleadJapanStephen Shaw RENEWAL
Kadeem FlosiIndiaOnyama Limba NEGOTIATION
Greenwood BologniaRussiaOnyama Limba PROPOSAL
Cody SaylorsItalyAnna Fali NEGOTIATION
Adams MorascaAustraliaAmy Elsner NEW
Jefferson SchemmerAustraliaOnyama Limba QUALIFIED
Aruna FigeroaItalyIvan Magalhaes PROPOSAL
Maisha RulapaughCanadaIvan Magalhaes UNQUALIFIED
Kaitlin OstroskySpainStephen Shaw NEW
Ricardo GauchoCanadaXuxue Feng UNQUALIFIED
Aditya KuskoJapanOnyama Limba UNQUALIFIED
James ButtJapanIvan Magalhaes NEW
Adams MorascaJapanAnna Fali QUALIFIED
Aditya KuskoIndiaIvan Magalhaes PROPOSAL
James ButtUnited KingdomStephen Shaw NEW
Maria MarrierArgentinaAsiya Javayant QUALIFIED
Jones VocelkaBrazilAmy Elsner NEW
Aika InouyeGermanyElwin Sharvill UNQUALIFIED
Jones VocelkaRussiaElwin Sharvill QUALIFIED
Costa DilliardBrazilElwin Sharvill QUALIFIED
Kaitlin OstroskyGermanyXuxue Feng RENEWAL
Aika InouyeItalyXuxue Feng QUALIFIED
Jefferson SchemmerAustraliaOnyama Limba QUALIFIED
Ivar PaprockiIndiaElwin Sharvill RENEWAL
Jefferson SchemmerAustraliaAmy Elsner UNQUALIFIED
Ivar PaprockiBrazilOnyama Limba PROPOSAL
Maisha RulapaughFranceAmy Elsner QUALIFIED
Jones VocelkaCanadaAsiya Javayant QUALIFIED
Alejandro PerinCanadaElwin Sharvill UNQUALIFIED
Darci PoquetteItalyXuxue Feng QUALIFIED
Maria MarrierItalyElwin Sharvill UNQUALIFIED
Francesco ShinkoFranceAsiya Javayant NEGOTIATION
Ashley DoeArgentinaElwin Sharvill QUALIFIED
Chavez BriddickAustraliaIoni Bowcher PROPOSAL
Adams MorascaBrazilBernardo Dominic RENEWAL
Tony FollerSpainXuxue Feng QUALIFIED
Maisha RulapaughBrazilIoni Bowcher NEGOTIATION
Claire TollnerIndiaStephen Shaw UNQUALIFIED
Maisha RulapaughAustraliaAnna Fali NEW
Juan WieserIndiaXuxue Feng NEW
Horizontal
NameCountryRepresentativeStatus
Darci PoquetteIndiaBernardo Dominic UNQUALIFIED
Claire TollnerIndiaIvan Magalhaes NEW
Maria MarrierSpainIoni Bowcher NEGOTIATION
Wickens NestleUnited KingdomOnyama Limba PROPOSAL
Misaki RoysterIndiaXuxue Feng UNQUALIFIED
Costa DilliardAustraliaIvan Magalhaes PROPOSAL
Ivar PaprockiUnited KingdomXuxue Feng UNQUALIFIED
Rodrigues CampainRussiaBernardo Dominic PROPOSAL
Rodrigues CampainArgentinaIvan Magalhaes UNQUALIFIED
Juan WieserGermanyBernardo Dominic RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ashley DoeAustralia2026-05-25Rangoni Of Florence NEGOTIATION99Stephen Shaw
1001Mayumi KolmetzArgentina2026-05-31Feltz Printing Service PROPOSAL49Elwin Sharvill
1002Kaitlin OstroskyJapan2026-05-22Commercial Press UNQUALIFIED43Onyama Limba
1003Stacey MacleadFrance2026-05-19Buckley Miller Wright NEW34Xuxue Feng
1004Emily WhobreyCanada2026-05-18Chapman, Ross E Esq QUALIFIED2Amy Elsner
1005Murillo MaletJapan2026-05-26Feltz Printing Service NEGOTIATION84Elwin Sharvill
1006Nicolas IturbideUnited Kingdom2026-06-08Truhlar And Truhlar Attys RENEWAL55Stephen Shaw
1007Clifford RimItaly2026-05-21Morlong Associates NEW76Onyama Limba
1008Nicolas IturbideArgentina2026-06-08Chemel, James L Cpa RENEWAL10Onyama Limba
1009Morrow RutaFrance2026-05-17King, Christopher A Esq QUALIFIED27Asiya Javayant
1010Smith GlickBrazil2026-06-05Chanay, Jeffrey A Esq UNQUALIFIED35Xuxue Feng
1011Nicolas IturbideUnited Kingdom2026-05-23Rousseaux, Michael Esq PROPOSAL10Elwin Sharvill
1012Claire TollnerAustralia2026-05-18Printing Dimensions NEGOTIATION25Anna Fali
1013David DarakjyCanada2026-06-05Rangoni Of Florence PROPOSAL30Stephen Shaw
1014Claire TollnerFrance2026-05-16Chemel, James L Cpa NEW37Ioni Bowcher
1015Maria MarrierBrazil2026-06-03Feltz Printing Service NEGOTIATION97Stephen Shaw
1016Darci PoquetteFrance2026-06-03Dorl, James J Esq UNQUALIFIED3Onyama Limba
1017Stacey MacleadArgentina2026-05-23Printing Dimensions NEW78Onyama Limba
1018Adams MorascaFrance2026-05-30Dorl, James J Esq RENEWAL78Asiya Javayant
1019Murillo MaletItaly2026-05-15King, Christopher A Esq NEGOTIATION43Ioni Bowcher
1020Johnson SergiAustralia2026-06-01Feiner Bros UNQUALIFIED49Onyama Limba
1021Salvatore StockhamItaly2026-05-20Buckley Miller Wright NEW66Elwin Sharvill
1022Rodrigues CampainItaly2026-06-06Benton, John B Jr RENEWAL16Xuxue Feng
1023Nicolas IturbideCanada2026-06-11Dorl, James J Esq PROPOSAL3Ivan Magalhaes
1024Stacey MacleadAustralia2026-06-07Truhlar And Truhlar Attys UNQUALIFIED49Amy Elsner
1025Aruna FigeroaItaly2026-06-09Morlong Associates RENEWAL64Asiya Javayant
1026Smith GlickItaly2026-06-04Chanay, Jeffrey A Esq NEGOTIATION75Xuxue Feng
1027Silvio SlusarskiAustralia2026-05-29Rangoni Of Florence QUALIFIED56Asiya Javayant
1028Francesco ShinkoJapan2026-05-17Chanay, Jeffrey A Esq PROPOSAL71Elwin Sharvill
1029Kadeem FlosiCanada2026-05-23Commercial Press PROPOSAL21Bernardo Dominic
1030Morrow RutaArgentina2026-05-23Benton, John B Jr NEW84Elwin Sharvill
1031Tony FollerArgentina2026-06-01Chemel, James L Cpa PROPOSAL74Xuxue Feng
1032Izzy GarufiRussia2026-05-29Commercial Press RENEWAL90Anna Fali
1033Leja CaldareraIndia2026-06-12Rousseaux, Michael Esq UNQUALIFIED68Onyama Limba
1034Jefferson SchemmerIndia2026-06-01Rangoni Of Florence NEGOTIATION10Ivan Magalhaes
1035Octavia MaletGermany2026-05-28Chemel, James L Cpa PROPOSAL24Elwin Sharvill
1036Costa DilliardJapan2026-05-23Benton, John B Jr NEW83Bernardo Dominic
1037Izzy GarufiIndia2026-05-18Printing Dimensions PROPOSAL19Ioni Bowcher
1038Murillo MaletArgentina2026-05-30Chanay, Jeffrey A Esq UNQUALIFIED98Elwin Sharvill
1039Julie StensethArgentina2026-06-12Rangoni Of Florence UNQUALIFIED57Anna Fali
1040Mayumi KolmetzJapan2026-06-10Chapman, Ross E Esq QUALIFIED80Anna Fali
1041Isabel BowleyArgentina2026-05-16Feltz Printing Service QUALIFIED34Bernardo Dominic
1042Aika InouyeUnited Kingdom2026-05-21Feiner Bros NEGOTIATION55Ioni Bowcher
1043Salvatore StockhamAustralia2026-05-16Benton, John B Jr PROPOSAL83Elwin Sharvill
1044Stacey MacleadJapan2026-06-03Rousseaux, Michael Esq RENEWAL71Onyama Limba
1045Maria MarrierAustralia2026-05-26Rangoni Of Florence QUALIFIED44Stephen Shaw
1046Izzy GarufiRussia2026-06-04Feltz Printing Service NEGOTIATION63Elwin Sharvill
1047Mayumi KolmetzJapan2026-05-21Chemel, James L Cpa PROPOSAL6Stephen Shaw
1048Arvin AlbaresItaly2026-06-13Chemel, James L Cpa PROPOSAL71Ivan Magalhaes
1049Wickens NestleFrance2026-05-19Truhlar And Truhlar Attys NEGOTIATION96Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Misaki RoysterSpainAsiya Javayant NEW
Claire TollnerAustraliaElwin Sharvill UNQUALIFIED
Antonio CaudyBrazilXuxue Feng QUALIFIED
Ashley DoeSpainOnyama Limba PROPOSAL
Kaitlin OstroskyItalyIvan Magalhaes UNQUALIFIED
Sinclair WaycottRussiaAsiya Javayant PROPOSAL
Faith GillianUnited KingdomAsiya Javayant NEW
Jennifer AmigonItalyOnyama Limba NEW
Clifford RimUnited KingdomIvan Magalhaes NEGOTIATION
Jennifer AmigonFranceElwin Sharvill UNQUALIFIED
Antonio CaudyBrazilXuxue Feng UNQUALIFIED
Johnson SergiSpainAmy Elsner RENEWAL
Maria MarrierAustraliaIoni Bowcher UNQUALIFIED
Greenwood BologniaGermanyIoni Bowcher NEGOTIATION
Francesco ShinkoGermanyAsiya Javayant PROPOSAL
Jennifer AmigonUnited KingdomAnna Fali NEW
Sinclair WaycottAustraliaXuxue Feng QUALIFIED
Izzy GarufiRussiaElwin Sharvill NEW
Alejandro PerinSpainStephen Shaw QUALIFIED
Faith GillianRussiaStephen Shaw RENEWAL
Isabel BowleyJapanXuxue Feng UNQUALIFIED
Nicolas IturbideAustraliaAmy Elsner UNQUALIFIED
Octavia MaletFranceOnyama Limba QUALIFIED
Antonio CaudyUnited KingdomXuxue Feng NEW
Ricardo GauchoGermanyAsiya Javayant NEGOTIATION
Octavia MaletAustraliaIvan Magalhaes NEGOTIATION
Maria MarrierJapanAmy Elsner PROPOSAL
Mayumi KolmetzUnited KingdomAnna Fali QUALIFIED
Cody SaylorsFranceIoni Bowcher RENEWAL
Misaki RoysterIndiaXuxue Feng QUALIFIED
Jones VocelkaGermanyBernardo Dominic RENEWAL
Jefferson SchemmerFranceAmy Elsner RENEWAL
Jennifer AmigonCanadaAsiya Javayant NEW
Claire TollnerBrazilElwin Sharvill QUALIFIED
Octavia MaletAustraliaAsiya Javayant UNQUALIFIED
Ashley DoeFranceAnna Fali UNQUALIFIED
Leja CaldareraBrazilIoni Bowcher QUALIFIED
Faith GillianJapanElwin Sharvill UNQUALIFIED
Arvin AlbaresBrazilElwin Sharvill NEGOTIATION
Maisha RulapaughCanadaAmy Elsner UNQUALIFIED
Isabel BowleyAustraliaIoni Bowcher QUALIFIED
Izzy GarufiBrazilAnna Fali UNQUALIFIED
David DarakjyItalyXuxue Feng RENEWAL
Greenwood BologniaJapanAsiya Javayant QUALIFIED
Kaitlin OstroskyArgentinaBernardo Dominic QUALIFIED
Mayumi KolmetzCanadaBernardo Dominic QUALIFIED
Leon OldroydSpainXuxue Feng QUALIFIED
Maria MarrierRussiaAmy Elsner QUALIFIED
Kaitlin OstroskyJapanAmy Elsner NEW
Kaitlin OstroskyIndiaIvan Magalhaes NEW
Frozen Columns
Name
Alejandro Perin
Salvatore Stockham
Arvin Albares
Costa Dilliard
Clifford Rim
Jeanfrancois Venere
Faith Gillian
Juan Wieser
Clifford Rim
Aruna Figeroa
Silvio Slusarski
Isabel Bowley
Aruna Figeroa
Silvio Slusarski
Maria Marrier
Rodrigues Campain
Cody Saylors
Greenwood Bolognia
Clifford Rim
Stacey Maclead
Izzy Garufi
Stacey Maclead
Cody Saylors
David Darakjy
Aditya Kusko
Smith Glick
Tony Foller
Jefferson Schemmer
Jones Vocelka
Faith Gillian
Mayumi Kolmetz
Nicolas Iturbide
Ashley Doe
Kadeem Flosi
Julie Stenseth
Salvatore Stockham
David Darakjy
Jones Vocelka
Aditya Kusko
Jones Vocelka
Rodrigues Campain
Misaki Royster
Juan Wieser
Nicolas Iturbide
Aika Inouye
Jefferson Schemmer
Clifford Rim
Antonio Caudy
David Darakjy
Adams Morasca
IdCountryDate
1000Germany2026-05-21
1001Germany2026-06-09
1002Germany2026-05-27
1003Russia2026-06-06
1004Italy2026-06-12
1005Russia2026-05-18
1006Spain2026-05-20
1007United Kingdom2026-05-20
1008Germany2026-05-16
1009India2026-06-11
1010Brazil2026-05-26
1011France2026-06-11
1012Germany2026-06-13
1013Japan2026-05-19
1014Germany2026-06-13
1015Canada2026-05-30
1016Germany2026-06-01
1017Italy2026-05-30
1018Japan2026-06-09
1019India2026-05-25
1020Australia2026-06-06
1021India2026-05-28
1022Italy2026-05-15
1023Canada2026-05-27
1024India2026-06-13
1025Italy2026-05-15
1026Japan2026-06-13
1027Italy2026-06-11
1028Australia2026-06-09
1029Australia2026-05-16
1030Italy2026-05-28
1031France2026-05-20
1032Spain2026-06-03
1033Australia2026-06-03
1034United Kingdom2026-05-31
1035Brazil2026-05-18
1036Japan2026-05-27
1037Germany2026-06-03
1038Brazil2026-05-26
1039Argentina2026-06-11
1040France2026-05-23
1041Australia2026-05-20
1042Argentina2026-06-06
1043Spain2026-05-31
1044India2026-06-07
1045Argentina2026-05-25
1046Canada2026-05-23
1047Australia2026-06-10
1048Australia2026-06-12
1049France2026-06-07

On-Demand Data

NameIdCountryDate
Greenwood Bolognia1000Germany2026-05-26
Antonio Caudy1001Russia2026-05-30
Antonio Caudy1002Japan2026-05-26
Faith Gillian1003Canada2026-05-21
Octavia Malet1004Australia2026-06-09
Francesco Shinko1005Australia2026-06-10
Adams Morasca1006Italy2026-05-26
Adams Morasca1007India2026-05-30
Kadeem Flosi1008United Kingdom2026-06-12
Nicolas Iturbide1009Australia2026-06-06
Greenwood Bolognia1010France2026-05-28
Alejandro Perin1011Australia2026-06-13
Stacey Maclead1012Spain2026-05-19
Ashley Doe1013Italy2026-05-16
Julie Stenseth1014Argentina2026-05-29
James Butt1015Australia2026-06-11
Claire Tollner1016United Kingdom2026-05-19
Munro Ferencz1017Argentina2026-06-10
Stacey Maclead1018Japan2026-05-17
Ashley Doe1019United Kingdom2026-06-03
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Silvio SlusarskiIndiaIoni Bowcher UNQUALIFIED
Kaitlin OstroskyCanadaAmy Elsner NEGOTIATION
Jefferson SchemmerIndiaIvan Magalhaes NEW
Maisha RulapaughUnited KingdomStephen Shaw QUALIFIED
Arvin AlbaresSpainStephen Shaw PROPOSAL
Nicolas IturbideJapanXuxue Feng UNQUALIFIED
Leon OldroydIndiaXuxue Feng NEW
David DarakjyArgentinaIoni Bowcher NEGOTIATION
Izzy GarufiCanadaBernardo Dominic PROPOSAL
Juan WieserBrazilOnyama Limba RENEWAL
Leja CaldareraGermanyOnyama Limba PROPOSAL
Ashley DoeFranceOnyama Limba UNQUALIFIED
Antonio CaudyGermanyXuxue Feng QUALIFIED
Jennifer AmigonRussiaOnyama Limba UNQUALIFIED
Aruna FigeroaItalyAmy Elsner PROPOSAL
Aika InouyeAustraliaBernardo Dominic NEGOTIATION
Ashley DoeIndiaXuxue Feng RENEWAL
Jefferson SchemmerArgentinaStephen Shaw RENEWAL
Munro FerenczCanadaBernardo Dominic PROPOSAL
Jones VocelkaFranceBernardo Dominic NEW
Rodrigues CampainSpainElwin Sharvill PROPOSAL
James ButtSpainAmy Elsner QUALIFIED
Adams MorascaAustraliaOnyama Limba PROPOSAL
Isabel BowleyIndiaIoni Bowcher NEW
Isabel BowleyJapanBernardo Dominic UNQUALIFIED
Aruna FigeroaCanadaAsiya Javayant NEGOTIATION
Johnson SergiIndiaAsiya Javayant QUALIFIED
Clifford RimSpainIoni Bowcher NEW
Nicolas IturbideAustraliaStephen Shaw NEGOTIATION
Munro FerenczJapanIoni Bowcher UNQUALIFIED
Nicolas IturbideArgentinaXuxue Feng NEW
Murillo MaletGermanyAmy Elsner QUALIFIED
Isabel BowleyIndiaStephen Shaw NEW
Misaki RoysterJapanIoni Bowcher PROPOSAL
Morrow RutaBrazilAnna Fali UNQUALIFIED
Julie StensethUnited KingdomElwin Sharvill PROPOSAL
Ashley DoeItalyAmy Elsner RENEWAL
Kadeem FlosiGermanyOnyama Limba QUALIFIED
Juan WieserIndiaElwin Sharvill NEGOTIATION
Jefferson SchemmerJapanStephen Shaw PROPOSAL

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