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
Jeanfrancois VenereCanadaIvan Magalhaes UNQUALIFIED
Morrow RutaGermanyAmy Elsner PROPOSAL
Cody SaylorsFranceElwin Sharvill QUALIFIED
Darci PoquetteUnited KingdomOnyama Limba QUALIFIED
Cody SaylorsJapanBernardo Dominic UNQUALIFIED
Johnson SergiSpainOnyama Limba UNQUALIFIED
Mujtaba NickaArgentinaAsiya Javayant RENEWAL
Arvin AlbaresSpainOnyama Limba PROPOSAL
Nicolas IturbideCanadaIvan Magalhaes QUALIFIED
Aditya KuskoArgentinaOnyama Limba UNQUALIFIED
Maria MarrierBrazilBernardo Dominic NEGOTIATION
Arvin AlbaresGermanyAmy Elsner NEGOTIATION
Johnson SergiArgentinaAmy Elsner PROPOSAL
Ivar PaprockiFranceBernardo Dominic NEGOTIATION
Sinclair WaycottJapanElwin Sharvill UNQUALIFIED
Claire TollnerRussiaBernardo Dominic RENEWAL
Maria MarrierJapanIvan Magalhaes QUALIFIED
Aika InouyeSpainStephen Shaw UNQUALIFIED
Aditya KuskoUnited KingdomOnyama Limba PROPOSAL
Arvin AlbaresCanadaOnyama Limba RENEWAL
Leja CaldareraRussiaAsiya Javayant RENEWAL
Mujtaba NickaUnited KingdomAmy Elsner RENEWAL
Nicolas IturbideRussiaBernardo Dominic RENEWAL
Deepesh ChuiFranceXuxue Feng UNQUALIFIED
Maisha RulapaughRussiaStephen Shaw NEW
Francesco ShinkoItalyXuxue Feng RENEWAL
Antonio CaudyAustraliaIoni Bowcher QUALIFIED
Maisha RulapaughJapanIvan Magalhaes QUALIFIED
Jennifer AmigonFranceAmy Elsner NEW
Kadeem FlosiIndiaOnyama Limba RENEWAL
Smith GlickIndiaAnna Fali NEW
Leja CaldareraAustraliaOnyama Limba UNQUALIFIED
Mujtaba NickaFranceBernardo Dominic QUALIFIED
Mujtaba NickaArgentinaElwin Sharvill UNQUALIFIED
Julie StensethJapanAmy Elsner QUALIFIED
Nicolas IturbideSpainAsiya Javayant QUALIFIED
Ashley DoeItalyStephen Shaw UNQUALIFIED
Aika InouyeRussiaXuxue Feng RENEWAL
James ButtFranceAnna Fali UNQUALIFIED
Wickens NestleSpainAsiya Javayant PROPOSAL
Claire TollnerUnited KingdomIoni Bowcher QUALIFIED
Clifford RimJapanAmy Elsner PROPOSAL
Wickens NestleRussiaAmy Elsner UNQUALIFIED
Antonio CaudyGermanyAmy Elsner QUALIFIED
Wickens NestleSpainAnna Fali QUALIFIED
Salvatore StockhamFranceIoni Bowcher QUALIFIED
David DarakjyArgentinaElwin Sharvill PROPOSAL
Chavez BriddickAustraliaAmy Elsner RENEWAL
Silvio SlusarskiCanadaElwin Sharvill PROPOSAL
Juan WieserAustraliaAmy Elsner PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Faith GillianAustraliaAmy Elsner NEW
Julie StensethArgentinaElwin Sharvill RENEWAL
Kaitlin OstroskyArgentinaIoni Bowcher QUALIFIED
Ricardo GauchoArgentinaAsiya Javayant NEW
Jennifer AmigonCanadaOnyama Limba NEGOTIATION
Morrow RutaGermanyIvan Magalhaes NEW
Jones VocelkaBrazilXuxue Feng QUALIFIED
Nicolas IturbideJapanXuxue Feng RENEWAL
Leon OldroydUnited KingdomXuxue Feng NEGOTIATION
Isabel BowleyBrazilXuxue Feng UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Costa DilliardBrazil2026-04-11Commercial Press NEW95Amy Elsner
1001Isabel BowleyIndia2026-04-05Chapman, Ross E Esq UNQUALIFIED10Amy Elsner
1002Jefferson SchemmerIndia2026-04-21Commercial Press NEW14Amy Elsner
1003Mayumi KolmetzFrance2026-04-04Chemel, James L Cpa PROPOSAL10Ivan Magalhaes
1004Salvatore StockhamCanada2026-03-31Morlong Associates PROPOSAL41Amy Elsner
1005Clifford RimUnited Kingdom2026-04-20Buckley Miller Wright QUALIFIED38Onyama Limba
1006Clifford RimArgentina2026-04-21Chapman, Ross E Esq QUALIFIED35Xuxue Feng
1007Mayumi KolmetzSpain2026-04-17Buckley Miller Wright UNQUALIFIED33Anna Fali
1008Arvin AlbaresUnited Kingdom2026-04-13Benton, John B Jr NEW7Amy Elsner
1009Costa DilliardBrazil2026-04-01Chemel, James L Cpa PROPOSAL46Anna Fali
1010Mujtaba NickaFrance2026-04-22King, Christopher A Esq NEW37Onyama Limba
1011Morrow RutaFrance2026-04-18Benton, John B Jr NEGOTIATION71Ivan Magalhaes
1012Octavia MaletAustralia2026-04-10Feiner Bros NEW49Onyama Limba
1013Aruna FigeroaJapan2026-04-07Truhlar And Truhlar Attys NEW26Elwin Sharvill
1014Aika InouyeCanada2026-04-16Chanay, Jeffrey A Esq NEGOTIATION23Xuxue Feng
1015Stacey MacleadCanada2026-04-21Benton, John B Jr RENEWAL53Stephen Shaw
1016Octavia MaletIndia2026-04-25Chapman, Ross E Esq NEGOTIATION76Ioni Bowcher
1017Murillo MaletJapan2026-04-17Feiner Bros RENEWAL84Onyama Limba
1018Leon OldroydUnited Kingdom2026-04-03Truhlar And Truhlar Attys RENEWAL72Bernardo Dominic
1019Darci PoquetteRussia2026-04-01Rangoni Of Florence UNQUALIFIED55Bernardo Dominic
1020Smith GlickItaly2026-04-06King, Christopher A Esq UNQUALIFIED80Asiya Javayant
1021Cody SaylorsArgentina2026-03-28Dorl, James J Esq PROPOSAL88Anna Fali
1022Francesco ShinkoUnited Kingdom2026-04-02Rousseaux, Michael Esq PROPOSAL13Anna Fali
1023Smith GlickCanada2026-04-12Rousseaux, Michael Esq QUALIFIED78Onyama Limba
1024Costa DilliardGermany2026-04-20Morlong Associates PROPOSAL78Ivan Magalhaes
1025David DarakjyCanada2026-04-09Morlong Associates NEW92Stephen Shaw
1026Emily WhobreyUnited Kingdom2026-04-21Feiner Bros UNQUALIFIED24Elwin Sharvill
1027Jefferson SchemmerArgentina2026-04-13Truhlar And Truhlar Attys UNQUALIFIED65Anna Fali
1028Costa DilliardItaly2026-04-24Dorl, James J Esq QUALIFIED12Amy Elsner
1029Clifford RimRussia2026-03-29Printing Dimensions RENEWAL92Ioni Bowcher
1030Faith GillianAustralia2026-04-15King, Christopher A Esq UNQUALIFIED32Stephen Shaw
1031Costa DilliardAustralia2026-04-24Feltz Printing Service QUALIFIED98Ioni Bowcher
1032Mayumi KolmetzGermany2026-04-14King, Christopher A Esq UNQUALIFIED20Ioni Bowcher
1033Aruna FigeroaJapan2026-04-16King, Christopher A Esq PROPOSAL27Ioni Bowcher
1034Leon OldroydArgentina2026-04-02Rangoni Of Florence NEGOTIATION72Xuxue Feng
1035Alejandro PerinItaly2026-04-06Benton, John B Jr QUALIFIED59Ivan Magalhaes
1036Munro FerenczAustralia2026-04-09Feiner Bros RENEWAL60Anna Fali
1037Costa DilliardRussia2026-04-19Truhlar And Truhlar Attys RENEWAL37Amy Elsner
1038David DarakjyItaly2026-03-30Buckley Miller Wright QUALIFIED15Asiya Javayant
1039Silvio SlusarskiCanada2026-04-05Truhlar And Truhlar Attys RENEWAL77Ivan Magalhaes
1040Antonio CaudyRussia2026-04-17Benton, John B Jr NEW72Ioni Bowcher
1041Octavia MaletJapan2026-04-25Chanay, Jeffrey A Esq UNQUALIFIED64Onyama Limba
1042Antonio CaudyAustralia2026-04-18Benton, John B Jr NEW78Xuxue Feng
1043Isabel BowleyCanada2026-03-27Buckley Miller Wright NEW50Xuxue Feng
1044Greenwood BologniaGermany2026-03-30Chapman, Ross E Esq RENEWAL57Amy Elsner
1045Jefferson SchemmerIndia2026-04-04Chapman, Ross E Esq QUALIFIED57Amy Elsner
1046Kadeem FlosiRussia2026-04-14Rousseaux, Michael Esq UNQUALIFIED18Stephen Shaw
1047Alejandro PerinSpain2026-04-09Commercial Press PROPOSAL93Bernardo Dominic
1048Ricardo GauchoBrazil2026-04-07Chapman, Ross E Esq UNQUALIFIED93Ivan Magalhaes
1049Juan WieserUnited Kingdom2026-04-20Truhlar And Truhlar Attys QUALIFIED67Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Greenwood BologniaGermanyIoni Bowcher UNQUALIFIED
Munro FerenczIndiaXuxue Feng NEW
Aruna FigeroaAustraliaElwin Sharvill QUALIFIED
Silvio SlusarskiBrazilBernardo Dominic NEW
Faith GillianSpainAnna Fali NEW
Salvatore StockhamSpainOnyama Limba NEW
Leon OldroydCanadaBernardo Dominic UNQUALIFIED
Adams MorascaUnited KingdomAsiya Javayant NEGOTIATION
Sinclair WaycottRussiaElwin Sharvill PROPOSAL
Jeanfrancois VenereJapanIvan Magalhaes UNQUALIFIED
Deepesh ChuiSpainAmy Elsner UNQUALIFIED
Johnson SergiItalyAmy Elsner NEW
Leja CaldareraFranceBernardo Dominic RENEWAL
Jefferson SchemmerSpainElwin Sharvill UNQUALIFIED
Arvin AlbaresFranceIvan Magalhaes NEGOTIATION
Chavez BriddickUnited KingdomIvan Magalhaes QUALIFIED
Munro FerenczArgentinaXuxue Feng NEW
Jefferson SchemmerItalyElwin Sharvill RENEWAL
Ricardo GauchoItalyStephen Shaw RENEWAL
Kaitlin OstroskyGermanyIvan Magalhaes UNQUALIFIED
Alejandro PerinSpainElwin Sharvill RENEWAL
Emily WhobreyJapanAnna Fali QUALIFIED
Murillo MaletCanadaAmy Elsner RENEWAL
Misaki RoysterFranceBernardo Dominic NEGOTIATION
Arvin AlbaresArgentinaIoni Bowcher UNQUALIFIED
Faith GillianAustraliaXuxue Feng UNQUALIFIED
Clifford RimAustraliaAsiya Javayant NEGOTIATION
Faith GillianJapanOnyama Limba UNQUALIFIED
Sinclair WaycottArgentinaAnna Fali QUALIFIED
Johnson SergiRussiaXuxue Feng NEGOTIATION
Stacey MacleadCanadaAmy Elsner UNQUALIFIED
Julie StensethRussiaIoni Bowcher NEW
Arvin AlbaresGermanyXuxue Feng UNQUALIFIED
Alejandro PerinJapanAsiya Javayant NEGOTIATION
Johnson SergiGermanyBernardo Dominic UNQUALIFIED
Isabel BowleyFranceAmy Elsner RENEWAL
Aditya KuskoUnited KingdomBernardo Dominic NEW
Cody SaylorsIndiaBernardo Dominic QUALIFIED
Maria MarrierAustraliaOnyama Limba NEW
Greenwood BologniaBrazilStephen Shaw UNQUALIFIED
David DarakjyIndiaAmy Elsner QUALIFIED
Cody SaylorsIndiaIoni Bowcher NEW
Antonio CaudyUnited KingdomAsiya Javayant RENEWAL
Jennifer AmigonCanadaAnna Fali QUALIFIED
Munro FerenczGermanyOnyama Limba QUALIFIED
Cody SaylorsJapanXuxue Feng NEW
Maisha RulapaughJapanOnyama Limba UNQUALIFIED
Nicolas IturbideJapanOnyama Limba NEW
Johnson SergiJapanStephen Shaw NEGOTIATION
David DarakjyGermanyAmy Elsner NEW
Frozen Columns
Name
Misaki Royster
Sinclair Waycott
Munro Ferencz
Murillo Malet
Julie Stenseth
Jones Vocelka
Wickens Nestle
Claire Tollner
James Butt
Munro Ferencz
Mayumi Kolmetz
Leon Oldroyd
Munro Ferencz
Claire Tollner
Morrow Ruta
Kadeem Flosi
Octavia Malet
Adams Morasca
David Darakjy
Leon Oldroyd
Sinclair Waycott
Jones Vocelka
Jeanfrancois Venere
Jones Vocelka
Aika Inouye
Deepesh Chui
Ashley Doe
Maria Marrier
James Butt
Maria Marrier
Kaitlin Ostrosky
Salvatore Stockham
Kaitlin Ostrosky
Alejandro Perin
Maria Marrier
Costa Dilliard
Stacey Maclead
Juan Wieser
Tony Foller
Arvin Albares
Salvatore Stockham
Clifford Rim
Salvatore Stockham
Ashley Doe
Sinclair Waycott
Jeanfrancois Venere
Salvatore Stockham
Deepesh Chui
Jefferson Schemmer
Nicolas Iturbide
IdCountryDate
1000India2026-03-29
1001Germany2026-04-07
1002Germany2026-03-27
1003Italy2026-04-24
1004Russia2026-04-15
1005United Kingdom2026-04-06
1006Italy2026-04-13
1007Canada2026-03-29
1008Germany2026-04-03
1009Italy2026-04-10
1010France2026-04-09
1011Brazil2026-04-20
1012Italy2026-04-14
1013Spain2026-04-04
1014Argentina2026-04-12
1015France2026-04-07
1016Australia2026-03-31
1017Brazil2026-04-15
1018Italy2026-04-09
1019Russia2026-04-18
1020Brazil2026-04-02
1021Australia2026-04-01
1022Brazil2026-03-30
1023Russia2026-04-21
1024India2026-04-12
1025India2026-03-29
1026India2026-04-16
1027France2026-03-27
1028Russia2026-04-20
1029Spain2026-04-04
1030Russia2026-04-21
1031Italy2026-03-31
1032Canada2026-04-04
1033Brazil2026-04-13
1034Canada2026-04-25
1035Canada2026-04-20
1036Argentina2026-03-29
1037Brazil2026-04-25
1038India2026-04-05
1039Australia2026-04-07
1040Brazil2026-04-01
1041Australia2026-04-04
1042Spain2026-03-30
1043Canada2026-04-10
1044Canada2026-04-02
1045Brazil2026-04-16
1046United Kingdom2026-04-20
1047India2026-04-21
1048Russia2026-04-19
1049Germany2026-04-03

