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
Darci PoquetteAustraliaOnyama Limba UNQUALIFIED
Munro FerenczArgentinaAsiya Javayant QUALIFIED
Adams MorascaFranceAsiya Javayant NEGOTIATION
Izzy GarufiFranceOnyama Limba UNQUALIFIED
Leja CaldareraCanadaIvan Magalhaes NEGOTIATION
Arvin AlbaresIndiaIvan Magalhaes RENEWAL
Adams MorascaAustraliaAnna Fali QUALIFIED
Murillo MaletJapanAmy Elsner PROPOSAL
Aditya KuskoBrazilBernardo Dominic PROPOSAL
Aditya KuskoBrazilAmy Elsner NEW
Antonio CaudyJapanAmy Elsner NEGOTIATION
Johnson SergiSpainXuxue Feng NEW
Leja CaldareraItalyIvan Magalhaes PROPOSAL
Leon OldroydSpainAsiya Javayant NEW
Darci PoquetteUnited KingdomAnna Fali NEGOTIATION
Jones VocelkaFranceElwin Sharvill NEGOTIATION
Mujtaba NickaGermanyStephen Shaw NEW
Juan WieserRussiaXuxue Feng NEW
Aika InouyeUnited KingdomAsiya Javayant QUALIFIED
Morrow RutaRussiaXuxue Feng PROPOSAL
Jennifer AmigonSpainBernardo Dominic QUALIFIED
Ricardo GauchoAustraliaXuxue Feng NEW
Juan WieserFranceOnyama Limba QUALIFIED
Mayumi KolmetzAustraliaStephen Shaw RENEWAL
Smith GlickItalyAsiya Javayant NEGOTIATION
Mayumi KolmetzFranceXuxue Feng RENEWAL
Leon OldroydBrazilElwin Sharvill UNQUALIFIED
Juan WieserGermanyIoni Bowcher NEGOTIATION
Mayumi KolmetzRussiaIoni Bowcher RENEWAL
Rodrigues CampainFranceElwin Sharvill NEW
Greenwood BologniaFranceBernardo Dominic NEGOTIATION
Morrow RutaJapanIoni Bowcher QUALIFIED
Munro FerenczBrazilStephen Shaw NEW
Johnson SergiUnited KingdomIvan Magalhaes PROPOSAL
Faith GillianIndiaStephen Shaw NEGOTIATION
Murillo MaletSpainAmy Elsner NEGOTIATION
Aruna FigeroaBrazilOnyama Limba NEW
Leon OldroydItalyIvan Magalhaes RENEWAL
Jefferson SchemmerGermanyXuxue Feng QUALIFIED
Sinclair WaycottJapanBernardo Dominic NEGOTIATION
Mayumi KolmetzRussiaElwin Sharvill NEW
Wickens NestleUnited KingdomAnna Fali QUALIFIED
Jones VocelkaSpainXuxue Feng QUALIFIED
Ivar PaprockiSpainOnyama Limba NEGOTIATION
Chavez BriddickIndiaAnna Fali PROPOSAL
Emily WhobreyIndiaElwin Sharvill NEW
Maria MarrierIndiaAsiya Javayant NEW
Munro FerenczCanadaAnna Fali UNQUALIFIED
Sinclair WaycottJapanStephen Shaw NEW
Ashley DoeItalyAsiya Javayant NEW
Horizontal
NameCountryRepresentativeStatus
Ashley DoeCanadaAmy Elsner UNQUALIFIED
Francesco ShinkoFranceOnyama Limba NEGOTIATION
Aika InouyeUnited KingdomIvan Magalhaes PROPOSAL
Jones VocelkaGermanyIoni Bowcher UNQUALIFIED
Jefferson SchemmerSpainIoni Bowcher NEW
Kadeem FlosiGermanyIvan Magalhaes QUALIFIED
Darci PoquetteRussiaAsiya Javayant NEW
Salvatore StockhamIndiaOnyama Limba QUALIFIED
Izzy GarufiAustraliaXuxue Feng QUALIFIED
Murillo MaletArgentinaAnna Fali NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Adams MorascaSpain2026-04-07Morlong Associates UNQUALIFIED44Asiya Javayant
1001Johnson SergiBrazil2026-04-04Printing Dimensions NEW3Asiya Javayant
1002Munro FerenczAustralia2026-04-26Chanay, Jeffrey A Esq UNQUALIFIED66Amy Elsner
1003Chavez BriddickFrance2026-04-12King, Christopher A Esq NEW88Stephen Shaw
1004Aika InouyeRussia2026-03-29Truhlar And Truhlar Attys UNQUALIFIED75Elwin Sharvill
1005Mayumi KolmetzSpain2026-04-22Printing Dimensions QUALIFIED56Ivan Magalhaes
1006Cody SaylorsFrance2026-04-06Printing Dimensions NEW47Xuxue Feng
1007Emily WhobreyGermany2026-04-10Chemel, James L Cpa RENEWAL20Anna Fali
1008Kadeem FlosiAustralia2026-04-02Printing Dimensions NEW21Elwin Sharvill
1009Deepesh ChuiIndia2026-04-17Chanay, Jeffrey A Esq RENEWAL59Stephen Shaw
1010James ButtJapan2026-04-01Commercial Press NEGOTIATION41Stephen Shaw
1011Arvin AlbaresCanada2026-03-31Commercial Press RENEWAL67Amy Elsner
1012Murillo MaletCanada2026-04-08Printing Dimensions RENEWAL7Bernardo Dominic
1013Ivar PaprockiJapan2026-04-14King, Christopher A Esq NEGOTIATION26Xuxue Feng
1014Maisha RulapaughBrazil2026-04-10Rousseaux, Michael Esq UNQUALIFIED98Asiya Javayant
1015Smith GlickArgentina2026-04-19Dorl, James J Esq PROPOSAL63Anna Fali
1016Tony FollerAustralia2026-04-05Buckley Miller Wright UNQUALIFIED59Asiya Javayant
1017Jefferson SchemmerArgentina2026-04-20Rangoni Of Florence RENEWAL77Bernardo Dominic
1018Chavez BriddickAustralia2026-03-29Rousseaux, Michael Esq RENEWAL97Anna Fali
1019Izzy GarufiCanada2026-04-16Printing Dimensions NEGOTIATION82Stephen Shaw
1020Aditya KuskoCanada2026-04-06Printing Dimensions NEGOTIATION84Amy Elsner
1021Murillo MaletIndia2026-04-24Commercial Press QUALIFIED39Ivan Magalhaes
1022Costa DilliardIndia2026-04-22Dorl, James J Esq RENEWAL89Ioni Bowcher
1023James ButtGermany2026-04-05King, Christopher A Esq NEW63Ioni Bowcher
1024Isabel BowleyJapan2026-03-28King, Christopher A Esq QUALIFIED27Ioni Bowcher
1025David DarakjyIndia2026-04-14Dorl, James J Esq RENEWAL61Ivan Magalhaes
1026Greenwood BologniaItaly2026-04-23Dorl, James J Esq UNQUALIFIED53Elwin Sharvill
1027Misaki RoysterAustralia2026-03-31Feltz Printing Service RENEWAL28Onyama Limba
1028Maisha RulapaughItaly2026-04-05Rousseaux, Michael Esq NEW44Stephen Shaw
1029Wickens NestleFrance2026-04-09Buckley Miller Wright QUALIFIED11Stephen Shaw
1030Aruna FigeroaRussia2026-04-14Benton, John B Jr RENEWAL73Anna Fali
1031Silvio SlusarskiRussia2026-03-30Printing Dimensions PROPOSAL44Asiya Javayant
1032Clifford RimIndia2026-04-05Chapman, Ross E Esq PROPOSAL52Anna Fali
1033Maria MarrierGermany2026-04-25Chemel, James L Cpa NEW77Onyama Limba
1034Francesco ShinkoRussia2026-04-24King, Christopher A Esq RENEWAL61Ivan Magalhaes
1035Jeanfrancois VenereIndia2026-04-24Truhlar And Truhlar Attys PROPOSAL35Xuxue Feng
1036Francesco ShinkoBrazil2026-04-01Chapman, Ross E Esq UNQUALIFIED83Ivan Magalhaes
1037Mujtaba NickaUnited Kingdom2026-04-26Chapman, Ross E Esq PROPOSAL88Elwin Sharvill
1038Ivar PaprockiRussia2026-04-19Chanay, Jeffrey A Esq UNQUALIFIED35Bernardo Dominic
1039Smith GlickFrance2026-04-07Chemel, James L Cpa PROPOSAL86Ioni Bowcher
1040Juan WieserAustralia2026-03-31Rousseaux, Michael Esq QUALIFIED93Ivan Magalhaes
1041Maisha RulapaughGermany2026-04-26Chapman, Ross E Esq NEW55Elwin Sharvill
1042Kadeem FlosiGermany2026-03-29Morlong Associates NEW54Onyama Limba
1043Chavez BriddickSpain2026-04-19Rousseaux, Michael Esq UNQUALIFIED65Onyama Limba
1044Adams MorascaCanada2026-04-17Feiner Bros NEGOTIATION83Stephen Shaw
1045David DarakjyAustralia2026-04-01Chanay, Jeffrey A Esq UNQUALIFIED37Amy Elsner
1046Cody SaylorsFrance2026-04-25Buckley Miller Wright RENEWAL8Bernardo Dominic
1047Julie StensethIndia2026-04-01Dorl, James J Esq NEGOTIATION22Asiya Javayant
1048Aditya KuskoUnited Kingdom2026-04-24Feltz Printing Service RENEWAL38Ivan Magalhaes
1049Sinclair WaycottItaly2026-04-02Commercial Press RENEWAL92Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Sinclair WaycottJapanIoni Bowcher RENEWAL
Adams MorascaBrazilXuxue Feng UNQUALIFIED
David DarakjyJapanXuxue Feng UNQUALIFIED
Murillo MaletItalyIoni Bowcher NEGOTIATION
Misaki RoysterAustraliaAsiya Javayant NEGOTIATION
Darci PoquetteArgentinaBernardo Dominic QUALIFIED
Francesco ShinkoRussiaElwin Sharvill NEW
Leon OldroydJapanXuxue Feng NEW
James ButtGermanyOnyama Limba QUALIFIED
Leon OldroydJapanIoni Bowcher RENEWAL
Costa DilliardBrazilAsiya Javayant NEW
Antonio CaudyJapanStephen Shaw PROPOSAL
Smith GlickGermanyBernardo Dominic UNQUALIFIED
Nicolas IturbideCanadaXuxue Feng NEW
Aika InouyeGermanyElwin Sharvill PROPOSAL
Aika InouyeArgentinaElwin Sharvill QUALIFIED
Jennifer AmigonBrazilStephen Shaw PROPOSAL
Aruna FigeroaGermanyAmy Elsner NEW
Octavia MaletItalyAnna Fali NEW
Claire TollnerIndiaElwin Sharvill NEGOTIATION
Silvio SlusarskiJapanXuxue Feng UNQUALIFIED
Murillo MaletJapanAnna Fali NEGOTIATION
Emily WhobreyBrazilIvan Magalhaes RENEWAL
Antonio CaudyBrazilAnna Fali UNQUALIFIED
Adams MorascaSpainAnna Fali PROPOSAL
Stacey MacleadCanadaBernardo Dominic NEGOTIATION
Smith GlickRussiaElwin Sharvill NEW
Aika InouyeBrazilAsiya Javayant PROPOSAL
Misaki RoysterSpainAsiya Javayant UNQUALIFIED
Mujtaba NickaJapanOnyama Limba RENEWAL
Tony FollerGermanyOnyama Limba UNQUALIFIED
Wickens NestleBrazilAsiya Javayant NEW
Julie StensethSpainAsiya Javayant RENEWAL
Leja CaldareraBrazilStephen Shaw NEGOTIATION
Izzy GarufiItalyAnna Fali QUALIFIED
Kadeem FlosiAustraliaAsiya Javayant UNQUALIFIED
Deepesh ChuiArgentinaAnna Fali NEGOTIATION
Ivar PaprockiRussiaIvan Magalhaes NEW
Jones VocelkaItalyIoni Bowcher PROPOSAL
Morrow RutaItalyXuxue Feng NEW
Isabel BowleyArgentinaAnna Fali NEGOTIATION
Morrow RutaJapanAnna Fali PROPOSAL
Jeanfrancois VenereArgentinaElwin Sharvill NEGOTIATION
Wickens NestleArgentinaIvan Magalhaes QUALIFIED
Leja CaldareraJapanXuxue Feng NEGOTIATION
Adams MorascaBrazilIoni Bowcher PROPOSAL
Jefferson SchemmerArgentinaAmy Elsner UNQUALIFIED
Ricardo GauchoArgentinaIvan Magalhaes NEW
Nicolas IturbideAustraliaAmy Elsner NEGOTIATION
Wickens NestleCanadaXuxue Feng PROPOSAL
Frozen Columns
Name
Jefferson Schemmer
Jennifer Amigon
Kaitlin Ostrosky
Tony Foller
Emily Whobrey
Leja Caldarera
Maria Marrier
Ricardo Gaucho
Stacey Maclead
Leja Caldarera
Alejandro Perin
Aditya Kusko
Maisha Rulapaugh
Antonio Caudy
Clifford Rim
Leon Oldroyd
Ricardo Gaucho
Faith Gillian
Claire Tollner
Isabel Bowley
Aruna Figeroa
Salvatore Stockham
Nicolas Iturbide
Mayumi Kolmetz
Leon Oldroyd
David Darakjy
Wickens Nestle
Jefferson Schemmer
Ashley Doe
Cody Saylors
Leja Caldarera
Kaitlin Ostrosky
Mayumi Kolmetz
Greenwood Bolognia
Maria Marrier
Sinclair Waycott
Julie Stenseth
Adams Morasca
Kaitlin Ostrosky
Silvio Slusarski
Izzy Garufi
Izzy Garufi
Jennifer Amigon
Faith Gillian
Chavez Briddick
Morrow Ruta
Alejandro Perin
Leja Caldarera
Faith Gillian
Mayumi Kolmetz
IdCountryDate
1000Spain2026-03-31
1001Brazil2026-04-09
1002India2026-04-09
1003United Kingdom2026-04-10
1004United Kingdom2026-04-14
1005Canada2026-03-28
1006India2026-04-24
1007France2026-04-01
1008Brazil2026-04-24
1009Japan2026-04-02
1010United Kingdom2026-03-31
1011Italy2026-04-21
1012Russia2026-04-02
1013Spain2026-04-12
1014Japan2026-04-17
1015Spain2026-04-07
1016Brazil2026-04-19
1017United Kingdom2026-04-16
1018Italy2026-04-18
1019Spain2026-04-15
1020Japan2026-04-04
1021France2026-04-14
1022Russia2026-03-29
1023Japan2026-03-30
1024Germany2026-04-02
1025Argentina2026-04-23
1026United Kingdom2026-04-21
1027Argentina2026-04-10
1028Germany2026-04-19
1029Germany2026-04-13
1030Brazil2026-04-14
1031Canada2026-04-20
1032Argentina2026-04-23
1033Brazil2026-03-30
1034Italy2026-04-02
1035Canada2026-04-08
1036Russia2026-03-29
1037Italy2026-04-26
1038Argentina2026-04-04
1039Japan2026-04-17
1040United Kingdom2026-03-29
1041Japan2026-04-07
1042Australia2026-04-12
1043Italy2026-04-20
1044France2026-04-06
1045Argentina2026-04-08
1046India2026-03-29
1047United Kingdom2026-04-21
1048Italy2026-04-15
1049United Kingdom2026-04-14

