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
Clifford RimFranceBernardo Dominic QUALIFIED
Aruna FigeroaArgentinaBernardo Dominic RENEWAL
Greenwood BologniaAustraliaElwin Sharvill NEGOTIATION
Aditya KuskoItalyElwin Sharvill QUALIFIED
James ButtJapanOnyama Limba PROPOSAL
Wickens NestleUnited KingdomAmy Elsner QUALIFIED
Kaitlin OstroskyIndiaStephen Shaw RENEWAL
David DarakjyRussiaAmy Elsner NEW
Julie StensethBrazilOnyama Limba NEW
Jones VocelkaArgentinaIoni Bowcher NEW
James ButtJapanOnyama Limba PROPOSAL
Deepesh ChuiUnited KingdomElwin Sharvill PROPOSAL
Aruna FigeroaJapanIvan Magalhaes NEW
James ButtArgentinaIvan Magalhaes PROPOSAL
Ashley DoeUnited KingdomAnna Fali RENEWAL
Alejandro PerinBrazilAnna Fali PROPOSAL
Rodrigues CampainUnited KingdomAnna Fali NEW
Salvatore StockhamCanadaIoni Bowcher UNQUALIFIED
Aditya KuskoIndiaXuxue Feng RENEWAL
Alejandro PerinFranceOnyama Limba PROPOSAL
Jeanfrancois VenereUnited KingdomAmy Elsner RENEWAL
Stacey MacleadGermanyAsiya Javayant NEW
Antonio CaudyFranceAsiya Javayant RENEWAL
Adams MorascaFranceXuxue Feng NEW
James ButtIndiaXuxue Feng RENEWAL
Cody SaylorsGermanyXuxue Feng UNQUALIFIED
Rodrigues CampainRussiaAmy Elsner PROPOSAL
Antonio CaudyCanadaBernardo Dominic NEGOTIATION
James ButtBrazilXuxue Feng PROPOSAL
Kadeem FlosiUnited KingdomElwin Sharvill UNQUALIFIED
Aditya KuskoCanadaAnna Fali NEGOTIATION
Sinclair WaycottBrazilBernardo Dominic NEGOTIATION
Munro FerenczRussiaAmy Elsner RENEWAL
Maria MarrierSpainOnyama Limba RENEWAL
Johnson SergiArgentinaIvan Magalhaes NEW
Deepesh ChuiUnited KingdomElwin Sharvill NEW
Leon OldroydRussiaAnna Fali NEGOTIATION
Izzy GarufiAustraliaOnyama Limba PROPOSAL
Stacey MacleadIndiaBernardo Dominic UNQUALIFIED
Isabel BowleyCanadaBernardo Dominic PROPOSAL
Juan WieserBrazilElwin Sharvill RENEWAL
Murillo MaletSpainIoni Bowcher NEGOTIATION
Octavia MaletSpainAmy Elsner NEGOTIATION
Leon OldroydItalyStephen Shaw NEGOTIATION
Adams MorascaIndiaElwin Sharvill PROPOSAL
Jones VocelkaRussiaIvan Magalhaes NEGOTIATION
Jeanfrancois VenereFranceXuxue Feng NEGOTIATION
David DarakjyJapanAsiya Javayant NEW
Adams MorascaSpainOnyama Limba NEGOTIATION
Sinclair WaycottIndiaIvan Magalhaes UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Alejandro PerinBrazilXuxue Feng NEGOTIATION
Antonio CaudyBrazilStephen Shaw QUALIFIED
Tony FollerFranceIvan Magalhaes PROPOSAL
Aika InouyeIndiaStephen Shaw PROPOSAL
Adams MorascaItalyIvan Magalhaes PROPOSAL
Salvatore StockhamSpainIvan Magalhaes NEGOTIATION
Nicolas IturbideAustraliaXuxue Feng PROPOSAL
Sinclair WaycottRussiaBernardo Dominic NEGOTIATION
Aika InouyeAustraliaAmy Elsner UNQUALIFIED
Julie StensethSpainXuxue Feng UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio CaudyFrance2026-05-31Chanay, Jeffrey A Esq QUALIFIED23Anna Fali
1001Faith GillianFrance2026-06-11Benton, John B Jr UNQUALIFIED45Onyama Limba
1002Faith GillianUnited Kingdom2026-05-26Dorl, James J Esq NEGOTIATION39Asiya Javayant
1003Adams MorascaJapan2026-05-27King, Christopher A Esq QUALIFIED17Amy Elsner
1004Greenwood BologniaAustralia2026-05-30Printing Dimensions NEGOTIATION87Xuxue Feng
1005Chavez BriddickBrazil2026-05-15Buckley Miller Wright RENEWAL82Ivan Magalhaes
1006Maisha RulapaughIndia2026-06-06Chapman, Ross E Esq QUALIFIED59Ivan Magalhaes
1007Silvio SlusarskiCanada2026-06-03Chemel, James L Cpa PROPOSAL65Asiya Javayant
1008Izzy GarufiGermany2026-05-17Chemel, James L Cpa RENEWAL18Ioni Bowcher
1009Faith GillianCanada2026-06-04Feiner Bros QUALIFIED20Ioni Bowcher
1010Arvin AlbaresJapan2026-06-06Rousseaux, Michael Esq RENEWAL2Elwin Sharvill
1011Murillo MaletGermany2026-06-06Rousseaux, Michael Esq NEGOTIATION21Ivan Magalhaes
1012Sinclair WaycottIndia2026-06-08Chapman, Ross E Esq RENEWAL2Amy Elsner
1013Greenwood BologniaBrazil2026-06-13Rangoni Of Florence RENEWAL24Bernardo Dominic
1014Johnson SergiRussia2026-06-08Truhlar And Truhlar Attys PROPOSAL95Anna Fali
1015Aditya KuskoItaly2026-05-17Rangoni Of Florence UNQUALIFIED98Anna Fali
1016Sinclair WaycottFrance2026-06-02Feiner Bros QUALIFIED8Bernardo Dominic
1017Cody SaylorsSpain2026-06-09King, Christopher A Esq QUALIFIED26Ioni Bowcher
1018Kaitlin OstroskyItaly2026-05-24Feiner Bros NEGOTIATION78Asiya Javayant
1019Misaki RoysterCanada2026-06-06Printing Dimensions NEGOTIATION64Bernardo Dominic
1020Rodrigues CampainSpain2026-06-02Dorl, James J Esq NEW30Bernardo Dominic
1021Ivar PaprockiItaly2026-06-06Rangoni Of Florence RENEWAL72Xuxue Feng
1022Maisha RulapaughFrance2026-05-19Morlong Associates RENEWAL84Stephen Shaw
1023Kadeem FlosiArgentina2026-06-10Benton, John B Jr RENEWAL34Bernardo Dominic
1024Jones VocelkaItaly2026-05-29Commercial Press QUALIFIED79Anna Fali
1025Smith GlickAustralia2026-05-18Chanay, Jeffrey A Esq QUALIFIED62Ioni Bowcher
1026Aruna FigeroaJapan2026-06-10Feiner Bros NEW68Stephen Shaw
1027Octavia MaletRussia2026-06-10Commercial Press PROPOSAL27Ioni Bowcher
1028Julie StensethSpain2026-06-08Feiner Bros NEW10Ivan Magalhaes
1029Jones VocelkaIndia2026-06-05Buckley Miller Wright UNQUALIFIED29Asiya Javayant
1030Maisha RulapaughBrazil2026-06-13Feiner Bros RENEWAL51Stephen Shaw
1031Aika InouyeJapan2026-05-30Chemel, James L Cpa QUALIFIED7Onyama Limba
1032Aika InouyeUnited Kingdom2026-06-05Chanay, Jeffrey A Esq UNQUALIFIED97Onyama Limba
1033Leon OldroydRussia2026-06-04Benton, John B Jr RENEWAL8Stephen Shaw
1034Adams MorascaSpain2026-05-17Feltz Printing Service QUALIFIED21Ioni Bowcher
1035Clifford RimRussia2026-05-19Commercial Press NEW23Amy Elsner
1036Jeanfrancois VenereBrazil2026-06-03Chanay, Jeffrey A Esq QUALIFIED50Xuxue Feng
1037Salvatore StockhamRussia2026-05-18Chapman, Ross E Esq NEGOTIATION86Elwin Sharvill
1038Leja CaldareraBrazil2026-05-17Feiner Bros UNQUALIFIED15Anna Fali
1039Silvio SlusarskiUnited Kingdom2026-05-30Truhlar And Truhlar Attys NEW94Bernardo Dominic
1040Chavez BriddickGermany2026-06-11Commercial Press UNQUALIFIED10Xuxue Feng
1041David DarakjyFrance2026-06-10Rangoni Of Florence QUALIFIED43Ioni Bowcher
1042Maria MarrierFrance2026-05-26Truhlar And Truhlar Attys QUALIFIED22Ioni Bowcher
1043Francesco ShinkoFrance2026-06-03Chanay, Jeffrey A Esq QUALIFIED50Anna Fali
1044Morrow RutaRussia2026-06-13Printing Dimensions RENEWAL39Elwin Sharvill
1045Mayumi KolmetzJapan2026-06-04Benton, John B Jr RENEWAL94Bernardo Dominic
1046Cody SaylorsAustralia2026-06-02Feiner Bros QUALIFIED73Anna Fali
1047Jennifer AmigonGermany2026-05-26Chapman, Ross E Esq QUALIFIED26Asiya Javayant
1048Kadeem FlosiAustralia2026-05-30Rangoni Of Florence UNQUALIFIED90Asiya Javayant
1049Greenwood BologniaRussia2026-05-29Benton, John B Jr PROPOSAL8Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Izzy GarufiSpainOnyama Limba QUALIFIED
Munro FerenczArgentinaStephen Shaw RENEWAL
Jeanfrancois VenereIndiaAmy Elsner QUALIFIED
James ButtUnited KingdomAnna Fali NEW
Greenwood BologniaUnited KingdomBernardo Dominic UNQUALIFIED
Tony FollerUnited KingdomStephen Shaw UNQUALIFIED
Wickens NestleGermanyElwin Sharvill PROPOSAL
Costa DilliardBrazilXuxue Feng UNQUALIFIED
Mayumi KolmetzUnited KingdomIoni Bowcher UNQUALIFIED
Izzy GarufiBrazilAnna Fali QUALIFIED
Leon OldroydUnited KingdomAnna Fali PROPOSAL
Maria MarrierBrazilOnyama Limba UNQUALIFIED
Kaitlin OstroskyFranceAnna Fali NEW
James ButtCanadaOnyama Limba NEGOTIATION
Octavia MaletGermanyStephen Shaw UNQUALIFIED
Arvin AlbaresBrazilIoni Bowcher NEW
Nicolas IturbideRussiaIoni Bowcher NEW
Ricardo GauchoItalyElwin Sharvill NEGOTIATION
Mujtaba NickaBrazilXuxue Feng NEW
Darci PoquetteAustraliaAmy Elsner PROPOSAL
Sinclair WaycottJapanAsiya Javayant NEGOTIATION
Ashley DoeGermanyIvan Magalhaes NEW
Kadeem FlosiAustraliaAmy Elsner RENEWAL
Jennifer AmigonUnited KingdomAnna Fali UNQUALIFIED
Kadeem FlosiIndiaStephen Shaw NEW
Faith GillianIndiaElwin Sharvill NEW
Izzy GarufiFranceIoni Bowcher NEW
Izzy GarufiRussiaElwin Sharvill NEGOTIATION
Murillo MaletSpainXuxue Feng QUALIFIED
Wickens NestleSpainIvan Magalhaes NEW
Rodrigues CampainCanadaXuxue Feng RENEWAL
Isabel BowleyAustraliaAnna Fali NEGOTIATION
David DarakjyUnited KingdomElwin Sharvill NEGOTIATION
Munro FerenczJapanBernardo Dominic QUALIFIED
Izzy GarufiGermanyXuxue Feng PROPOSAL
Salvatore StockhamFranceOnyama Limba NEGOTIATION
Juan WieserArgentinaIoni Bowcher NEGOTIATION
Salvatore StockhamCanadaOnyama Limba QUALIFIED
Murillo MaletUnited KingdomStephen Shaw RENEWAL
Alejandro PerinRussiaStephen Shaw NEW
Leja CaldareraAustraliaAnna Fali UNQUALIFIED
Misaki RoysterIndiaXuxue Feng RENEWAL
Leja CaldareraJapanStephen Shaw NEW
Maisha RulapaughIndiaAnna Fali QUALIFIED
Leon OldroydUnited KingdomIoni Bowcher PROPOSAL
Ashley DoeAustraliaAsiya Javayant UNQUALIFIED
Kadeem FlosiBrazilAmy Elsner RENEWAL
Stacey MacleadGermanyStephen Shaw RENEWAL
Julie StensethIndiaStephen Shaw PROPOSAL
Aika InouyeCanadaElwin Sharvill RENEWAL
Frozen Columns
Name
Aruna Figeroa
Aika Inouye
Smith Glick
Ivar Paprocki
Kadeem Flosi
Emily Whobrey
Murillo Malet
Costa Dilliard
Greenwood Bolognia
Clifford Rim
Misaki Royster
Aditya Kusko
Kaitlin Ostrosky
Jefferson Schemmer
Sinclair Waycott
Jefferson Schemmer
Darci Poquette
Stacey Maclead
Morrow Ruta
Arvin Albares
Munro Ferencz
Faith Gillian
Silvio Slusarski
David Darakjy
Octavia Malet
Silvio Slusarski
Murillo Malet
Nicolas Iturbide
Aruna Figeroa
Ashley Doe
Murillo Malet
Leon Oldroyd
Leja Caldarera
Aditya Kusko
Emily Whobrey
Francesco Shinko
Wickens Nestle
Stacey Maclead
Costa Dilliard
James Butt
Aika Inouye
Maria Marrier
Jones Vocelka
Salvatore Stockham
Murillo Malet
Misaki Royster
Ricardo Gaucho
Arvin Albares
Arvin Albares
Mujtaba Nicka
IdCountryDate
1000Russia2026-05-16
1001Canada2026-05-24
1002Australia2026-05-26
1003France2026-06-03
1004India2026-06-03
1005Brazil2026-05-15
1006Germany2026-06-09
1007Japan2026-05-24
1008Japan2026-06-07
1009Canada2026-06-08
1010Brazil2026-05-22
1011Italy2026-05-22
1012India2026-06-07
1013Argentina2026-05-23
1014Germany2026-05-30
1015Germany2026-05-31
1016Russia2026-05-18
1017Australia2026-05-31
1018Argentina2026-05-28
1019Argentina2026-05-27
1020Germany2026-06-04
1021Japan2026-06-06
1022Russia2026-06-02
1023Germany2026-06-11
1024Germany2026-06-03
1025Italy2026-06-06
1026India2026-05-29
1027Italy2026-06-01
1028Italy2026-05-30
1029Brazil2026-05-30
1030France2026-06-04
1031Germany2026-06-09
1032Australia2026-06-13
1033Brazil2026-05-28
1034Argentina2026-05-17
1035India2026-05-20
1036France2026-06-04
1037Italy2026-06-03
1038Brazil2026-05-31
1039Australia2026-05-16
1040Canada2026-05-16
1041India2026-06-07
1042Italy2026-06-10
1043Italy2026-05-15
1044Canada2026-06-13
1045Australia2026-06-09
1046Canada2026-05-24
1047Australia2026-05-26
1048Australia2026-05-31
1049Brazil2026-06-09