On-Demand Data

NameIdCountryDate
Darci Poquette1000Spain2026-04-13
Salvatore Stockham1001India2026-04-07
Stacey Maclead1002France2026-04-04
Misaki Royster1003United Kingdom2026-04-07
Costa Dilliard1004Argentina2026-04-13
Emily Whobrey1005United Kingdom2026-04-13
Leja Caldarera1006United Kingdom2026-04-16
Morrow Ruta1007Spain2026-03-31
Cody Saylors1008Russia2026-04-01
Clifford Rim1009Russia2026-04-19
Alejandro Perin1010Spain2026-04-14
Salvatore Stockham1011France2026-04-15
Salvatore Stockham1012Japan2026-03-28
Juan Wieser1013India2026-04-08
Deepesh Chui1014Japan2026-04-06
Mayumi Kolmetz1015United Kingdom2026-04-17
Claire Tollner1016Canada2026-04-06
Juan Wieser1017Germany2026-04-13
Jeanfrancois Venere1018Brazil2026-04-12
Adams Morasca1019United Kingdom2026-04-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Francesco ShinkoGermanyIoni Bowcher RENEWAL
Juan WieserAustraliaAmy Elsner QUALIFIED
Claire TollnerCanadaElwin Sharvill NEW
Claire TollnerRussiaAnna Fali UNQUALIFIED
Isabel BowleyIndiaIoni Bowcher NEW
Deepesh ChuiSpainStephen Shaw PROPOSAL
Clifford RimGermanyIvan Magalhaes PROPOSAL
Jennifer AmigonJapanOnyama Limba QUALIFIED
Jefferson SchemmerUnited KingdomIoni Bowcher PROPOSAL
Leon OldroydItalyElwin Sharvill RENEWAL
Chavez BriddickFranceBernardo Dominic NEGOTIATION
Johnson SergiAustraliaIoni Bowcher UNQUALIFIED
Antonio CaudyItalyIoni Bowcher NEW
Rodrigues CampainCanadaAnna Fali UNQUALIFIED
Salvatore StockhamGermanyAmy Elsner RENEWAL
Greenwood BologniaUnited KingdomOnyama Limba PROPOSAL
Wickens NestleSpainIvan Magalhaes RENEWAL
Isabel BowleyAustraliaAmy Elsner QUALIFIED
Clifford RimArgentinaAnna Fali UNQUALIFIED
Stacey MacleadCanadaAsiya Javayant NEW
Emily WhobreyUnited KingdomAsiya Javayant NEW
Jefferson SchemmerUnited KingdomOnyama Limba RENEWAL
Tony FollerUnited KingdomElwin Sharvill UNQUALIFIED
Ivar PaprockiCanadaBernardo Dominic NEGOTIATION
Jefferson SchemmerJapanIvan Magalhaes NEGOTIATION
Munro FerenczArgentinaElwin Sharvill RENEWAL
Rodrigues CampainSpainBernardo Dominic NEGOTIATION
Stacey MacleadBrazilXuxue Feng RENEWAL
Mayumi KolmetzJapanAmy Elsner NEW
Juan WieserAustraliaAsiya Javayant PROPOSAL
Jefferson SchemmerBrazilAmy Elsner RENEWAL
Mujtaba NickaArgentinaStephen Shaw NEGOTIATION
Izzy GarufiBrazilAnna Fali RENEWAL
Deepesh ChuiSpainElwin Sharvill NEGOTIATION
Tony FollerFranceAmy Elsner QUALIFIED
Octavia MaletFranceElwin Sharvill NEGOTIATION
Mujtaba NickaCanadaOnyama Limba RENEWAL
Alejandro PerinRussiaIoni Bowcher UNQUALIFIED
Wickens NestleRussiaElwin Sharvill PROPOSAL
Johnson SergiAustraliaIoni Bowcher 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>