On-Demand Data

NameIdCountryDate
Antonio Caudy1000Argentina2026-04-17
Tony Foller1001Russia2026-04-05
Kaitlin Ostrosky1002Canada2026-04-25
Faith Gillian1003Australia2026-04-06
Ashley Doe1004Argentina2026-04-16
Emily Whobrey1005Canada2026-03-28
Clifford Rim1006Russia2026-04-08
Julie Stenseth1007Argentina2026-04-21
Maisha Rulapaugh1008Russia2026-04-25
Misaki Royster1009United Kingdom2026-03-31
Mujtaba Nicka1010Italy2026-04-03
Maria Marrier1011India2026-04-22
Leja Caldarera1012Argentina2026-04-08
Maisha Rulapaugh1013India2026-04-13
Murillo Malet1014Brazil2026-04-23
Aditya Kusko1015France2026-04-22
Maisha Rulapaugh1016Australia2026-03-30
James Butt1017India2026-04-22
Greenwood Bolognia1018Spain2026-04-04
David Darakjy1019Spain2026-03-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Adams MorascaUnited KingdomStephen Shaw NEGOTIATION
Julie StensethRussiaAsiya Javayant NEW
Juan WieserArgentinaAsiya Javayant PROPOSAL
Leja CaldareraItalyStephen Shaw PROPOSAL
Leon OldroydGermanyAnna Fali UNQUALIFIED
Cody SaylorsArgentinaStephen Shaw NEW
Jeanfrancois VenereBrazilIoni Bowcher RENEWAL
Nicolas IturbideFranceIvan Magalhaes PROPOSAL
Claire TollnerJapanAnna Fali PROPOSAL
Juan WieserGermanyIoni Bowcher QUALIFIED
Costa DilliardUnited KingdomAsiya Javayant NEGOTIATION
Aditya KuskoBrazilIoni Bowcher NEGOTIATION
Tony FollerFranceAnna Fali NEW
Faith GillianGermanyElwin Sharvill NEGOTIATION
Alejandro PerinRussiaIoni Bowcher QUALIFIED
Aika InouyeArgentinaElwin Sharvill PROPOSAL
Alejandro PerinSpainElwin Sharvill NEW
Jefferson SchemmerBrazilStephen Shaw RENEWAL
Leon OldroydArgentinaIvan Magalhaes NEGOTIATION
Izzy GarufiJapanAmy Elsner RENEWAL
Rodrigues CampainGermanyBernardo Dominic RENEWAL
Jefferson SchemmerItalyXuxue Feng PROPOSAL
Ivar PaprockiSpainXuxue Feng PROPOSAL
Murillo MaletCanadaAnna Fali QUALIFIED
Octavia MaletBrazilElwin Sharvill NEW
David DarakjyAustraliaStephen Shaw UNQUALIFIED
Isabel BowleyJapanOnyama Limba UNQUALIFIED
Francesco ShinkoBrazilAnna Fali RENEWAL
Kaitlin OstroskyRussiaBernardo Dominic NEGOTIATION
Antonio CaudyArgentinaXuxue Feng UNQUALIFIED
Adams MorascaIndiaIoni Bowcher NEW
Jeanfrancois VenereIndiaAsiya Javayant RENEWAL
Isabel BowleyCanadaAmy Elsner NEGOTIATION
Wickens NestleGermanyOnyama Limba UNQUALIFIED
Costa DilliardGermanyAsiya Javayant UNQUALIFIED
Leja CaldareraBrazilAmy Elsner PROPOSAL
Faith GillianAustraliaIvan Magalhaes PROPOSAL
Isabel BowleyCanadaIoni Bowcher QUALIFIED
Maisha RulapaughGermanyIoni Bowcher UNQUALIFIED
Izzy GarufiRussiaAmy Elsner 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>