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
Francesco ShinkoJapanIoni Bowcher QUALIFIED
James ButtItalyIvan Magalhaes QUALIFIED
Misaki RoysterIndiaXuxue Feng PROPOSAL
Isabel BowleyCanadaIoni Bowcher NEW
Maria MarrierAustraliaOnyama Limba PROPOSAL
Juan WieserArgentinaAsiya Javayant NEGOTIATION
Antonio CaudyFranceAmy Elsner UNQUALIFIED
Greenwood BologniaUnited KingdomBernardo Dominic UNQUALIFIED
Nicolas IturbideBrazilAsiya Javayant RENEWAL
Ashley DoeIndiaAnna Fali QUALIFIED
Antonio CaudyCanadaIoni Bowcher NEW
Izzy GarufiItalyElwin Sharvill RENEWAL
Rodrigues CampainRussiaElwin Sharvill QUALIFIED
Nicolas IturbideRussiaIvan Magalhaes NEGOTIATION
Wickens NestleAustraliaIoni Bowcher PROPOSAL
Salvatore StockhamRussiaElwin Sharvill QUALIFIED
Johnson SergiIndiaOnyama Limba NEW
Octavia MaletArgentinaIoni Bowcher NEW
Arvin AlbaresArgentinaBernardo Dominic QUALIFIED
Izzy GarufiIndiaAnna Fali NEW
Cody SaylorsFranceAsiya Javayant NEW
Mujtaba NickaSpainXuxue Feng NEW
Kaitlin OstroskySpainIvan Magalhaes QUALIFIED
Clifford RimJapanIoni Bowcher PROPOSAL
Misaki RoysterGermanyAmy Elsner NEGOTIATION
Tony FollerIndiaOnyama Limba UNQUALIFIED
Rodrigues CampainBrazilXuxue Feng QUALIFIED
Izzy GarufiJapanIoni Bowcher PROPOSAL
Adams MorascaSpainAnna Fali RENEWAL
Cody SaylorsArgentinaXuxue Feng NEW
Maisha RulapaughAustraliaAmy Elsner QUALIFIED
Costa DilliardCanadaElwin Sharvill NEGOTIATION
Jennifer AmigonBrazilElwin Sharvill PROPOSAL
Kadeem FlosiFranceXuxue Feng UNQUALIFIED
Clifford RimGermanyAnna Fali RENEWAL
Emily WhobreyRussiaXuxue Feng NEGOTIATION
Silvio SlusarskiArgentinaOnyama Limba RENEWAL
Jones VocelkaSpainElwin Sharvill QUALIFIED
Arvin AlbaresUnited KingdomElwin Sharvill QUALIFIED
Claire TollnerArgentinaAnna Fali QUALIFIED
James ButtJapanElwin Sharvill PROPOSAL
Murillo MaletRussiaOnyama Limba NEGOTIATION
Antonio CaudyRussiaAsiya Javayant NEW
Aruna FigeroaAustraliaIvan Magalhaes NEGOTIATION
Kaitlin OstroskyItalyStephen Shaw NEW
Greenwood BologniaItalyAnna Fali PROPOSAL
Faith GillianIndiaAmy Elsner UNQUALIFIED
Leon OldroydGermanyAnna Fali PROPOSAL
Aruna FigeroaArgentinaStephen Shaw NEW
Aruna FigeroaGermanyOnyama Limba PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Leja CaldareraGermanyStephen Shaw UNQUALIFIED
Darci PoquetteGermanyXuxue Feng NEW
David DarakjyJapanXuxue Feng QUALIFIED
Cody SaylorsGermanyOnyama Limba NEGOTIATION
Emily WhobreyItalyIoni Bowcher RENEWAL
Arvin AlbaresCanadaAmy Elsner NEGOTIATION
Chavez BriddickItalyAsiya Javayant PROPOSAL
Wickens NestleBrazilAnna Fali UNQUALIFIED
Deepesh ChuiIndiaAsiya Javayant QUALIFIED
Kadeem FlosiIndiaIoni Bowcher QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Faith GillianSpain2026-05-22King, Christopher A Esq PROPOSAL7Anna Fali
1001Leja CaldareraItaly2026-06-08Printing Dimensions QUALIFIED88Xuxue Feng
1002Ivar PaprockiFrance2026-06-16Truhlar And Truhlar Attys NEGOTIATION57Stephen Shaw
1003Salvatore StockhamIndia2026-05-21Feiner Bros NEGOTIATION66Onyama Limba
1004Tony FollerUnited Kingdom2026-06-09Benton, John B Jr PROPOSAL87Onyama Limba
1005Kaitlin OstroskyIndia2026-06-06Printing Dimensions QUALIFIED91Bernardo Dominic
1006Misaki RoysterIndia2026-06-09Chemel, James L Cpa PROPOSAL75Xuxue Feng
1007Darci PoquetteBrazil2026-05-23Dorl, James J Esq UNQUALIFIED45Anna Fali
1008Jeanfrancois VenereSpain2026-06-12Chanay, Jeffrey A Esq UNQUALIFIED11Ioni Bowcher
1009Morrow RutaSpain2026-05-28Chemel, James L Cpa NEGOTIATION60Elwin Sharvill
1010Jefferson SchemmerUnited Kingdom2026-06-02Rousseaux, Michael Esq NEGOTIATION9Onyama Limba
1011Julie StensethJapan2026-05-26Chemel, James L Cpa PROPOSAL78Ivan Magalhaes
1012Sinclair WaycottBrazil2026-06-16Feltz Printing Service NEGOTIATION62Asiya Javayant
1013Maisha RulapaughGermany2026-06-07Benton, John B Jr NEW3Ioni Bowcher
1014Izzy GarufiArgentina2026-05-25Feltz Printing Service RENEWAL54Anna Fali
1015Claire TollnerAustralia2026-06-15Dorl, James J Esq UNQUALIFIED54Asiya Javayant
1016Rodrigues CampainCanada2026-06-09Rangoni Of Florence PROPOSAL73Ioni Bowcher
1017Cody SaylorsBrazil2026-06-18Rangoni Of Florence UNQUALIFIED34Elwin Sharvill
1018Cody SaylorsRussia2026-06-19Feltz Printing Service NEW44Ioni Bowcher
1019Nicolas IturbideSpain2026-05-21Morlong Associates RENEWAL25Stephen Shaw
1020Tony FollerBrazil2026-06-12Printing Dimensions PROPOSAL13Bernardo Dominic
1021Isabel BowleyAustralia2026-05-31Feiner Bros QUALIFIED99Ioni Bowcher
1022Clifford RimCanada2026-06-06Chemel, James L Cpa RENEWAL25Bernardo Dominic
1023Misaki RoysterJapan2026-05-30Chemel, James L Cpa UNQUALIFIED98Anna Fali
1024Sinclair WaycottCanada2026-06-07King, Christopher A Esq NEW80Bernardo Dominic
1025Stacey MacleadIndia2026-06-15Commercial Press NEGOTIATION66Asiya Javayant
1026Maria MarrierCanada2026-05-31Printing Dimensions PROPOSAL38Ivan Magalhaes
1027Arvin AlbaresItaly2026-06-05Chanay, Jeffrey A Esq UNQUALIFIED53Asiya Javayant
1028David DarakjyRussia2026-05-25King, Christopher A Esq UNQUALIFIED4Amy Elsner
1029Kadeem FlosiArgentina2026-05-28Chemel, James L Cpa PROPOSAL37Ioni Bowcher
1030Mayumi KolmetzBrazil2026-06-15Feltz Printing Service NEW81Bernardo Dominic
1031Misaki RoysterIndia2026-06-04King, Christopher A Esq RENEWAL66Xuxue Feng
1032Rodrigues CampainSpain2026-06-09Chanay, Jeffrey A Esq NEGOTIATION2Asiya Javayant
1033Maisha RulapaughFrance2026-06-01Feltz Printing Service NEGOTIATION76Asiya Javayant
1034Antonio CaudyAustralia2026-05-27Chemel, James L Cpa UNQUALIFIED1Ivan Magalhaes
1035Juan WieserArgentina2026-06-04Commercial Press RENEWAL28Elwin Sharvill
1036Sinclair WaycottAustralia2026-06-11Rangoni Of Florence NEGOTIATION49Elwin Sharvill
1037Mujtaba NickaBrazil2026-06-09Chanay, Jeffrey A Esq PROPOSAL5Onyama Limba
1038Ricardo GauchoSpain2026-05-25Rousseaux, Michael Esq PROPOSAL33Bernardo Dominic
1039Darci PoquetteRussia2026-06-15Printing Dimensions NEW55Elwin Sharvill
1040Claire TollnerUnited Kingdom2026-06-08Dorl, James J Esq RENEWAL51Ioni Bowcher
1041Maria MarrierItaly2026-05-26Rangoni Of Florence PROPOSAL44Xuxue Feng
1042Adams MorascaCanada2026-06-18Feiner Bros PROPOSAL2Amy Elsner
1043Murillo MaletItaly2026-06-12Chapman, Ross E Esq NEW23Asiya Javayant
1044Jones VocelkaSpain2026-06-13Commercial Press NEGOTIATION64Onyama Limba
1045Antonio CaudyBrazil2026-05-23Chanay, Jeffrey A Esq NEGOTIATION85Asiya Javayant
1046Johnson SergiBrazil2026-05-27Chanay, Jeffrey A Esq QUALIFIED67Amy Elsner
1047Izzy GarufiAustralia2026-06-03Chapman, Ross E Esq UNQUALIFIED48Anna Fali
1048Tony FollerGermany2026-06-01Benton, John B Jr UNQUALIFIED84Ioni Bowcher
1049Ivar PaprockiCanada2026-05-26King, Christopher A Esq NEW69Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Isabel BowleyAustraliaIoni Bowcher NEGOTIATION
Jefferson SchemmerRussiaAsiya Javayant RENEWAL
Silvio SlusarskiBrazilAsiya Javayant NEW
Jennifer AmigonIndiaAsiya Javayant NEW
Faith GillianAustraliaIoni Bowcher NEGOTIATION
Arvin AlbaresArgentinaOnyama Limba RENEWAL
James ButtIndiaIvan Magalhaes NEW
Ashley DoeAustraliaIoni Bowcher QUALIFIED
Costa DilliardIndiaOnyama Limba UNQUALIFIED
Mayumi KolmetzBrazilIoni Bowcher PROPOSAL
Mujtaba NickaItalyIvan Magalhaes NEW
Rodrigues CampainIndiaIvan Magalhaes RENEWAL
Faith GillianBrazilIvan Magalhaes UNQUALIFIED
Clifford RimFranceAsiya Javayant UNQUALIFIED
Tony FollerUnited KingdomAsiya Javayant NEGOTIATION
Salvatore StockhamIndiaAsiya Javayant NEGOTIATION
Nicolas IturbideRussiaElwin Sharvill PROPOSAL
Chavez BriddickBrazilAsiya Javayant PROPOSAL
Emily WhobreyAustraliaStephen Shaw QUALIFIED
Maisha RulapaughSpainIoni Bowcher UNQUALIFIED
Isabel BowleyCanadaXuxue Feng NEGOTIATION
Stacey MacleadGermanyAnna Fali RENEWAL
Ashley DoeArgentinaElwin Sharvill PROPOSAL
Aruna FigeroaAustraliaStephen Shaw UNQUALIFIED
Ivar PaprockiRussiaOnyama Limba NEGOTIATION
Isabel BowleyUnited KingdomAnna Fali PROPOSAL
Nicolas IturbideRussiaXuxue Feng NEGOTIATION
Isabel BowleyJapanElwin Sharvill UNQUALIFIED
Isabel BowleyArgentinaIoni Bowcher NEGOTIATION
Costa DilliardCanadaAnna Fali NEGOTIATION
Ivar PaprockiSpainAmy Elsner UNQUALIFIED
Wickens NestleCanadaIvan Magalhaes NEGOTIATION
Jeanfrancois VenereArgentinaIoni Bowcher RENEWAL
Cody SaylorsBrazilIvan Magalhaes UNQUALIFIED
Maria MarrierSpainIoni Bowcher QUALIFIED
Darci PoquetteUnited KingdomElwin Sharvill NEW
Stacey MacleadArgentinaStephen Shaw NEGOTIATION
Faith GillianGermanyAsiya Javayant RENEWAL
Claire TollnerSpainAsiya Javayant RENEWAL
Costa DilliardUnited KingdomAnna Fali RENEWAL
Silvio SlusarskiBrazilStephen Shaw QUALIFIED
Aika InouyeJapanOnyama Limba PROPOSAL
Salvatore StockhamBrazilBernardo Dominic NEGOTIATION
Misaki RoysterCanadaIoni Bowcher NEW
Misaki RoysterFranceAmy Elsner NEGOTIATION
James ButtFranceBernardo Dominic NEW
Leja CaldareraIndiaAnna Fali QUALIFIED
Rodrigues CampainItalyIvan Magalhaes NEW
Julie StensethJapanIvan Magalhaes UNQUALIFIED
Alejandro PerinAustraliaBernardo Dominic NEGOTIATION
Frozen Columns
Name
Ricardo Gaucho
Mujtaba Nicka
Jeanfrancois Venere
Jennifer Amigon
Munro Ferencz
Munro Ferencz
Wickens Nestle
Izzy Garufi
Mayumi Kolmetz
Ashley Doe
Mayumi Kolmetz
Jones Vocelka
Leja Caldarera
Smith Glick
Isabel Bowley
Mayumi Kolmetz
Clifford Rim
Alejandro Perin
Maisha Rulapaugh
Juan Wieser
Ricardo Gaucho
Faith Gillian
Costa Dilliard
Maisha Rulapaugh
James Butt
Tony Foller
Maisha Rulapaugh
Faith Gillian
Alejandro Perin
Wickens Nestle
James Butt
Misaki Royster
Aruna Figeroa
Deepesh Chui
Aruna Figeroa
Ivar Paprocki
Aruna Figeroa
Nicolas Iturbide
Murillo Malet
Jeanfrancois Venere
Aditya Kusko
Aruna Figeroa
Clifford Rim
Aika Inouye
Sinclair Waycott
David Darakjy
Jones Vocelka
James Butt
Izzy Garufi
Smith Glick
IdCountryDate
1000Italy2026-05-27
1001United Kingdom2026-05-31
1002Spain2026-06-02
1003Germany2026-05-28
1004India2026-06-13
1005France2026-05-29
1006Germany2026-06-19
1007Germany2026-06-06
1008Russia2026-05-30
1009Spain2026-06-06
1010Brazil2026-06-03
1011Italy2026-06-04
1012Russia2026-06-02
1013United Kingdom2026-05-28
1014Australia2026-06-04
1015India2026-05-24
1016India2026-06-10
1017United Kingdom2026-06-04
1018Canada2026-06-17
1019France2026-05-22
1020Argentina2026-05-24
1021India2026-06-11
1022Russia2026-05-29
1023United Kingdom2026-06-06
1024Spain2026-05-27
1025Italy2026-05-27
1026Australia2026-05-27
1027United Kingdom2026-06-18
1028Spain2026-06-12
1029Brazil2026-06-03
1030India2026-05-27
1031Japan2026-06-17
1032India2026-06-10
1033Germany2026-06-11
1034Canada2026-05-31
1035India2026-05-31
1036France2026-05-21
1037Spain2026-06-13
1038Germany2026-06-16
1039India2026-06-17
1040Spain2026-05-25
1041France2026-05-30
1042Australia2026-05-23
1043Spain2026-05-29
1044Argentina2026-05-23
1045Spain2026-06-04
1046Brazil2026-05-30
1047India2026-06-16
1048United Kingdom2026-05-26
1049Argentina2026-06-12

