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
Julie StensethJapanAnna Fali PROPOSAL
James ButtFranceAsiya Javayant PROPOSAL
Antonio CaudyItalyOnyama Limba UNQUALIFIED
Smith GlickUnited KingdomXuxue Feng PROPOSAL
Kaitlin OstroskyGermanyBernardo Dominic PROPOSAL
Clifford RimGermanyAnna Fali QUALIFIED
Izzy GarufiRussiaAsiya Javayant QUALIFIED
Morrow RutaFranceOnyama Limba UNQUALIFIED
Mujtaba NickaItalyAmy Elsner RENEWAL
David DarakjySpainAnna Fali NEW
Antonio CaudyIndiaAnna Fali RENEWAL
Isabel BowleyArgentinaIvan Magalhaes PROPOSAL
James ButtGermanyBernardo Dominic NEW
Kadeem FlosiAustraliaAnna Fali UNQUALIFIED
Aika InouyeIndiaAnna Fali NEGOTIATION
Alejandro PerinJapanXuxue Feng NEGOTIATION
Ashley DoeArgentinaAsiya Javayant UNQUALIFIED
Costa DilliardFranceAsiya Javayant RENEWAL
Arvin AlbaresBrazilIvan Magalhaes PROPOSAL
Leon OldroydArgentinaAnna Fali RENEWAL
Izzy GarufiJapanOnyama Limba PROPOSAL
Costa DilliardFranceElwin Sharvill PROPOSAL
Ricardo GauchoFranceAnna Fali RENEWAL
Izzy GarufiAustraliaAsiya Javayant UNQUALIFIED
Chavez BriddickCanadaElwin Sharvill NEGOTIATION
Adams MorascaCanadaXuxue Feng NEW
Johnson SergiArgentinaElwin Sharvill RENEWAL
Isabel BowleyCanadaBernardo Dominic QUALIFIED
Claire TollnerJapanAnna Fali UNQUALIFIED
Rodrigues CampainFranceIvan Magalhaes NEW
Jennifer AmigonSpainIvan Magalhaes QUALIFIED
Izzy GarufiGermanyAmy Elsner RENEWAL
Aika InouyeUnited KingdomIvan Magalhaes RENEWAL
Tony FollerItalyXuxue Feng QUALIFIED
Julie StensethGermanyXuxue Feng RENEWAL
Mayumi KolmetzJapanXuxue Feng UNQUALIFIED
Morrow RutaCanadaBernardo Dominic RENEWAL
Jones VocelkaUnited KingdomIvan Magalhaes UNQUALIFIED
Jefferson SchemmerBrazilAsiya Javayant QUALIFIED
Claire TollnerItalyBernardo Dominic QUALIFIED
Stacey MacleadAustraliaIoni Bowcher NEW
Sinclair WaycottSpainElwin Sharvill NEGOTIATION
Maisha RulapaughCanadaBernardo Dominic PROPOSAL
Ashley DoeUnited KingdomIvan Magalhaes PROPOSAL
Munro FerenczJapanXuxue Feng PROPOSAL
Antonio CaudyUnited KingdomAsiya Javayant QUALIFIED
Maria MarrierCanadaIvan Magalhaes NEW
Wickens NestleArgentinaXuxue Feng QUALIFIED
Antonio CaudyCanadaAnna Fali PROPOSAL
Salvatore StockhamArgentinaIvan Magalhaes NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Kaitlin OstroskyJapanAsiya Javayant UNQUALIFIED
Cody SaylorsRussiaAnna Fali NEW
Jennifer AmigonJapanXuxue Feng PROPOSAL
Sinclair WaycottUnited KingdomBernardo Dominic RENEWAL
Deepesh ChuiBrazilIvan Magalhaes RENEWAL
Silvio SlusarskiAustraliaBernardo Dominic NEW
Izzy GarufiIndiaBernardo Dominic PROPOSAL
Chavez BriddickCanadaXuxue Feng QUALIFIED
Leja CaldareraSpainOnyama Limba QUALIFIED
Nicolas IturbideArgentinaAmy Elsner UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Isabel BowleyAustralia2026-04-23Rangoni Of Florence NEGOTIATION52Elwin Sharvill
1001Nicolas IturbideIndia2026-05-01Chanay, Jeffrey A Esq UNQUALIFIED81Anna Fali
1002Jeanfrancois VenereRussia2026-04-13Buckley Miller Wright UNQUALIFIED30Xuxue Feng
1003Silvio SlusarskiAustralia2026-04-24Morlong Associates QUALIFIED60Asiya Javayant
1004Nicolas IturbideCanada2026-05-10Commercial Press QUALIFIED88Stephen Shaw
1005Chavez BriddickSpain2026-05-07Morlong Associates RENEWAL41Amy Elsner
1006Kaitlin OstroskyRussia2026-04-17Dorl, James J Esq NEGOTIATION27Stephen Shaw
1007Misaki RoysterItaly2026-05-02Dorl, James J Esq RENEWAL30Bernardo Dominic
1008Maisha RulapaughGermany2026-05-05King, Christopher A Esq PROPOSAL75Ioni Bowcher
1009Kadeem FlosiSpain2026-04-28King, Christopher A Esq PROPOSAL29Asiya Javayant
1010Wickens NestleCanada2026-05-04Dorl, James J Esq UNQUALIFIED0Xuxue Feng
1011Rodrigues CampainSpain2026-05-05Truhlar And Truhlar Attys QUALIFIED41Elwin Sharvill
1012Stacey MacleadBrazil2026-04-29King, Christopher A Esq NEGOTIATION49Elwin Sharvill
1013Chavez BriddickItaly2026-04-12Truhlar And Truhlar Attys NEW20Ioni Bowcher
1014Stacey MacleadFrance2026-04-17Chanay, Jeffrey A Esq QUALIFIED2Stephen Shaw
1015Jennifer AmigonArgentina2026-05-02Feiner Bros PROPOSAL44Elwin Sharvill
1016Silvio SlusarskiBrazil2026-05-01Rangoni Of Florence UNQUALIFIED34Ioni Bowcher
1017Antonio CaudyCanada2026-04-23Benton, John B Jr RENEWAL4Asiya Javayant
1018Misaki RoysterUnited Kingdom2026-04-12Feiner Bros QUALIFIED55Stephen Shaw
1019Tony FollerIndia2026-05-01Chemel, James L Cpa PROPOSAL9Stephen Shaw
1020Murillo MaletUnited Kingdom2026-04-14Chanay, Jeffrey A Esq PROPOSAL42Amy Elsner
1021Leja CaldareraItaly2026-04-12Feltz Printing Service NEW35Bernardo Dominic
1022Wickens NestleItaly2026-05-04Dorl, James J Esq PROPOSAL80Stephen Shaw
1023Arvin AlbaresJapan2026-05-06Feiner Bros PROPOSAL39Elwin Sharvill
1024Octavia MaletRussia2026-04-21Rangoni Of Florence PROPOSAL61Anna Fali
1025Leon OldroydItaly2026-05-02Chanay, Jeffrey A Esq UNQUALIFIED66Stephen Shaw
1026Leon OldroydArgentina2026-05-04Chanay, Jeffrey A Esq UNQUALIFIED67Amy Elsner
1027Jeanfrancois VenereCanada2026-05-10Rousseaux, Michael Esq NEGOTIATION28Anna Fali
1028Aika InouyeUnited Kingdom2026-05-10Morlong Associates NEW76Anna Fali
1029Octavia MaletBrazil2026-04-27Benton, John B Jr NEGOTIATION53Bernardo Dominic
1030Maria MarrierItaly2026-04-27Chapman, Ross E Esq NEGOTIATION22Stephen Shaw
1031Misaki RoysterFrance2026-05-10Feiner Bros UNQUALIFIED39Ivan Magalhaes
1032Antonio CaudyCanada2026-04-20Rangoni Of Florence PROPOSAL22Asiya Javayant
1033Juan WieserBrazil2026-04-22Chanay, Jeffrey A Esq PROPOSAL25Anna Fali
1034Ivar PaprockiGermany2026-04-17Dorl, James J Esq PROPOSAL78Asiya Javayant
1035Kaitlin OstroskyIndia2026-04-28Benton, John B Jr RENEWAL41Amy Elsner
1036Mujtaba NickaIndia2026-05-03Chanay, Jeffrey A Esq UNQUALIFIED15Anna Fali
1037Cody SaylorsRussia2026-05-10Dorl, James J Esq RENEWAL73Stephen Shaw
1038Francesco ShinkoRussia2026-04-26Chapman, Ross E Esq PROPOSAL41Stephen Shaw
1039Adams MorascaGermany2026-05-09Rangoni Of Florence QUALIFIED21Stephen Shaw
1040Jeanfrancois VenereGermany2026-05-10Printing Dimensions PROPOSAL60Amy Elsner
1041Ivar PaprockiFrance2026-05-09Dorl, James J Esq PROPOSAL38Ivan Magalhaes
1042Juan WieserGermany2026-04-14Chanay, Jeffrey A Esq QUALIFIED42Anna Fali
1043Adams MorascaIndia2026-05-08Morlong Associates RENEWAL43Asiya Javayant
1044Izzy GarufiRussia2026-05-01Dorl, James J Esq PROPOSAL75Xuxue Feng
1045Emily WhobreySpain2026-05-07Printing Dimensions RENEWAL18Stephen Shaw
1046Ricardo GauchoCanada2026-05-01Truhlar And Truhlar Attys QUALIFIED2Asiya Javayant
1047Wickens NestleAustralia2026-05-03Rangoni Of Florence QUALIFIED46Stephen Shaw
1048Ashley DoeUnited Kingdom2026-04-17Feltz Printing Service NEGOTIATION69Xuxue Feng
1049Chavez BriddickIndia2026-04-17Rousseaux, Michael Esq PROPOSAL54Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Juan WieserFranceOnyama Limba RENEWAL
Mujtaba NickaAustraliaElwin Sharvill PROPOSAL
Greenwood BologniaCanadaIvan Magalhaes NEW
Ricardo GauchoFranceXuxue Feng RENEWAL
Leon OldroydItalyAmy Elsner NEGOTIATION
Francesco ShinkoIndiaAmy Elsner NEW
Ivar PaprockiJapanAmy Elsner QUALIFIED
Julie StensethCanadaStephen Shaw QUALIFIED
Ashley DoeJapanAsiya Javayant UNQUALIFIED
Antonio CaudyJapanOnyama Limba PROPOSAL
Aditya KuskoIndiaIvan Magalhaes UNQUALIFIED
Wickens NestleAustraliaOnyama Limba NEW
Leon OldroydAustraliaAsiya Javayant UNQUALIFIED
Jeanfrancois VenereItalyAnna Fali QUALIFIED
Isabel BowleyJapanBernardo Dominic PROPOSAL
Tony FollerAustraliaXuxue Feng PROPOSAL
Juan WieserIndiaIoni Bowcher RENEWAL
Murillo MaletRussiaXuxue Feng NEW
Smith GlickGermanyIoni Bowcher QUALIFIED
Arvin AlbaresUnited KingdomIvan Magalhaes NEGOTIATION
Aditya KuskoArgentinaXuxue Feng RENEWAL
Silvio SlusarskiIndiaStephen Shaw QUALIFIED
Mayumi KolmetzUnited KingdomXuxue Feng QUALIFIED
Rodrigues CampainCanadaXuxue Feng PROPOSAL
Jeanfrancois VenereIndiaBernardo Dominic RENEWAL
Leon OldroydBrazilXuxue Feng NEW
Chavez BriddickSpainAsiya Javayant RENEWAL
Cody SaylorsBrazilElwin Sharvill PROPOSAL
Ivar PaprockiArgentinaAsiya Javayant QUALIFIED
Nicolas IturbideSpainBernardo Dominic PROPOSAL
Munro FerenczFranceIvan Magalhaes NEW
Smith GlickAustraliaElwin Sharvill PROPOSAL
Isabel BowleyAustraliaAmy Elsner RENEWAL
Julie StensethItalyIoni Bowcher NEGOTIATION
Aruna FigeroaSpainXuxue Feng QUALIFIED
Chavez BriddickItalyStephen Shaw NEW
Antonio CaudyAustraliaIvan Magalhaes NEW
Smith GlickFranceElwin Sharvill PROPOSAL
Deepesh ChuiCanadaAsiya Javayant NEGOTIATION
Ashley DoeGermanyElwin Sharvill UNQUALIFIED
Maria MarrierItalyBernardo Dominic NEW
Ivar PaprockiFranceXuxue Feng UNQUALIFIED
Francesco ShinkoUnited KingdomBernardo Dominic QUALIFIED
Kaitlin OstroskyAustraliaAmy Elsner QUALIFIED
Sinclair WaycottSpainAsiya Javayant RENEWAL
Maria MarrierRussiaElwin Sharvill PROPOSAL
Misaki RoysterUnited KingdomBernardo Dominic NEGOTIATION
Stacey MacleadUnited KingdomStephen Shaw PROPOSAL
Rodrigues CampainFranceAnna Fali PROPOSAL
Juan WieserIndiaBernardo Dominic NEW
Frozen Columns
Name
Leja Caldarera
Cody Saylors
Aruna Figeroa
Clifford Rim
Mujtaba Nicka
Murillo Malet
Maisha Rulapaugh
Mayumi Kolmetz
Ashley Doe
Alejandro Perin
Chavez Briddick
Octavia Malet
Aditya Kusko
Jeanfrancois Venere
Francesco Shinko
Juan Wieser
Morrow Ruta
Julie Stenseth
James Butt
Kadeem Flosi
Juan Wieser
Misaki Royster
Cody Saylors
Mayumi Kolmetz
Clifford Rim
Darci Poquette
Antonio Caudy
Ricardo Gaucho
Adams Morasca
Julie Stenseth
Silvio Slusarski
Morrow Ruta
Mujtaba Nicka
Faith Gillian
Mujtaba Nicka
Izzy Garufi
Leon Oldroyd
Salvatore Stockham
Murillo Malet
Tony Foller
Ashley Doe
Claire Tollner
Johnson Sergi
Alejandro Perin
Salvatore Stockham
Aruna Figeroa
Cody Saylors
Greenwood Bolognia
Maria Marrier
Jones Vocelka
IdCountryDate
1000Australia2026-04-22
1001Russia2026-05-04
1002Spain2026-04-30
1003Germany2026-04-23
1004Australia2026-04-26
1005Canada2026-04-20
1006United Kingdom2026-04-21
1007Italy2026-05-05
1008Argentina2026-04-28
1009Brazil2026-04-13
1010France2026-05-02
1011Germany2026-04-20
1012India2026-04-12
1013Spain2026-04-18
1014India2026-04-25
1015Germany2026-04-20
1016Japan2026-05-03
1017India2026-04-18
1018Germany2026-04-20
1019France2026-04-14
1020India2026-04-14
1021France2026-05-02
1022Spain2026-04-17
1023Australia2026-05-07
1024Argentina2026-04-21
1025Japan2026-04-12
1026Brazil2026-04-17
1027Canada2026-05-02
1028Brazil2026-04-17
1029Brazil2026-04-23
1030Australia2026-04-30
1031United Kingdom2026-04-24
1032United Kingdom2026-04-16
1033United Kingdom2026-04-11
1034Brazil2026-05-01
1035Japan2026-04-23
1036Germany2026-04-13
1037Italy2026-04-24
1038Germany2026-04-20
1039Russia2026-04-14
1040Spain2026-04-18
1041Argentina2026-04-21
1042Argentina2026-04-28
1043Russia2026-04-12
1044Germany2026-05-10
1045Germany2026-05-07
1046Canada2026-04-29
1047Canada2026-05-10
1048India2026-05-02
1049Russia2026-04-14

