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
Maria MarrierSpainBernardo Dominic UNQUALIFIED
Julie StensethFranceAmy Elsner RENEWAL
Aditya KuskoUnited KingdomBernardo Dominic UNQUALIFIED
Arvin AlbaresArgentinaStephen Shaw UNQUALIFIED
Emily WhobreyFranceBernardo Dominic NEGOTIATION
Wickens NestleAustraliaOnyama Limba RENEWAL
Antonio CaudyBrazilIoni Bowcher QUALIFIED
Kaitlin OstroskyUnited KingdomIvan Magalhaes QUALIFIED
Aika InouyeArgentinaIvan Magalhaes QUALIFIED
Tony FollerCanadaIoni Bowcher RENEWAL
Ivar PaprockiBrazilElwin Sharvill PROPOSAL
Morrow RutaUnited KingdomAmy Elsner PROPOSAL
Julie StensethItalyAsiya Javayant NEGOTIATION
Costa DilliardCanadaBernardo Dominic RENEWAL
Chavez BriddickArgentinaOnyama Limba NEW
David DarakjyJapanAsiya Javayant QUALIFIED
Juan WieserArgentinaAmy Elsner NEGOTIATION
Tony FollerRussiaIvan Magalhaes PROPOSAL
Mujtaba NickaRussiaAmy Elsner PROPOSAL
Aruna FigeroaItalyAmy Elsner NEGOTIATION
Alejandro PerinGermanyIvan Magalhaes NEW
Wickens NestleItalyOnyama Limba PROPOSAL
Morrow RutaRussiaXuxue Feng NEW
Kaitlin OstroskyIndiaOnyama Limba PROPOSAL
Ashley DoeUnited KingdomElwin Sharvill NEGOTIATION
Darci PoquetteUnited KingdomStephen Shaw PROPOSAL
Mujtaba NickaBrazilAsiya Javayant QUALIFIED
Deepesh ChuiBrazilBernardo Dominic NEGOTIATION
Claire TollnerAustraliaIvan Magalhaes QUALIFIED
Silvio SlusarskiSpainAnna Fali UNQUALIFIED
Salvatore StockhamUnited KingdomAnna Fali QUALIFIED
Mujtaba NickaAustraliaOnyama Limba UNQUALIFIED
Aditya KuskoItalyXuxue Feng NEGOTIATION
Maisha RulapaughFranceIvan Magalhaes UNQUALIFIED
Aika InouyeFranceOnyama Limba NEW
Francesco ShinkoCanadaElwin Sharvill RENEWAL
Leja CaldareraArgentinaBernardo Dominic QUALIFIED
Antonio CaudyUnited KingdomBernardo Dominic QUALIFIED
Ashley DoeJapanIvan Magalhaes NEW
Jennifer AmigonGermanyStephen Shaw UNQUALIFIED
Greenwood BologniaFranceAnna Fali RENEWAL
Stacey MacleadSpainAmy Elsner PROPOSAL
Aika InouyeRussiaElwin Sharvill NEW
Aditya KuskoJapanStephen Shaw QUALIFIED
Morrow RutaIndiaIoni Bowcher NEGOTIATION
Ashley DoeArgentinaAmy Elsner RENEWAL
Jennifer AmigonArgentinaIoni Bowcher RENEWAL
Aruna FigeroaArgentinaAsiya Javayant PROPOSAL
Julie StensethUnited KingdomAsiya Javayant RENEWAL
Rodrigues CampainIndiaAmy Elsner UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Alejandro PerinAustraliaAnna Fali QUALIFIED
Alejandro PerinAustraliaIvan Magalhaes PROPOSAL
Silvio SlusarskiFranceElwin Sharvill NEW
Ivar PaprockiRussiaBernardo Dominic UNQUALIFIED
Juan WieserIndiaOnyama Limba QUALIFIED
Kaitlin OstroskyFranceStephen Shaw UNQUALIFIED
Maria MarrierBrazilOnyama Limba NEGOTIATION
Greenwood BologniaArgentinaAnna Fali NEW
Juan WieserItalyElwin Sharvill PROPOSAL
Munro FerenczItalyXuxue Feng RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Murillo MaletAustralia2026-04-15Feltz Printing Service UNQUALIFIED73Anna Fali
1001Emily WhobreyRussia2026-04-22Benton, John B Jr RENEWAL81Elwin Sharvill
1002James ButtGermany2026-04-27Morlong Associates PROPOSAL10Elwin Sharvill
1003Arvin AlbaresCanada2026-05-09Feltz Printing Service RENEWAL64Ioni Bowcher
1004Johnson SergiSpain2026-04-16Commercial Press QUALIFIED91Anna Fali
1005Wickens NestleFrance2026-04-21Chanay, Jeffrey A Esq PROPOSAL51Stephen Shaw
1006Octavia MaletIndia2026-04-25Chanay, Jeffrey A Esq NEW33Xuxue Feng
1007David DarakjyFrance2026-05-03Chemel, James L Cpa QUALIFIED67Xuxue Feng
1008Maisha RulapaughIndia2026-04-29Feiner Bros NEGOTIATION68Onyama Limba
1009Adams MorascaItaly2026-05-11Chanay, Jeffrey A Esq QUALIFIED4Bernardo Dominic
1010Mayumi KolmetzJapan2026-04-24Feltz Printing Service RENEWAL58Asiya Javayant
1011Emily WhobreyIndia2026-05-07Dorl, James J Esq QUALIFIED59Anna Fali
1012Sinclair WaycottRussia2026-04-25Morlong Associates QUALIFIED81Ioni Bowcher
1013Claire TollnerJapan2026-04-15Benton, John B Jr RENEWAL79Onyama Limba
1014Costa DilliardRussia2026-04-28Dorl, James J Esq QUALIFIED61Stephen Shaw
1015Cody SaylorsFrance2026-04-24Rangoni Of Florence QUALIFIED87Bernardo Dominic
1016Johnson SergiArgentina2026-04-30Printing Dimensions NEW23Ivan Magalhaes
1017Adams MorascaGermany2026-04-16Commercial Press UNQUALIFIED18Amy Elsner
1018Leon OldroydUnited Kingdom2026-05-14Rousseaux, Michael Esq QUALIFIED49Elwin Sharvill
1019Sinclair WaycottJapan2026-04-17Dorl, James J Esq PROPOSAL97Amy Elsner
1020Sinclair WaycottCanada2026-04-25Chapman, Ross E Esq RENEWAL2Stephen Shaw
1021Rodrigues CampainRussia2026-05-14Commercial Press UNQUALIFIED42Amy Elsner
1022Emily WhobreyArgentina2026-05-05Chapman, Ross E Esq NEGOTIATION37Ivan Magalhaes
1023Rodrigues CampainAustralia2026-04-18Rousseaux, Michael Esq PROPOSAL36Stephen Shaw
1024Jones VocelkaBrazil2026-05-06Feiner Bros NEGOTIATION0Ivan Magalhaes
1025Smith GlickBrazil2026-05-10Rousseaux, Michael Esq PROPOSAL33Ioni Bowcher
1026Salvatore StockhamIndia2026-04-25Rangoni Of Florence RENEWAL11Onyama Limba
1027Faith GillianFrance2026-05-11Feltz Printing Service UNQUALIFIED41Ioni Bowcher
1028Octavia MaletCanada2026-05-13Truhlar And Truhlar Attys UNQUALIFIED24Onyama Limba
1029James ButtItaly2026-04-20Dorl, James J Esq UNQUALIFIED13Elwin Sharvill
1030Mujtaba NickaAustralia2026-04-23Dorl, James J Esq PROPOSAL37Onyama Limba
1031Ivar PaprockiFrance2026-05-04King, Christopher A Esq QUALIFIED59Asiya Javayant
1032Sinclair WaycottBrazil2026-04-26Buckley Miller Wright PROPOSAL57Asiya Javayant
1033Aruna FigeroaJapan2026-04-27Chapman, Ross E Esq NEGOTIATION65Bernardo Dominic
1034Jefferson SchemmerCanada2026-04-30Chanay, Jeffrey A Esq RENEWAL19Onyama Limba
1035Isabel BowleyUnited Kingdom2026-04-18Feiner Bros QUALIFIED24Amy Elsner
1036Claire TollnerRussia2026-05-02Commercial Press PROPOSAL74Stephen Shaw
1037Aditya KuskoAustralia2026-05-14King, Christopher A Esq NEW42Elwin Sharvill
1038Sinclair WaycottJapan2026-04-27Rousseaux, Michael Esq PROPOSAL4Elwin Sharvill
1039Faith GillianSpain2026-05-13Buckley Miller Wright UNQUALIFIED91Xuxue Feng
1040Arvin AlbaresSpain2026-04-21King, Christopher A Esq NEGOTIATION14Ivan Magalhaes
1041Leon OldroydRussia2026-04-16Rangoni Of Florence QUALIFIED40Amy Elsner
1042Kadeem FlosiAustralia2026-04-21Chemel, James L Cpa NEW75Onyama Limba
1043James ButtSpain2026-04-17Chapman, Ross E Esq NEGOTIATION83Xuxue Feng
1044Morrow RutaJapan2026-04-25Rousseaux, Michael Esq NEGOTIATION12Amy Elsner
1045Munro FerenczSpain2026-05-13Morlong Associates UNQUALIFIED16Bernardo Dominic
1046Darci PoquetteBrazil2026-05-08Printing Dimensions RENEWAL52Asiya Javayant
1047Darci PoquetteCanada2026-04-17Rousseaux, Michael Esq RENEWAL11Asiya Javayant
1048Arvin AlbaresUnited Kingdom2026-04-23Rangoni Of Florence UNQUALIFIED49Ioni Bowcher
1049Adams MorascaItaly2026-05-06Feltz Printing Service QUALIFIED75Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Aditya KuskoJapanAmy Elsner NEW
Faith GillianJapanAnna Fali NEGOTIATION
Mayumi KolmetzIndiaOnyama Limba RENEWAL
Ashley DoeIndiaStephen Shaw UNQUALIFIED
Emily WhobreyJapanIvan Magalhaes NEW
Antonio CaudyBrazilIoni Bowcher NEGOTIATION
Antonio CaudySpainXuxue Feng PROPOSAL
Maisha RulapaughIndiaAmy Elsner NEGOTIATION
Johnson SergiFranceIoni Bowcher NEGOTIATION
Kadeem FlosiSpainXuxue Feng UNQUALIFIED
Jones VocelkaCanadaOnyama Limba QUALIFIED
Silvio SlusarskiJapanAnna Fali PROPOSAL
Munro FerenczIndiaAmy Elsner PROPOSAL
Mujtaba NickaUnited KingdomElwin Sharvill RENEWAL
Aruna FigeroaAustraliaIvan Magalhaes NEGOTIATION
Octavia MaletIndiaOnyama Limba NEGOTIATION
Clifford RimCanadaAsiya Javayant QUALIFIED
Wickens NestleItalyOnyama Limba NEW
Smith GlickItalyBernardo Dominic UNQUALIFIED
Emily WhobreyUnited KingdomAnna Fali NEW
Salvatore StockhamAustraliaStephen Shaw RENEWAL
Rodrigues CampainRussiaOnyama Limba PROPOSAL
Greenwood BologniaBrazilXuxue Feng NEGOTIATION
Maisha RulapaughFranceAnna Fali RENEWAL
Ashley DoeUnited KingdomBernardo Dominic NEW
Jefferson SchemmerJapanIvan Magalhaes QUALIFIED
Leja CaldareraGermanyStephen Shaw PROPOSAL
Aika InouyeFranceOnyama Limba RENEWAL
James ButtJapanAsiya Javayant NEGOTIATION
Emily WhobreyBrazilAnna Fali NEW
Leja CaldareraBrazilAsiya Javayant QUALIFIED
Juan WieserAustraliaIvan Magalhaes UNQUALIFIED
Clifford RimSpainStephen Shaw RENEWAL
Clifford RimAustraliaXuxue Feng PROPOSAL
Johnson SergiUnited KingdomAnna Fali RENEWAL
David DarakjyCanadaElwin Sharvill UNQUALIFIED
Aditya KuskoSpainAsiya Javayant QUALIFIED
Clifford RimAustraliaAsiya Javayant NEW
Ivar PaprockiFranceBernardo Dominic NEW
Maria MarrierAustraliaIoni Bowcher RENEWAL
Aika InouyeFranceAsiya Javayant PROPOSAL
Mujtaba NickaBrazilStephen Shaw PROPOSAL
Sinclair WaycottBrazilAnna Fali RENEWAL
Wickens NestleFranceIvan Magalhaes NEW
Smith GlickGermanyIoni Bowcher PROPOSAL
Munro FerenczCanadaAsiya Javayant QUALIFIED
Ivar PaprockiSpainAnna Fali UNQUALIFIED
Julie StensethGermanyAmy Elsner RENEWAL
Salvatore StockhamItalyAmy Elsner NEW
Isabel BowleyIndiaBernardo Dominic PROPOSAL
Frozen Columns
Name
Greenwood Bolognia
Cody Saylors
Darci Poquette
Costa Dilliard
Nicolas Iturbide
Claire Tollner
Arvin Albares
Silvio Slusarski
Rodrigues Campain
Rodrigues Campain
Alejandro Perin
Leon Oldroyd
Izzy Garufi
Julie Stenseth
Aika Inouye
Munro Ferencz
Salvatore Stockham
Kaitlin Ostrosky
Julie Stenseth
Alejandro Perin
Adams Morasca
Maisha Rulapaugh
Smith Glick
Munro Ferencz
Octavia Malet
Chavez Briddick
Aika Inouye
Cody Saylors
Rodrigues Campain
Antonio Caudy
Leja Caldarera
Rodrigues Campain
Kaitlin Ostrosky
Ivar Paprocki
Ricardo Gaucho
Isabel Bowley
Ricardo Gaucho
James Butt
Arvin Albares
Maria Marrier
Emily Whobrey
Misaki Royster
Wickens Nestle
Maisha Rulapaugh
Aruna Figeroa
Smith Glick
James Butt
Francesco Shinko
Johnson Sergi
Johnson Sergi
IdCountryDate
1000Argentina2026-04-16
1001Brazil2026-04-24
1002Italy2026-04-30
1003Japan2026-05-05
1004Russia2026-04-20
1005Italy2026-05-06
1006Brazil2026-04-16
1007Canada2026-04-29
1008Japan2026-04-18
1009Canada2026-05-13
1010Russia2026-05-04
1011Japan2026-04-15
1012Australia2026-04-17
1013Brazil2026-04-27
1014India2026-04-25
1015Japan2026-04-16
1016Russia2026-04-17
1017Brazil2026-04-22
1018Spain2026-04-23
1019Italy2026-05-02
1020Argentina2026-05-05
1021United Kingdom2026-05-03
1022Brazil2026-05-09
1023Russia2026-04-16
1024United Kingdom2026-04-29
1025Argentina2026-04-17
1026Germany2026-05-01
1027Spain2026-05-13
1028Italy2026-04-25
1029Japan2026-04-25
1030United Kingdom2026-04-24
1031United Kingdom2026-05-09
1032Australia2026-04-17
1033Germany2026-05-07
1034France2026-04-25
1035Italy2026-04-19
1036India2026-04-29
1037Argentina2026-05-05
1038France2026-04-29
1039Germany2026-04-20
1040Russia2026-04-25
1041India2026-05-14
1042Russia2026-04-26
1043Italy2026-05-13
1044India2026-05-10
1045Spain2026-04-30
1046Argentina2026-05-07
1047Argentina2026-05-11
1048Canada2026-05-06
1049Germany2026-04-16

