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
Munro FerenczJapanIvan Magalhaes QUALIFIED
Alejandro PerinSpainBernardo Dominic UNQUALIFIED
Salvatore StockhamFranceIoni Bowcher QUALIFIED
Cody SaylorsItalyIvan Magalhaes UNQUALIFIED
Smith GlickRussiaStephen Shaw NEGOTIATION
Mayumi KolmetzBrazilAnna Fali NEW
Juan WieserSpainAnna Fali RENEWAL
Aruna FigeroaCanadaOnyama Limba PROPOSAL
Aruna FigeroaIndiaOnyama Limba UNQUALIFIED
Isabel BowleyFranceAmy Elsner QUALIFIED
Jefferson SchemmerFranceIoni Bowcher UNQUALIFIED
Arvin AlbaresAustraliaAsiya Javayant RENEWAL
Kadeem FlosiIndiaAmy Elsner NEGOTIATION
Johnson SergiItalyBernardo Dominic PROPOSAL
Leja CaldareraCanadaAnna Fali RENEWAL
Jennifer AmigonArgentinaIvan Magalhaes NEW
Izzy GarufiArgentinaAmy Elsner PROPOSAL
Ricardo GauchoBrazilStephen Shaw PROPOSAL
Antonio CaudyItalyIoni Bowcher NEW
Aruna FigeroaCanadaBernardo Dominic NEW
Ivar PaprockiGermanyStephen Shaw NEW
Silvio SlusarskiSpainIoni Bowcher RENEWAL
Jones VocelkaFranceElwin Sharvill QUALIFIED
Chavez BriddickUnited KingdomAsiya Javayant UNQUALIFIED
Stacey MacleadRussiaIoni Bowcher RENEWAL
Faith GillianCanadaIvan Magalhaes QUALIFIED
Aika InouyeAustraliaAsiya Javayant NEW
Cody SaylorsUnited KingdomAmy Elsner NEW
Murillo MaletGermanyIvan Magalhaes QUALIFIED
Leja CaldareraSpainIoni Bowcher UNQUALIFIED
Leon OldroydItalyStephen Shaw NEGOTIATION
Murillo MaletAustraliaElwin Sharvill NEW
Ashley DoeSpainAmy Elsner PROPOSAL
Jones VocelkaIndiaAsiya Javayant PROPOSAL
Kadeem FlosiAustraliaStephen Shaw QUALIFIED
Aditya KuskoRussiaAmy Elsner NEGOTIATION
Jefferson SchemmerArgentinaXuxue Feng NEW
Munro FerenczItalyIoni Bowcher NEW
Arvin AlbaresArgentinaIoni Bowcher NEW
Kaitlin OstroskyIndiaIoni Bowcher QUALIFIED
Wickens NestleIndiaAmy Elsner PROPOSAL
Tony FollerIndiaAmy Elsner QUALIFIED
Ivar PaprockiRussiaAsiya Javayant PROPOSAL
Silvio SlusarskiArgentinaElwin Sharvill NEW
Silvio SlusarskiIndiaXuxue Feng NEGOTIATION
Rodrigues CampainArgentinaIoni Bowcher UNQUALIFIED
Alejandro PerinFranceBernardo Dominic RENEWAL
Arvin AlbaresAustraliaStephen Shaw PROPOSAL
James ButtJapanElwin Sharvill UNQUALIFIED
Juan WieserItalyBernardo Dominic NEW
Horizontal
NameCountryRepresentativeStatus
Maria MarrierCanadaIoni Bowcher NEW
Aruna FigeroaCanadaAnna Fali PROPOSAL
Aika InouyeSpainIoni Bowcher QUALIFIED
Maisha RulapaughSpainBernardo Dominic UNQUALIFIED
Greenwood BologniaAustraliaIoni Bowcher RENEWAL
Johnson SergiUnited KingdomAsiya Javayant UNQUALIFIED
Kaitlin OstroskyRussiaAsiya Javayant NEGOTIATION
Juan WieserCanadaBernardo Dominic QUALIFIED
Stacey MacleadJapanAnna Fali QUALIFIED
Munro FerenczAustraliaAsiya Javayant UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Silvio SlusarskiSpain2026-04-20Chanay, Jeffrey A Esq RENEWAL71Ivan Magalhaes
1001Ashley DoeCanada2026-04-06Chemel, James L Cpa UNQUALIFIED61Onyama Limba
1002Juan WieserBrazil2026-04-08Rangoni Of Florence NEW54Onyama Limba
1003Faith GillianItaly2026-03-24Benton, John B Jr PROPOSAL14Stephen Shaw
1004Emily WhobreyGermany2026-04-10Chanay, Jeffrey A Esq PROPOSAL9Xuxue Feng
1005Leon OldroydAustralia2026-04-11Buckley Miller Wright RENEWAL21Anna Fali
1006Costa DilliardFrance2026-04-10Dorl, James J Esq UNQUALIFIED93Stephen Shaw
1007Aditya KuskoItaly2026-04-04Benton, John B Jr RENEWAL8Bernardo Dominic
1008Greenwood BologniaRussia2026-04-20Benton, John B Jr PROPOSAL42Xuxue Feng
1009Cody SaylorsIndia2026-04-01Truhlar And Truhlar Attys QUALIFIED13Ioni Bowcher
1010Aruna FigeroaItaly2026-04-13Buckley Miller Wright PROPOSAL82Ioni Bowcher
1011Aika InouyeJapan2026-03-31Feiner Bros NEGOTIATION13Onyama Limba
1012Jones VocelkaCanada2026-04-16Chemel, James L Cpa NEW78Anna Fali
1013Arvin AlbaresAustralia2026-03-29Benton, John B Jr PROPOSAL13Stephen Shaw
1014Claire TollnerJapan2026-04-18Commercial Press UNQUALIFIED38Xuxue Feng
1015Juan WieserJapan2026-04-03Chemel, James L Cpa NEGOTIATION89Anna Fali
1016Ashley DoeItaly2026-03-23Feltz Printing Service QUALIFIED45Ioni Bowcher
1017Adams MorascaCanada2026-03-23Chanay, Jeffrey A Esq PROPOSAL8Asiya Javayant
1018Murillo MaletSpain2026-04-10Chemel, James L Cpa UNQUALIFIED54Bernardo Dominic
1019Deepesh ChuiItaly2026-04-14Feltz Printing Service PROPOSAL74Anna Fali
1020Mujtaba NickaAustralia2026-03-26Morlong Associates PROPOSAL66Xuxue Feng
1021Octavia MaletBrazil2026-04-13Chapman, Ross E Esq UNQUALIFIED30Ioni Bowcher
1022Jeanfrancois VenereGermany2026-04-02Dorl, James J Esq QUALIFIED90Ioni Bowcher
1023Leja CaldareraAustralia2026-04-12Chanay, Jeffrey A Esq NEGOTIATION13Asiya Javayant
1024Salvatore StockhamAustralia2026-04-21Chapman, Ross E Esq RENEWAL12Xuxue Feng
1025Jennifer AmigonUnited Kingdom2026-04-17Dorl, James J Esq PROPOSAL68Xuxue Feng
1026Kadeem FlosiCanada2026-04-07Truhlar And Truhlar Attys NEW7Onyama Limba
1027Antonio CaudyFrance2026-03-30Buckley Miller Wright NEGOTIATION60Bernardo Dominic
1028Silvio SlusarskiCanada2026-04-21Morlong Associates RENEWAL55Elwin Sharvill
1029Rodrigues CampainBrazil2026-04-17Feltz Printing Service NEW16Xuxue Feng
1030Johnson SergiBrazil2026-03-29Chemel, James L Cpa QUALIFIED35Amy Elsner
1031Claire TollnerUnited Kingdom2026-04-10Rousseaux, Michael Esq PROPOSAL14Ivan Magalhaes
1032Misaki RoysterUnited Kingdom2026-03-27Chanay, Jeffrey A Esq QUALIFIED38Amy Elsner
1033Morrow RutaIndia2026-04-02Buckley Miller Wright NEW51Bernardo Dominic
1034Adams MorascaSpain2026-03-24Benton, John B Jr UNQUALIFIED53Ioni Bowcher
1035Kaitlin OstroskyFrance2026-04-01Morlong Associates UNQUALIFIED82Stephen Shaw
1036Julie StensethIndia2026-04-21King, Christopher A Esq NEGOTIATION30Anna Fali
1037Mujtaba NickaItaly2026-04-15King, Christopher A Esq NEGOTIATION54Stephen Shaw
1038Arvin AlbaresBrazil2026-04-15Rousseaux, Michael Esq NEW16Onyama Limba
1039Alejandro PerinRussia2026-04-02Printing Dimensions NEW9Ivan Magalhaes
1040Ricardo GauchoBrazil2026-04-09Printing Dimensions RENEWAL13Elwin Sharvill
1041Aika InouyeCanada2026-04-07Feiner Bros QUALIFIED31Stephen Shaw
1042Darci PoquetteBrazil2026-03-24Buckley Miller Wright PROPOSAL81Bernardo Dominic
1043Emily WhobreyItaly2026-03-25Feltz Printing Service NEGOTIATION93Ivan Magalhaes
1044Jefferson SchemmerSpain2026-04-02Dorl, James J Esq UNQUALIFIED80Xuxue Feng
1045Wickens NestleAustralia2026-04-13Feltz Printing Service NEW77Bernardo Dominic
1046Octavia MaletGermany2026-04-07Benton, John B Jr NEGOTIATION80Xuxue Feng
1047Jones VocelkaJapan2026-03-29Chemel, James L Cpa NEW77Ivan Magalhaes
1048Alejandro PerinIndia2026-04-05Rangoni Of Florence RENEWAL86Stephen Shaw
1049Aditya KuskoBrazil2026-04-02Feltz Printing Service UNQUALIFIED76Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Mujtaba NickaBrazilAnna Fali RENEWAL
Rodrigues CampainSpainIoni Bowcher RENEWAL
Maria MarrierCanadaAnna Fali PROPOSAL
Juan WieserItalyBernardo Dominic NEW
Cody SaylorsJapanStephen Shaw QUALIFIED
Francesco ShinkoCanadaXuxue Feng RENEWAL
Cody SaylorsUnited KingdomAnna Fali NEGOTIATION
Leja CaldareraCanadaAsiya Javayant UNQUALIFIED
Costa DilliardBrazilBernardo Dominic NEGOTIATION
Darci PoquetteIndiaAmy Elsner NEGOTIATION
Kadeem FlosiItalyBernardo Dominic QUALIFIED
Antonio CaudyItalyXuxue Feng PROPOSAL
Salvatore StockhamAustraliaAnna Fali NEGOTIATION
Ashley DoeArgentinaXuxue Feng NEW
Morrow RutaUnited KingdomAsiya Javayant NEGOTIATION
Mayumi KolmetzAustraliaIvan Magalhaes RENEWAL
Misaki RoysterRussiaAmy Elsner NEGOTIATION
Kaitlin OstroskySpainBernardo Dominic NEGOTIATION
Juan WieserGermanyAsiya Javayant NEGOTIATION
Costa DilliardAustraliaStephen Shaw NEW
Mayumi KolmetzUnited KingdomOnyama Limba UNQUALIFIED
Alejandro PerinAustraliaAnna Fali PROPOSAL
Greenwood BologniaItalyElwin Sharvill PROPOSAL
Aika InouyeJapanAmy Elsner NEW
Izzy GarufiArgentinaElwin Sharvill NEW
Munro FerenczFranceElwin Sharvill PROPOSAL
Smith GlickGermanyAnna Fali QUALIFIED
Morrow RutaAustraliaXuxue Feng QUALIFIED
Izzy GarufiJapanAnna Fali UNQUALIFIED
Smith GlickRussiaAnna Fali PROPOSAL
Silvio SlusarskiGermanyAnna Fali NEW
Rodrigues CampainGermanyAnna Fali UNQUALIFIED
Mayumi KolmetzRussiaBernardo Dominic QUALIFIED
Jeanfrancois VenereBrazilAnna Fali UNQUALIFIED
Ricardo GauchoArgentinaIoni Bowcher NEW
Deepesh ChuiRussiaAsiya Javayant NEW
Ricardo GauchoSpainIoni Bowcher PROPOSAL
Salvatore StockhamBrazilElwin Sharvill QUALIFIED
Clifford RimArgentinaIoni Bowcher QUALIFIED
Salvatore StockhamItalyXuxue Feng PROPOSAL
Greenwood BologniaUnited KingdomElwin Sharvill NEGOTIATION
Cody SaylorsSpainBernardo Dominic PROPOSAL
Jefferson SchemmerSpainOnyama Limba NEGOTIATION
Aruna FigeroaSpainAmy Elsner UNQUALIFIED
Mayumi KolmetzArgentinaAmy Elsner NEW
Clifford RimUnited KingdomAnna Fali RENEWAL
Emily WhobreyIndiaAmy Elsner UNQUALIFIED
Aika InouyeBrazilIvan Magalhaes QUALIFIED
Maisha RulapaughBrazilBernardo Dominic UNQUALIFIED
Alejandro PerinFranceAmy Elsner UNQUALIFIED
Frozen Columns
Name
Antonio Caudy
Chavez Briddick
Maria Marrier
Deepesh Chui
Munro Ferencz
Arvin Albares
Rodrigues Campain
Jeanfrancois Venere
Aditya Kusko
Octavia Malet
Nicolas Iturbide
Kadeem Flosi
Jennifer Amigon
Jennifer Amigon
Leja Caldarera
Arvin Albares
Faith Gillian
Smith Glick
Greenwood Bolognia
James Butt
Greenwood Bolognia
Mayumi Kolmetz
Antonio Caudy
Kadeem Flosi
Alejandro Perin
Wickens Nestle
Johnson Sergi
Misaki Royster
Aika Inouye
Smith Glick
Maisha Rulapaugh
Kadeem Flosi
Maisha Rulapaugh
Johnson Sergi
Deepesh Chui
Francesco Shinko
Rodrigues Campain
Jones Vocelka
Kaitlin Ostrosky
Salvatore Stockham
Aruna Figeroa
Ivar Paprocki
Jefferson Schemmer
Ashley Doe
Munro Ferencz
Adams Morasca
Maisha Rulapaugh
Mayumi Kolmetz
Aruna Figeroa
Jeanfrancois Venere
IdCountryDate
1000Italy2026-04-18
1001Brazil2026-04-19
1002Russia2026-03-23
1003Canada2026-04-10
1004India2026-04-01
1005Spain2026-04-21
1006Argentina2026-04-02
1007Argentina2026-03-25
1008Australia2026-04-07
1009Canada2026-03-26
1010United Kingdom2026-04-18
1011Italy2026-04-13
1012Argentina2026-04-09
1013Japan2026-04-01
1014Germany2026-03-30
1015Canada2026-03-30
1016Italy2026-04-15
1017Argentina2026-03-28
1018Australia2026-04-15
1019Australia2026-04-07
1020Canada2026-03-26
1021Germany2026-04-14
1022Spain2026-03-26
1023Brazil2026-03-26
1024Japan2026-03-26
1025India2026-04-07
1026United Kingdom2026-04-13
1027Japan2026-04-11
1028Italy2026-04-06
1029Germany2026-03-25
1030Brazil2026-04-06
1031United Kingdom2026-04-06
1032Brazil2026-04-18
1033Canada2026-03-25
1034Russia2026-03-26
1035Russia2026-04-18
1036United Kingdom2026-04-04
1037Germany2026-04-13
1038Canada2026-04-05
1039Spain2026-04-10
1040Italy2026-04-11
1041Germany2026-04-07
1042Spain2026-04-20
1043Russia2026-04-01
1044Argentina2026-04-19
1045France2026-04-11
1046Argentina2026-03-30
1047Russia2026-03-26
1048India2026-04-17
1049United Kingdom2026-04-16