On-Demand Data

NameIdCountryDate
Salvatore Stockham1000United Kingdom2026-06-19
Ricardo Gaucho1001Germany2026-06-02
Salvatore Stockham1002Australia2026-05-28
Mujtaba Nicka1003Australia2026-05-30
Munro Ferencz1004Spain2026-06-06
Misaki Royster1005France2026-06-04
Antonio Caudy1006Germany2026-06-08
Salvatore Stockham1007Canada2026-05-23
Cody Saylors1008Spain2026-06-01
Juan Wieser1009Italy2026-06-17
Rodrigues Campain1010Russia2026-06-10
Ricardo Gaucho1011Argentina2026-06-10
Juan Wieser1012United Kingdom2026-05-21
Francesco Shinko1013India2026-05-25
Arvin Albares1014Australia2026-06-08
Rodrigues Campain1015Russia2026-05-24
Claire Tollner1016Canada2026-06-01
Greenwood Bolognia1017India2026-06-05
Tony Foller1018Argentina2026-05-23
Francesco Shinko1019Argentina2026-06-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Greenwood BologniaGermanyIvan Magalhaes NEW
Jennifer AmigonSpainIvan Magalhaes RENEWAL
Aruna FigeroaAustraliaOnyama Limba NEW
Jefferson SchemmerAustraliaAnna Fali NEGOTIATION
Mujtaba NickaItalyStephen Shaw PROPOSAL
Maria MarrierSpainStephen Shaw QUALIFIED
Cody SaylorsFranceElwin Sharvill UNQUALIFIED
Maisha RulapaughUnited KingdomAmy Elsner UNQUALIFIED
Ivar PaprockiFranceAmy Elsner NEGOTIATION
Jeanfrancois VenereRussiaOnyama Limba NEW
Jennifer AmigonSpainElwin Sharvill PROPOSAL
Cody SaylorsItalyAnna Fali PROPOSAL
Isabel BowleyRussiaBernardo Dominic RENEWAL
Julie StensethRussiaXuxue Feng QUALIFIED
Izzy GarufiSpainStephen Shaw NEGOTIATION
Isabel BowleyBrazilAsiya Javayant NEW
Stacey MacleadBrazilIvan Magalhaes UNQUALIFIED
Salvatore StockhamGermanyAsiya Javayant UNQUALIFIED
Cody SaylorsJapanElwin Sharvill NEGOTIATION
Kadeem FlosiUnited KingdomXuxue Feng RENEWAL
Maria MarrierAustraliaElwin Sharvill QUALIFIED
Chavez BriddickIndiaOnyama Limba NEW
Greenwood BologniaBrazilOnyama Limba UNQUALIFIED
Kaitlin OstroskyAustraliaOnyama Limba PROPOSAL
Mujtaba NickaAustraliaBernardo Dominic PROPOSAL
Jefferson SchemmerFranceAmy Elsner NEW
Aditya KuskoItalyOnyama Limba PROPOSAL
Adams MorascaUnited KingdomAmy Elsner NEGOTIATION
Sinclair WaycottBrazilIoni Bowcher NEGOTIATION
Francesco ShinkoArgentinaOnyama Limba NEGOTIATION
Francesco ShinkoUnited KingdomIvan Magalhaes NEGOTIATION
Chavez BriddickUnited KingdomElwin Sharvill UNQUALIFIED
Morrow RutaCanadaOnyama Limba UNQUALIFIED
Jennifer AmigonArgentinaAsiya Javayant QUALIFIED
Mayumi KolmetzFranceIvan Magalhaes UNQUALIFIED
Tony FollerBrazilStephen Shaw UNQUALIFIED
Smith GlickBrazilStephen Shaw RENEWAL
Deepesh ChuiFranceBernardo Dominic QUALIFIED
Emily WhobreyItalyBernardo Dominic PROPOSAL
Jones VocelkaSpainOnyama Limba 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>