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
Leon OldroydRussiaStephen Shaw NEGOTIATION
Wickens NestleCanadaAnna Fali NEGOTIATION
Juan WieserJapanStephen Shaw PROPOSAL
Sinclair WaycottAustraliaAmy Elsner NEW
Arvin AlbaresGermanyBernardo Dominic NEGOTIATION
Aditya KuskoUnited KingdomIvan Magalhaes UNQUALIFIED
Izzy GarufiSpainIvan Magalhaes RENEWAL
Jefferson SchemmerUnited KingdomIoni Bowcher RENEWAL
Octavia MaletIndiaIoni Bowcher NEGOTIATION
Ashley DoeJapanBernardo Dominic NEGOTIATION
Misaki RoysterIndiaIoni Bowcher NEW
James ButtItalyAnna Fali QUALIFIED
Leon OldroydItalyIvan Magalhaes RENEWAL
Alejandro PerinArgentinaBernardo Dominic NEW
Izzy GarufiGermanyAmy Elsner NEGOTIATION
Murillo MaletFranceAmy Elsner NEW
Nicolas IturbideBrazilElwin Sharvill NEW
James ButtRussiaAmy Elsner UNQUALIFIED
Jennifer AmigonSpainIoni Bowcher UNQUALIFIED
Greenwood BologniaJapanBernardo Dominic NEW
Darci PoquetteFranceXuxue Feng QUALIFIED
Greenwood BologniaGermanyXuxue Feng UNQUALIFIED
Isabel BowleyRussiaStephen Shaw RENEWAL
Jones VocelkaFranceAsiya Javayant RENEWAL
Darci PoquetteItalyOnyama Limba UNQUALIFIED
Chavez BriddickAustraliaAsiya Javayant NEGOTIATION
Kadeem FlosiItalyAnna Fali RENEWAL
Greenwood BologniaGermanyOnyama Limba UNQUALIFIED
Aruna FigeroaAustraliaElwin Sharvill NEW
Deepesh ChuiSpainAnna Fali NEW
Leja CaldareraIndiaXuxue Feng RENEWAL
Salvatore StockhamAustraliaAmy Elsner QUALIFIED
Aditya KuskoGermanyIoni Bowcher NEW
Maisha RulapaughGermanyAmy Elsner UNQUALIFIED
Johnson SergiJapanIoni Bowcher UNQUALIFIED
Juan WieserAustraliaBernardo Dominic QUALIFIED
Silvio SlusarskiIndiaAsiya Javayant NEW
Wickens NestleJapanElwin Sharvill UNQUALIFIED
Juan WieserItalyAmy Elsner NEGOTIATION
Tony FollerIndiaOnyama Limba UNQUALIFIED
Emily WhobreyAustraliaBernardo Dominic UNQUALIFIED
Ricardo GauchoCanadaAnna Fali PROPOSAL
Nicolas IturbideCanadaIoni Bowcher QUALIFIED
Greenwood BologniaArgentinaAsiya Javayant PROPOSAL
Ashley DoeUnited KingdomIoni Bowcher RENEWAL
James ButtJapanAsiya Javayant QUALIFIED
Kaitlin OstroskyArgentinaElwin Sharvill QUALIFIED
Isabel BowleyIndiaIoni Bowcher NEW
Clifford RimSpainIvan Magalhaes NEW
Rodrigues CampainItalyAnna Fali QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Wickens NestleUnited KingdomAmy Elsner RENEWAL
Mujtaba NickaUnited KingdomXuxue Feng NEGOTIATION
Rodrigues CampainUnited KingdomOnyama Limba UNQUALIFIED
Silvio SlusarskiFranceAmy Elsner NEW
Deepesh ChuiUnited KingdomAmy Elsner PROPOSAL
Jones VocelkaArgentinaOnyama Limba RENEWAL
Aika InouyeFranceStephen Shaw UNQUALIFIED
Deepesh ChuiJapanAnna Fali NEGOTIATION
Deepesh ChuiUnited KingdomStephen Shaw PROPOSAL
Maisha RulapaughItalyIoni Bowcher NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ivar PaprockiRussia2026-06-04Benton, John B Jr PROPOSAL98Xuxue Feng
1001Murillo MaletRussia2026-05-23Rangoni Of Florence UNQUALIFIED33Ioni Bowcher
1002Morrow RutaGermany2026-05-27Morlong Associates QUALIFIED82Stephen Shaw
1003Aditya KuskoFrance2026-05-21Chanay, Jeffrey A Esq NEGOTIATION20Asiya Javayant
1004Ricardo GauchoFrance2026-06-12Rangoni Of Florence QUALIFIED94Anna Fali
1005Antonio CaudyAustralia2026-06-09Printing Dimensions NEW60Anna Fali
1006Tony FollerAustralia2026-06-02Dorl, James J Esq NEGOTIATION62Bernardo Dominic
1007Ricardo GauchoCanada2026-05-15Rangoni Of Florence NEGOTIATION38Bernardo Dominic
1008Arvin AlbaresIndia2026-06-03Chanay, Jeffrey A Esq NEGOTIATION13Anna Fali
1009Jefferson SchemmerFrance2026-05-22Buckley Miller Wright PROPOSAL29Anna Fali
1010Deepesh ChuiArgentina2026-06-12Truhlar And Truhlar Attys NEGOTIATION38Ivan Magalhaes
1011Sinclair WaycottGermany2026-05-16Rangoni Of Florence UNQUALIFIED8Xuxue Feng
1012Rodrigues CampainCanada2026-06-02Benton, John B Jr QUALIFIED21Onyama Limba
1013Kaitlin OstroskyAustralia2026-05-29Chemel, James L Cpa QUALIFIED21Stephen Shaw
1014Aika InouyeGermany2026-05-27Rangoni Of Florence NEGOTIATION41Anna Fali
1015Jones VocelkaIndia2026-06-01Benton, John B Jr NEGOTIATION20Asiya Javayant
1016Ashley DoeUnited Kingdom2026-05-22Buckley Miller Wright PROPOSAL87Elwin Sharvill
1017Jeanfrancois VenereBrazil2026-05-30Dorl, James J Esq QUALIFIED71Onyama Limba
1018Silvio SlusarskiRussia2026-06-12Printing Dimensions QUALIFIED38Onyama Limba
1019Aditya KuskoCanada2026-06-03Morlong Associates NEGOTIATION85Anna Fali
1020Leja CaldareraRussia2026-06-09Chanay, Jeffrey A Esq RENEWAL91Xuxue Feng
1021Izzy GarufiCanada2026-05-24Morlong Associates QUALIFIED20Onyama Limba
1022Jones VocelkaItaly2026-06-07Printing Dimensions RENEWAL92Ioni Bowcher
1023Nicolas IturbideBrazil2026-05-17Chanay, Jeffrey A Esq PROPOSAL63Xuxue Feng
1024Ashley DoeSpain2026-05-16Dorl, James J Esq UNQUALIFIED38Stephen Shaw
1025Arvin AlbaresItaly2026-05-27Feiner Bros RENEWAL96Elwin Sharvill
1026Munro FerenczCanada2026-05-25Chemel, James L Cpa NEGOTIATION35Amy Elsner
1027Jennifer AmigonGermany2026-06-08Rousseaux, Michael Esq RENEWAL14Ioni Bowcher
1028Murillo MaletIndia2026-05-18Rangoni Of Florence NEW47Asiya Javayant
1029Johnson SergiSpain2026-05-28King, Christopher A Esq UNQUALIFIED97Elwin Sharvill
1030Kaitlin OstroskyFrance2026-06-10Rousseaux, Michael Esq QUALIFIED1Amy Elsner
1031Maisha RulapaughBrazil2026-05-15Chemel, James L Cpa PROPOSAL37Bernardo Dominic
1032Arvin AlbaresItaly2026-05-19Feiner Bros QUALIFIED81Bernardo Dominic
1033Murillo MaletUnited Kingdom2026-05-17Rousseaux, Michael Esq UNQUALIFIED1Anna Fali
1034Rodrigues CampainIndia2026-05-18Benton, John B Jr QUALIFIED44Ioni Bowcher
1035Deepesh ChuiItaly2026-06-13Printing Dimensions NEW89Ioni Bowcher
1036Leon OldroydJapan2026-06-01Dorl, James J Esq RENEWAL16Amy Elsner
1037Morrow RutaUnited Kingdom2026-05-15Truhlar And Truhlar Attys QUALIFIED64Elwin Sharvill
1038Deepesh ChuiFrance2026-05-30Chapman, Ross E Esq NEW40Ivan Magalhaes
1039Munro FerenczCanada2026-05-23Buckley Miller Wright NEGOTIATION51Xuxue Feng
1040Aruna FigeroaJapan2026-06-02Feltz Printing Service RENEWAL11Amy Elsner
1041Maisha RulapaughBrazil2026-06-01Commercial Press QUALIFIED84Ioni Bowcher
1042Jefferson SchemmerUnited Kingdom2026-06-12King, Christopher A Esq NEW87Elwin Sharvill
1043Cody SaylorsUnited Kingdom2026-05-16Feltz Printing Service PROPOSAL21Onyama Limba
1044Greenwood BologniaUnited Kingdom2026-05-19Benton, John B Jr QUALIFIED22Onyama Limba
1045Jefferson SchemmerRussia2026-06-06Printing Dimensions NEW53Onyama Limba
1046Faith GillianGermany2026-06-02Truhlar And Truhlar Attys PROPOSAL61Elwin Sharvill
1047Smith GlickItaly2026-05-19Truhlar And Truhlar Attys UNQUALIFIED1Elwin Sharvill
1048Faith GillianRussia2026-05-15Morlong Associates UNQUALIFIED41Elwin Sharvill
1049Silvio SlusarskiCanada2026-05-20Feltz Printing Service UNQUALIFIED58Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Greenwood BologniaRussiaIvan Magalhaes RENEWAL
Isabel BowleyItalyIvan Magalhaes RENEWAL
Clifford RimArgentinaOnyama Limba UNQUALIFIED
Salvatore StockhamArgentinaXuxue Feng UNQUALIFIED
Morrow RutaCanadaIvan Magalhaes NEGOTIATION
Jeanfrancois VenereCanadaAmy Elsner PROPOSAL
Rodrigues CampainAustraliaElwin Sharvill QUALIFIED
Jeanfrancois VenereSpainBernardo Dominic UNQUALIFIED
Tony FollerSpainAmy Elsner UNQUALIFIED
Salvatore StockhamArgentinaXuxue Feng UNQUALIFIED
Misaki RoysterBrazilAmy Elsner RENEWAL
Claire TollnerUnited KingdomAmy Elsner UNQUALIFIED
Tony FollerItalyIoni Bowcher RENEWAL
Wickens NestleItalyIvan Magalhaes PROPOSAL
Leon OldroydIndiaBernardo Dominic NEGOTIATION
Francesco ShinkoFranceIvan Magalhaes PROPOSAL
Juan WieserBrazilXuxue Feng RENEWAL
Silvio SlusarskiBrazilXuxue Feng UNQUALIFIED
Jeanfrancois VenereUnited KingdomIvan Magalhaes NEW
Ashley DoeSpainAnna Fali UNQUALIFIED
Antonio CaudyBrazilBernardo Dominic QUALIFIED
Misaki RoysterCanadaXuxue Feng NEW
Johnson SergiIndiaIvan Magalhaes NEGOTIATION
Greenwood BologniaItalyAsiya Javayant QUALIFIED
Emily WhobreyRussiaStephen Shaw UNQUALIFIED
Izzy GarufiRussiaXuxue Feng NEW
Greenwood BologniaGermanyOnyama Limba RENEWAL
Morrow RutaBrazilXuxue Feng QUALIFIED
Sinclair WaycottAustraliaAmy Elsner UNQUALIFIED
Jeanfrancois VenereCanadaAnna Fali NEGOTIATION
Deepesh ChuiRussiaOnyama Limba NEGOTIATION
Octavia MaletUnited KingdomAsiya Javayant UNQUALIFIED
Salvatore StockhamGermanyOnyama Limba PROPOSAL
Francesco ShinkoItalyAnna Fali NEGOTIATION
Francesco ShinkoFranceStephen Shaw NEW
Emily WhobreyFranceElwin Sharvill RENEWAL
Chavez BriddickArgentinaIvan Magalhaes PROPOSAL
Kaitlin OstroskyJapanIvan Magalhaes PROPOSAL
Johnson SergiIndiaOnyama Limba NEW
Mujtaba NickaJapanIvan Magalhaes NEW
Arvin AlbaresArgentinaStephen Shaw NEW
Adams MorascaItalyAmy Elsner PROPOSAL
Aruna FigeroaGermanyBernardo Dominic QUALIFIED
Munro FerenczSpainXuxue Feng NEW
Ivar PaprockiUnited KingdomOnyama Limba RENEWAL
Emily WhobreyAustraliaIoni Bowcher RENEWAL
Jennifer AmigonBrazilElwin Sharvill NEW
Munro FerenczGermanyIoni Bowcher RENEWAL
Maria MarrierBrazilAnna Fali PROPOSAL
Leja CaldareraJapanOnyama Limba UNQUALIFIED
Frozen Columns
Name
Costa Dilliard
Kaitlin Ostrosky
Stacey Maclead
Johnson Sergi
Kadeem Flosi
Nicolas Iturbide
Maisha Rulapaugh
Ashley Doe
Ricardo Gaucho
Tony Foller
Jones Vocelka
Faith Gillian
Stacey Maclead
Kadeem Flosi
Faith Gillian
Emily Whobrey
Sinclair Waycott
Antonio Caudy
Maisha Rulapaugh
Francesco Shinko
Nicolas Iturbide
Kadeem Flosi
Adams Morasca
Isabel Bowley
Smith Glick
Morrow Ruta
Cody Saylors
Alejandro Perin
Alejandro Perin
Aruna Figeroa
Costa Dilliard
Jones Vocelka
Deepesh Chui
Claire Tollner
Sinclair Waycott
Faith Gillian
Munro Ferencz
Jones Vocelka
Sinclair Waycott
Juan Wieser
Mayumi Kolmetz
Aruna Figeroa
Jefferson Schemmer
Ashley Doe
Darci Poquette
Julie Stenseth
Mujtaba Nicka
Leon Oldroyd
Salvatore Stockham
Smith Glick
IdCountryDate
1000United Kingdom2026-05-27
1001India2026-05-27
1002Germany2026-05-30
1003Argentina2026-06-09
1004Argentina2026-06-08
1005Italy2026-05-16
1006Canada2026-05-29
1007United Kingdom2026-05-18
1008Russia2026-06-05
1009Canada2026-06-10
1010Canada2026-05-24
1011Spain2026-05-20
1012Japan2026-06-07
1013Australia2026-05-25
1014Canada2026-05-22
1015Brazil2026-05-18
1016Italy2026-06-09
1017Germany2026-06-02
1018France2026-05-24
1019India2026-06-11
1020Russia2026-06-04
1021United Kingdom2026-06-01
1022Argentina2026-05-21
1023India2026-06-01
1024Russia2026-05-16
1025United Kingdom2026-05-25
1026France2026-05-18
1027Germany2026-06-02
1028Russia2026-05-16
1029France2026-05-26
1030India2026-05-31
1031Canada2026-06-07
1032Argentina2026-05-27
1033Italy2026-06-04
1034Japan2026-05-23
1035India2026-05-25
1036Italy2026-05-29
1037India2026-05-19
1038Canada2026-05-28
1039Italy2026-06-11
1040Italy2026-05-26
1041Canada2026-05-30
1042United Kingdom2026-06-02
1043Japan2026-05-24
1044France2026-06-05
1045United Kingdom2026-05-15
1046Germany2026-05-23
1047United Kingdom2026-05-25
1048Germany2026-05-25
1049Germany2026-06-13