On-Demand Data

NameIdCountryDate
Aruna Figeroa1000Spain2026-04-17
Mayumi Kolmetz1001United Kingdom2026-04-16
Greenwood Bolognia1002Argentina2026-04-01
Ricardo Gaucho1003Australia2026-04-05
Clifford Rim1004India2026-03-25
Jennifer Amigon1005Canada2026-04-07
Mujtaba Nicka1006Australia2026-04-12
Claire Tollner1007Spain2026-04-01
Johnson Sergi1008Germany2026-04-20
Leon Oldroyd1009Canada2026-04-08
Mujtaba Nicka1010Italy2026-03-31
Nicolas Iturbide1011Japan2026-04-02
Nicolas Iturbide1012Germany2026-04-11
Claire Tollner1013Italy2026-04-09
Morrow Ruta1014Japan2026-04-21
Wickens Nestle1015Spain2026-03-31
Greenwood Bolognia1016Canada2026-03-27
Tony Foller1017Italy2026-03-23
Greenwood Bolognia1018India2026-04-06
Jennifer Amigon1019Argentina2026-04-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leon OldroydItalyXuxue Feng RENEWAL
Alejandro PerinGermanyIvan Magalhaes NEW
Maria MarrierGermanyElwin Sharvill PROPOSAL
Ricardo GauchoGermanyStephen Shaw PROPOSAL
Silvio SlusarskiSpainIoni Bowcher QUALIFIED
Adams MorascaRussiaElwin Sharvill NEGOTIATION
Rodrigues CampainArgentinaStephen Shaw PROPOSAL
Isabel BowleyGermanyStephen Shaw NEW
Mujtaba NickaArgentinaBernardo Dominic RENEWAL
Darci PoquetteAustraliaXuxue Feng PROPOSAL
Jennifer AmigonRussiaStephen Shaw PROPOSAL
Kadeem FlosiSpainXuxue Feng RENEWAL
Tony FollerSpainXuxue Feng QUALIFIED
Deepesh ChuiSpainOnyama Limba PROPOSAL
James ButtUnited KingdomAnna Fali PROPOSAL
Misaki RoysterCanadaElwin Sharvill RENEWAL
Munro FerenczCanadaIoni Bowcher UNQUALIFIED
Emily WhobreyItalyStephen Shaw NEGOTIATION
Wickens NestleBrazilOnyama Limba UNQUALIFIED
Isabel BowleyAustraliaOnyama Limba PROPOSAL
Aika InouyeRussiaOnyama Limba RENEWAL
Jeanfrancois VenereSpainIoni Bowcher PROPOSAL
Izzy GarufiCanadaStephen Shaw UNQUALIFIED
David DarakjyRussiaBernardo Dominic PROPOSAL
Sinclair WaycottUnited KingdomAsiya Javayant PROPOSAL
Kadeem FlosiCanadaAmy Elsner RENEWAL
Nicolas IturbideAustraliaAnna Fali PROPOSAL
Octavia MaletGermanyOnyama Limba NEGOTIATION
Leon OldroydFranceBernardo Dominic PROPOSAL
Izzy GarufiUnited KingdomStephen Shaw NEW
Mayumi KolmetzGermanyAsiya Javayant QUALIFIED
Clifford RimUnited KingdomAnna Fali UNQUALIFIED
Aditya KuskoItalyIvan Magalhaes PROPOSAL
Izzy GarufiItalyAnna Fali NEGOTIATION
Octavia MaletSpainIoni Bowcher RENEWAL
Aditya KuskoArgentinaXuxue Feng NEW
Smith GlickSpainXuxue Feng NEW
Jefferson SchemmerIndiaIvan Magalhaes UNQUALIFIED
Wickens NestleIndiaAmy Elsner UNQUALIFIED
Morrow RutaArgentinaAmy Elsner RENEWAL

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