On-Demand Data

NameIdCountryDate
Kaitlin Ostrosky1000Japan2026-05-18
Jeanfrancois Venere1001Spain2026-05-18
Emily Whobrey1002Brazil2026-05-30
Jeanfrancois Venere1003Russia2026-05-31
Octavia Malet1004Argentina2026-06-01
Isabel Bowley1005Brazil2026-05-24
Aditya Kusko1006Germany2026-06-11
Nicolas Iturbide1007India2026-06-06
Munro Ferencz1008Brazil2026-05-26
Johnson Sergi1009Canada2026-06-13
Leja Caldarera1010Germany2026-05-21
Aditya Kusko1011India2026-05-23
Munro Ferencz1012Australia2026-06-11
Chavez Briddick1013Japan2026-06-02
Wickens Nestle1014Italy2026-06-09
Cody Saylors1015France2026-05-30
Jeanfrancois Venere1016Argentina2026-05-16
Leja Caldarera1017Canada2026-05-29
Leja Caldarera1018India2026-06-13
Jones Vocelka1019Italy2026-05-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leja CaldareraUnited KingdomAmy Elsner NEGOTIATION
Leja CaldareraIndiaIvan Magalhaes QUALIFIED
Jones VocelkaCanadaAnna Fali NEGOTIATION
Maisha RulapaughItalyElwin Sharvill UNQUALIFIED
Isabel BowleySpainAnna Fali UNQUALIFIED
Greenwood BologniaGermanyBernardo Dominic PROPOSAL
Smith GlickAustraliaIvan Magalhaes UNQUALIFIED
Darci PoquetteBrazilAnna Fali PROPOSAL
Darci PoquetteSpainAnna Fali QUALIFIED
Alejandro PerinGermanyXuxue Feng NEW
Julie StensethGermanyStephen Shaw PROPOSAL
Izzy GarufiJapanAsiya Javayant RENEWAL
Jeanfrancois VenereItalyStephen Shaw NEGOTIATION
Leon OldroydBrazilIvan Magalhaes PROPOSAL
Emily WhobreyAustraliaBernardo Dominic PROPOSAL
Julie StensethSpainIvan Magalhaes RENEWAL
Ricardo GauchoCanadaStephen Shaw QUALIFIED
Tony FollerRussiaIvan Magalhaes NEGOTIATION
Aruna FigeroaBrazilElwin Sharvill QUALIFIED
Tony FollerArgentinaStephen Shaw QUALIFIED
Alejandro PerinIndiaAnna Fali NEGOTIATION
Izzy GarufiJapanBernardo Dominic QUALIFIED
Isabel BowleySpainAnna Fali UNQUALIFIED
Adams MorascaJapanAsiya Javayant QUALIFIED
Isabel BowleyJapanAmy Elsner QUALIFIED
Adams MorascaIndiaElwin Sharvill PROPOSAL
Leon OldroydFranceAmy Elsner RENEWAL
Munro FerenczCanadaBernardo Dominic UNQUALIFIED
Aditya KuskoAustraliaAnna Fali NEGOTIATION
Tony FollerAustraliaAmy Elsner RENEWAL
Misaki RoysterItalyIvan Magalhaes UNQUALIFIED
Wickens NestleJapanAnna Fali NEW
Arvin AlbaresCanadaIoni Bowcher NEGOTIATION
Emily WhobreyBrazilAmy Elsner RENEWAL
Stacey MacleadBrazilAmy Elsner PROPOSAL
Deepesh ChuiAustraliaIoni Bowcher RENEWAL
Murillo MaletBrazilOnyama Limba NEW
Francesco ShinkoJapanAmy Elsner RENEWAL
Aika InouyeArgentinaAsiya Javayant QUALIFIED
Isabel BowleyAustraliaBernardo Dominic NEGOTIATION

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