On-Demand Data

NameIdCountryDate
Mujtaba Nicka1000Italy2026-05-05
Antonio Caudy1001Russia2026-04-23
Mujtaba Nicka1002Spain2026-04-30
Deepesh Chui1003Australia2026-04-23
James Butt1004Germany2026-05-07
Salvatore Stockham1005Spain2026-04-15
Sinclair Waycott1006Germany2026-04-19
Mujtaba Nicka1007Australia2026-04-19
Mayumi Kolmetz1008Russia2026-05-07
Jones Vocelka1009Australia2026-04-20
James Butt1010Russia2026-04-21
Sinclair Waycott1011India2026-05-04
Ricardo Gaucho1012Australia2026-04-29
Clifford Rim1013Russia2026-05-03
Silvio Slusarski1014Germany2026-05-05
Julie Stenseth1015Germany2026-04-15
Salvatore Stockham1016Australia2026-04-17
Stacey Maclead1017India2026-04-23
Adams Morasca1018Brazil2026-04-19
Munro Ferencz1019Japan2026-05-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Costa DilliardGermanyAsiya Javayant RENEWAL
Adams MorascaGermanyAmy Elsner RENEWAL
Mujtaba NickaFranceBernardo Dominic PROPOSAL
Salvatore StockhamAustraliaAmy Elsner NEGOTIATION
Juan WieserIndiaBernardo Dominic PROPOSAL
Nicolas IturbideItalyIvan Magalhaes RENEWAL
Kadeem FlosiAustraliaIoni Bowcher UNQUALIFIED
Sinclair WaycottUnited KingdomXuxue Feng RENEWAL
Greenwood BologniaSpainBernardo Dominic NEGOTIATION
Antonio CaudyRussiaAsiya Javayant NEGOTIATION
Aditya KuskoAustraliaOnyama Limba NEW
Francesco ShinkoBrazilAsiya Javayant PROPOSAL
Jones VocelkaUnited KingdomOnyama Limba NEW
Adams MorascaAustraliaXuxue Feng UNQUALIFIED
Silvio SlusarskiItalyAmy Elsner PROPOSAL
Munro FerenczAustraliaElwin Sharvill RENEWAL
Cody SaylorsCanadaOnyama Limba RENEWAL
Murillo MaletFranceBernardo Dominic RENEWAL
Aruna FigeroaBrazilAmy Elsner PROPOSAL
Jeanfrancois VenereIndiaAsiya Javayant RENEWAL
Rodrigues CampainJapanElwin Sharvill QUALIFIED
Morrow RutaCanadaIvan Magalhaes NEGOTIATION
Ashley DoeAustraliaAsiya Javayant NEGOTIATION
Claire TollnerCanadaStephen Shaw NEGOTIATION
Antonio CaudyFranceStephen Shaw UNQUALIFIED
Nicolas IturbideArgentinaElwin Sharvill PROPOSAL
Silvio SlusarskiRussiaOnyama Limba PROPOSAL
Misaki RoysterSpainElwin Sharvill QUALIFIED
Cody SaylorsIndiaAsiya Javayant QUALIFIED
Costa DilliardArgentinaIoni Bowcher RENEWAL
Darci PoquetteIndiaOnyama Limba RENEWAL
Salvatore StockhamJapanAnna Fali PROPOSAL
Leja CaldareraUnited KingdomAsiya Javayant UNQUALIFIED
Arvin AlbaresBrazilOnyama Limba RENEWAL
Nicolas IturbideGermanyAmy Elsner NEGOTIATION
Octavia MaletFranceBernardo Dominic PROPOSAL
Maisha RulapaughFranceIoni Bowcher PROPOSAL
Ricardo GauchoBrazilBernardo Dominic NEGOTIATION
Leon OldroydRussiaAmy Elsner NEGOTIATION
Sinclair WaycottRussiaStephen Shaw 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>