On-Demand Data

NameIdCountryDate
James Butt1000Brazil2026-05-12
Jones Vocelka1001France2026-05-04
Leja Caldarera1002Russia2026-05-04
Jefferson Schemmer1003Canada2026-04-25
Jennifer Amigon1004Brazil2026-04-21
Mujtaba Nicka1005Italy2026-04-17
Maisha Rulapaugh1006France2026-05-05
Rodrigues Campain1007United Kingdom2026-05-11
Aika Inouye1008France2026-05-06
Leja Caldarera1009India2026-05-04
Jones Vocelka1010Spain2026-05-10
Misaki Royster1011Australia2026-05-10
Morrow Ruta1012Japan2026-05-04
Leon Oldroyd1013India2026-04-28
Cody Saylors1014France2026-04-15
Wickens Nestle1015Japan2026-05-01
Johnson Sergi1016United Kingdom2026-04-16
Tony Foller1017Spain2026-04-27
Ashley Doe1018Brazil2026-04-16
Aditya Kusko1019Canada2026-05-09
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mujtaba NickaIndiaAmy Elsner QUALIFIED
Adams MorascaIndiaAmy Elsner UNQUALIFIED
Sinclair WaycottJapanBernardo Dominic NEGOTIATION
Julie StensethCanadaXuxue Feng RENEWAL
Nicolas IturbideJapanAsiya Javayant RENEWAL
Juan WieserGermanyIvan Magalhaes NEGOTIATION
Tony FollerSpainIvan Magalhaes NEW
Francesco ShinkoGermanyXuxue Feng QUALIFIED
Ricardo GauchoCanadaAmy Elsner PROPOSAL
Mujtaba NickaArgentinaIvan Magalhaes QUALIFIED
Maria MarrierRussiaStephen Shaw NEW
Jefferson SchemmerFranceIvan Magalhaes RENEWAL
Sinclair WaycottAustraliaIoni Bowcher UNQUALIFIED
Isabel BowleyIndiaIvan Magalhaes NEW
Antonio CaudyCanadaStephen Shaw UNQUALIFIED
Aika InouyeGermanyIoni Bowcher QUALIFIED
Leja CaldareraCanadaIoni Bowcher RENEWAL
Aditya KuskoRussiaXuxue Feng NEW
Silvio SlusarskiFranceIoni Bowcher NEGOTIATION
Aika InouyeFranceBernardo Dominic NEGOTIATION
James ButtIndiaXuxue Feng PROPOSAL
Chavez BriddickGermanyAnna Fali QUALIFIED
Izzy GarufiFranceAnna Fali RENEWAL
Tony FollerGermanyIoni Bowcher RENEWAL
Kadeem FlosiArgentinaIvan Magalhaes NEW
Stacey MacleadGermanyElwin Sharvill UNQUALIFIED
Alejandro PerinCanadaIoni Bowcher PROPOSAL
Clifford RimFranceAmy Elsner PROPOSAL
Salvatore StockhamRussiaOnyama Limba QUALIFIED
Darci PoquetteIndiaBernardo Dominic PROPOSAL
Jefferson SchemmerRussiaIvan Magalhaes PROPOSAL
Ivar PaprockiArgentinaAsiya Javayant UNQUALIFIED
Ivar PaprockiSpainStephen Shaw QUALIFIED
Aika InouyeAustraliaAnna Fali RENEWAL
James ButtSpainBernardo Dominic PROPOSAL
Izzy GarufiBrazilAnna Fali PROPOSAL
Sinclair WaycottUnited KingdomAmy Elsner QUALIFIED
Emily WhobreyCanadaBernardo Dominic NEGOTIATION
Salvatore StockhamFranceXuxue Feng NEGOTIATION
Deepesh ChuiJapanElwin Sharvill 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>