On-Demand Data

NameIdCountryDate
Faith Gillian1000Japan2026-05-20
Sinclair Waycott1001Italy2026-06-09
Octavia Malet1002Spain2026-06-12
Morrow Ruta1003Canada2026-05-19
Smith Glick1004Germany2026-06-07
Silvio Slusarski1005United Kingdom2026-06-01
Kaitlin Ostrosky1006Australia2026-06-13
Mujtaba Nicka1007Italy2026-06-13
Maria Marrier1008India2026-06-02
Johnson Sergi1009France2026-05-27
Jones Vocelka1010Japan2026-06-08
Aika Inouye1011Canada2026-06-02
Adams Morasca1012Australia2026-05-16
Juan Wieser1013Argentina2026-05-23
Greenwood Bolognia1014Canada2026-05-23
Maria Marrier1015Brazil2026-06-05
Nicolas Iturbide1016Italy2026-05-18
Jefferson Schemmer1017Spain2026-06-07
Chavez Briddick1018Canada2026-06-03
Ashley Doe1019Germany2026-05-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leja CaldareraUnited KingdomAmy Elsner UNQUALIFIED
Alejandro PerinFranceElwin Sharvill NEGOTIATION
Emily WhobreyRussiaElwin Sharvill PROPOSAL
Leon OldroydSpainIoni Bowcher QUALIFIED
Octavia MaletIndiaStephen Shaw NEW
Isabel BowleyJapanIvan Magalhaes QUALIFIED
Adams MorascaItalyIoni Bowcher RENEWAL
David DarakjyFranceAsiya Javayant PROPOSAL
Faith GillianAustraliaAsiya Javayant NEGOTIATION
Jones VocelkaAustraliaElwin Sharvill RENEWAL
Darci PoquetteIndiaOnyama Limba RENEWAL
Arvin AlbaresJapanXuxue Feng QUALIFIED
Tony FollerItalyAnna Fali PROPOSAL
Ricardo GauchoIndiaElwin Sharvill NEW
Greenwood BologniaJapanBernardo Dominic PROPOSAL
Juan WieserIndiaXuxue Feng NEW
Misaki RoysterIndiaOnyama Limba PROPOSAL
Aruna FigeroaItalyAsiya Javayant NEW
Mujtaba NickaArgentinaOnyama Limba RENEWAL
Leja CaldareraCanadaAsiya Javayant NEGOTIATION
Maisha RulapaughItalyBernardo Dominic QUALIFIED
Tony FollerCanadaElwin Sharvill PROPOSAL
Isabel BowleyJapanIvan Magalhaes QUALIFIED
Francesco ShinkoGermanyOnyama Limba NEW
Salvatore StockhamCanadaAsiya Javayant NEW
Wickens NestleRussiaIoni Bowcher NEGOTIATION
Jefferson SchemmerUnited KingdomXuxue Feng UNQUALIFIED
Ashley DoeUnited KingdomOnyama Limba QUALIFIED
Maria MarrierIndiaAmy Elsner QUALIFIED
Mujtaba NickaJapanAmy Elsner RENEWAL
Smith GlickBrazilAnna Fali RENEWAL
Francesco ShinkoRussiaStephen Shaw PROPOSAL
Aruna FigeroaUnited KingdomIvan Magalhaes RENEWAL
Jennifer AmigonJapanIvan Magalhaes QUALIFIED
Tony FollerSpainElwin Sharvill QUALIFIED
Jennifer AmigonJapanBernardo Dominic RENEWAL
Ashley DoeUnited KingdomElwin Sharvill UNQUALIFIED
Ricardo GauchoCanadaElwin Sharvill PROPOSAL
Jeanfrancois VenereCanadaOnyama Limba UNQUALIFIED
Rodrigues CampainRussiaStephen Shaw UNQUALIFIED

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