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
Costa DilliardArgentinaAsiya Javayant NEW
Claire TollnerBrazilIvan Magalhaes PROPOSAL
Clifford RimUnited KingdomXuxue Feng UNQUALIFIED
Leon OldroydCanadaXuxue Feng RENEWAL
Stacey MacleadAustraliaIoni Bowcher RENEWAL
Jefferson SchemmerArgentinaXuxue Feng UNQUALIFIED
Silvio SlusarskiUnited KingdomAnna Fali UNQUALIFIED
Tony FollerIndiaElwin Sharvill UNQUALIFIED
Julie StensethCanadaBernardo Dominic NEGOTIATION
Ivar PaprockiIndiaIoni Bowcher PROPOSAL
Claire TollnerFranceBernardo Dominic UNQUALIFIED
Isabel BowleyItalyBernardo Dominic UNQUALIFIED
Clifford RimArgentinaElwin Sharvill PROPOSAL
Jennifer AmigonRussiaAsiya Javayant PROPOSAL
Ricardo GauchoCanadaXuxue Feng PROPOSAL
Ivar PaprockiSpainXuxue Feng UNQUALIFIED
Mayumi KolmetzSpainBernardo Dominic PROPOSAL
Arvin AlbaresGermanyAsiya Javayant UNQUALIFIED
Misaki RoysterRussiaAmy Elsner RENEWAL
Morrow RutaGermanyAsiya Javayant NEGOTIATION
Stacey MacleadUnited KingdomElwin Sharvill PROPOSAL
Ashley DoeSpainAsiya Javayant NEGOTIATION
Maisha RulapaughCanadaAmy Elsner RENEWAL
David DarakjyItalyXuxue Feng QUALIFIED
Mujtaba NickaAustraliaBernardo Dominic RENEWAL
Emily WhobreySpainAmy Elsner NEGOTIATION
Antonio CaudyBrazilIvan Magalhaes NEGOTIATION
Izzy GarufiUnited KingdomAmy Elsner NEGOTIATION
Kaitlin OstroskyJapanXuxue Feng PROPOSAL
Isabel BowleyCanadaOnyama Limba PROPOSAL
Leon OldroydJapanIvan Magalhaes QUALIFIED
Kadeem FlosiArgentinaAnna Fali UNQUALIFIED
Mujtaba NickaAustraliaElwin Sharvill NEW
Cody SaylorsBrazilAsiya Javayant NEW
Mayumi KolmetzUnited KingdomBernardo Dominic NEW
Johnson SergiCanadaIoni Bowcher RENEWAL
Darci PoquetteUnited KingdomXuxue Feng NEW
Emily WhobreySpainOnyama Limba NEW
Adams MorascaRussiaAmy Elsner NEW
Aruna FigeroaRussiaXuxue Feng PROPOSAL
Arvin AlbaresJapanElwin Sharvill NEGOTIATION
Claire TollnerSpainIvan Magalhaes QUALIFIED
Tony FollerArgentinaIvan Magalhaes QUALIFIED
Chavez BriddickAustraliaStephen Shaw PROPOSAL
Adams MorascaArgentinaStephen Shaw UNQUALIFIED
Silvio SlusarskiSpainIoni Bowcher QUALIFIED
Adams MorascaJapanAnna Fali QUALIFIED
Sinclair WaycottCanadaIoni Bowcher PROPOSAL
Arvin AlbaresIndiaElwin Sharvill UNQUALIFIED
Emily WhobreyAustraliaXuxue Feng NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
David DarakjyCanadaAmy Elsner RENEWAL
Alejandro PerinBrazilStephen Shaw UNQUALIFIED
Morrow RutaArgentinaBernardo Dominic UNQUALIFIED
Rodrigues CampainIndiaIvan Magalhaes NEGOTIATION
Jones VocelkaFranceIvan Magalhaes NEGOTIATION
James ButtBrazilBernardo Dominic RENEWAL
Ashley DoeIndiaIvan Magalhaes UNQUALIFIED
Antonio CaudyJapanElwin Sharvill UNQUALIFIED
Stacey MacleadJapanElwin Sharvill UNQUALIFIED
Jeanfrancois VenereSpainAnna Fali QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Sinclair WaycottJapan2026-03-27Chanay, Jeffrey A Esq NEGOTIATION82Asiya Javayant
1001Leon OldroydUnited Kingdom2026-04-08King, Christopher A Esq RENEWAL92Stephen Shaw
1002Munro FerenczCanada2026-04-05Rangoni Of Florence UNQUALIFIED63Xuxue Feng
1003Francesco ShinkoGermany2026-03-21King, Christopher A Esq QUALIFIED91Ioni Bowcher
1004Ricardo GauchoUnited Kingdom2026-03-27Feiner Bros RENEWAL37Xuxue Feng
1005Maria MarrierJapan2026-03-24Chanay, Jeffrey A Esq RENEWAL29Stephen Shaw
1006David DarakjyBrazil2026-03-29Printing Dimensions NEGOTIATION64Anna Fali
1007Ashley DoeUnited Kingdom2026-03-28Benton, John B Jr PROPOSAL17Anna Fali
1008Maria MarrierGermany2026-03-25Buckley Miller Wright RENEWAL7Stephen Shaw
1009Jennifer AmigonCanada2026-04-01Chanay, Jeffrey A Esq RENEWAL42Ivan Magalhaes
1010Jones VocelkaSpain2026-04-05Chanay, Jeffrey A Esq PROPOSAL68Xuxue Feng
1011James ButtItaly2026-04-08Commercial Press PROPOSAL0Asiya Javayant
1012Stacey MacleadGermany2026-04-04Morlong Associates UNQUALIFIED34Amy Elsner
1013Wickens NestleUnited Kingdom2026-04-14Buckley Miller Wright UNQUALIFIED76Stephen Shaw
1014Leon OldroydItaly2026-04-18Chanay, Jeffrey A Esq RENEWAL46Ivan Magalhaes
1015Aditya KuskoJapan2026-04-10Dorl, James J Esq NEW43Elwin Sharvill
1016Isabel BowleyFrance2026-04-09Dorl, James J Esq NEW84Ioni Bowcher
1017Rodrigues CampainBrazil2026-04-13Chemel, James L Cpa NEGOTIATION86Amy Elsner
1018Julie StensethSpain2026-03-26Truhlar And Truhlar Attys QUALIFIED92Onyama Limba
1019Jeanfrancois VenereIndia2026-03-30Dorl, James J Esq UNQUALIFIED11Onyama Limba
1020Faith GillianFrance2026-03-21Buckley Miller Wright NEW70Ioni Bowcher
1021Francesco ShinkoRussia2026-03-29Printing Dimensions NEW13Asiya Javayant
1022Smith GlickRussia2026-04-03Chanay, Jeffrey A Esq UNQUALIFIED35Xuxue Feng
1023Johnson SergiIndia2026-04-06Rangoni Of Florence QUALIFIED80Stephen Shaw
1024Jeanfrancois VenereRussia2026-04-08Rousseaux, Michael Esq UNQUALIFIED99Stephen Shaw
1025Adams MorascaGermany2026-03-20Feiner Bros UNQUALIFIED2Elwin Sharvill
1026Emily WhobreyItaly2026-03-20Rangoni Of Florence PROPOSAL31Amy Elsner
1027Maria MarrierGermany2026-04-08Chapman, Ross E Esq NEW52Onyama Limba
1028Emily WhobreyItaly2026-03-29Printing Dimensions NEW92Stephen Shaw
1029Juan WieserItaly2026-03-26Feltz Printing Service PROPOSAL37Bernardo Dominic
1030Greenwood BologniaFrance2026-03-31Morlong Associates PROPOSAL34Bernardo Dominic
1031Faith GillianSpain2026-03-24Benton, John B Jr UNQUALIFIED14Ioni Bowcher
1032Ivar PaprockiRussia2026-03-23Chanay, Jeffrey A Esq NEGOTIATION81Bernardo Dominic
1033Darci PoquetteArgentina2026-03-26Rousseaux, Michael Esq QUALIFIED70Asiya Javayant
1034Izzy GarufiCanada2026-04-01Feltz Printing Service QUALIFIED97Amy Elsner
1035Stacey MacleadJapan2026-03-24Commercial Press NEGOTIATION18Elwin Sharvill
1036Isabel BowleyIndia2026-04-15Buckley Miller Wright NEW54Stephen Shaw
1037Izzy GarufiRussia2026-04-02Chapman, Ross E Esq NEW33Ivan Magalhaes
1038Arvin AlbaresFrance2026-04-15Rousseaux, Michael Esq QUALIFIED59Bernardo Dominic
1039Costa DilliardAustralia2026-04-06Feltz Printing Service RENEWAL6Ioni Bowcher
1040Silvio SlusarskiBrazil2026-04-11Feiner Bros NEW12Elwin Sharvill
1041Jeanfrancois VenereJapan2026-04-02Commercial Press UNQUALIFIED45Xuxue Feng
1042James ButtCanada2026-03-29Commercial Press QUALIFIED17Bernardo Dominic
1043Maria MarrierItaly2026-03-25Rousseaux, Michael Esq RENEWAL41Ivan Magalhaes
1044Costa DilliardFrance2026-04-03Chapman, Ross E Esq NEGOTIATION15Onyama Limba
1045Murillo MaletCanada2026-04-13Chanay, Jeffrey A Esq UNQUALIFIED62Elwin Sharvill
1046Adams MorascaIndia2026-04-05Rousseaux, Michael Esq NEGOTIATION90Ioni Bowcher
1047Maria MarrierJapan2026-04-10Printing Dimensions QUALIFIED66Ioni Bowcher
1048Wickens NestleIndia2026-03-22Chapman, Ross E Esq UNQUALIFIED81Asiya Javayant
1049Mayumi KolmetzGermany2026-04-05Chemel, James L Cpa RENEWAL94Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Deepesh ChuiBrazilIoni Bowcher QUALIFIED
Arvin AlbaresRussiaIvan Magalhaes UNQUALIFIED
Jeanfrancois VenereSpainAnna Fali NEW
Silvio SlusarskiGermanyXuxue Feng PROPOSAL
Ashley DoeArgentinaAsiya Javayant QUALIFIED
Chavez BriddickItalyAnna Fali NEW
Jennifer AmigonIndiaStephen Shaw NEW
Murillo MaletAustraliaElwin Sharvill UNQUALIFIED
Emily WhobreyGermanyBernardo Dominic NEW
Maisha RulapaughIndiaStephen Shaw RENEWAL
Deepesh ChuiBrazilAmy Elsner UNQUALIFIED
Emily WhobreyItalyIvan Magalhaes QUALIFIED
James ButtIndiaIvan Magalhaes UNQUALIFIED
Ashley DoeGermanyIvan Magalhaes NEW
Jefferson SchemmerBrazilAnna Fali UNQUALIFIED
Alejandro PerinItalyBernardo Dominic UNQUALIFIED
Mayumi KolmetzGermanyXuxue Feng QUALIFIED
Chavez BriddickCanadaAsiya Javayant RENEWAL
Sinclair WaycottFranceIvan Magalhaes NEW
James ButtJapanIoni Bowcher QUALIFIED
Aditya KuskoArgentinaIoni Bowcher PROPOSAL
Jeanfrancois VenereItalyElwin Sharvill UNQUALIFIED
Aditya KuskoArgentinaXuxue Feng UNQUALIFIED
Stacey MacleadCanadaAmy Elsner UNQUALIFIED
Izzy GarufiCanadaElwin Sharvill PROPOSAL
Costa DilliardIndiaAsiya Javayant NEGOTIATION
Leja CaldareraBrazilElwin Sharvill QUALIFIED
Munro FerenczUnited KingdomIvan Magalhaes QUALIFIED
Nicolas IturbideIndiaXuxue Feng PROPOSAL
Sinclair WaycottArgentinaAsiya Javayant UNQUALIFIED
Wickens NestleJapanOnyama Limba NEW
Claire TollnerItalyAmy Elsner NEGOTIATION
Morrow RutaUnited KingdomAsiya Javayant QUALIFIED
Arvin AlbaresJapanXuxue Feng NEGOTIATION
Faith GillianFranceAsiya Javayant QUALIFIED
Francesco ShinkoItalyIvan Magalhaes RENEWAL
Cody SaylorsIndiaBernardo Dominic UNQUALIFIED
Claire TollnerAustraliaIoni Bowcher RENEWAL
Maisha RulapaughCanadaAsiya Javayant NEW
Costa DilliardCanadaBernardo Dominic QUALIFIED
Ivar PaprockiUnited KingdomOnyama Limba UNQUALIFIED
Maisha RulapaughUnited KingdomXuxue Feng RENEWAL
Aruna FigeroaRussiaIoni Bowcher NEW
Ashley DoeUnited KingdomIoni Bowcher PROPOSAL
Kadeem FlosiAustraliaElwin Sharvill UNQUALIFIED
Costa DilliardGermanyOnyama Limba NEW
Smith GlickGermanyElwin Sharvill RENEWAL
Leon OldroydIndiaAsiya Javayant UNQUALIFIED
Isabel BowleyUnited KingdomXuxue Feng NEW
Chavez BriddickSpainBernardo Dominic QUALIFIED
Frozen Columns
Name
Maisha Rulapaugh
Stacey Maclead
Costa Dilliard
Kaitlin Ostrosky
David Darakjy
Leon Oldroyd
Wickens Nestle
Chavez Briddick
Adams Morasca
Adams Morasca
Aruna Figeroa
Jones Vocelka
Mayumi Kolmetz
Rodrigues Campain
Silvio Slusarski
Costa Dilliard
Silvio Slusarski
Mayumi Kolmetz
Salvatore Stockham
Tony Foller
Munro Ferencz
Ashley Doe
Wickens Nestle
Rodrigues Campain
Antonio Caudy
James Butt
Faith Gillian
Ivar Paprocki
Ivar Paprocki
Kaitlin Ostrosky
Salvatore Stockham
Jennifer Amigon
Jefferson Schemmer
Sinclair Waycott
Ashley Doe
Smith Glick
Aruna Figeroa
Clifford Rim
Sinclair Waycott
Claire Tollner
Costa Dilliard
Mujtaba Nicka
Wickens Nestle
Jennifer Amigon
Johnson Sergi
Sinclair Waycott
Stacey Maclead
Kaitlin Ostrosky
Jones Vocelka
Izzy Garufi
IdCountryDate
1000Germany2026-04-07
1001Spain2026-04-15
1002Australia2026-04-07
1003Argentina2026-03-20
1004India2026-04-02
1005Spain2026-04-17
1006United Kingdom2026-04-11
1007India2026-03-21
1008Brazil2026-04-18
1009Australia2026-03-26
1010India2026-03-26
1011Italy2026-04-03
1012Japan2026-04-03
1013Russia2026-04-02
1014France2026-04-17
1015United Kingdom2026-03-22
1016Russia2026-03-30
1017Italy2026-03-21
1018Australia2026-03-28
1019Japan2026-03-28
1020Australia2026-03-25
1021Italy2026-03-24
1022France2026-03-22
1023Argentina2026-04-11
1024Canada2026-04-16
1025Brazil2026-03-25
1026Italy2026-04-16
1027United Kingdom2026-04-03
1028Argentina2026-03-29
1029Italy2026-03-20
1030Australia2026-03-23
1031France2026-04-16
1032France2026-04-06
1033France2026-04-17
1034Germany2026-03-31
1035France2026-04-10
1036Argentina2026-04-14
1037Japan2026-04-03
1038India2026-03-31
1039Australia2026-04-15
1040Argentina2026-04-04
1041Italy2026-03-25
1042India2026-04-08
1043Canada2026-03-27
1044Italy2026-03-30
1045India2026-04-05
1046Australia2026-03-31
1047Australia2026-04-16
1048Australia2026-03-30
1049Spain2026-03-25

On-Demand Data

NameIdCountryDate
Salvatore Stockham1000Japan2026-04-09
Stacey Maclead1001Canada2026-04-15
Aruna Figeroa1002Argentina2026-03-28
Sinclair Waycott1003United Kingdom2026-04-10
Mujtaba Nicka1004Brazil2026-04-08
Costa Dilliard1005France2026-04-11
Isabel Bowley1006Italy2026-03-31
David Darakjy1007Spain2026-03-21
Stacey Maclead1008Germany2026-04-08
Aruna Figeroa1009France2026-04-12
Stacey Maclead1010Germany2026-04-11
Jones Vocelka1011United Kingdom2026-03-26
Tony Foller1012United Kingdom2026-04-05
Stacey Maclead1013Italy2026-03-25
Smith Glick1014Canada2026-03-25
Adams Morasca1015Italy2026-04-10
Alejandro Perin1016Germany2026-03-25
Isabel Bowley1017India2026-03-27
Maisha Rulapaugh1018Germany2026-04-04
Cody Saylors1019Australia2026-04-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Tony FollerBrazilOnyama Limba NEGOTIATION
Silvio SlusarskiArgentinaStephen Shaw PROPOSAL
Claire TollnerCanadaAsiya Javayant PROPOSAL
Mujtaba NickaSpainStephen Shaw PROPOSAL
Silvio SlusarskiCanadaElwin Sharvill RENEWAL
David DarakjyFranceIvan Magalhaes UNQUALIFIED
Leja CaldareraUnited KingdomIoni Bowcher RENEWAL
Francesco ShinkoFranceElwin Sharvill QUALIFIED
Wickens NestleJapanIoni Bowcher RENEWAL
Murillo MaletAustraliaIoni Bowcher PROPOSAL
Ivar PaprockiItalyAmy Elsner NEW
James ButtBrazilBernardo Dominic PROPOSAL
Leon OldroydCanadaAsiya Javayant NEGOTIATION
Costa DilliardIndiaBernardo Dominic NEGOTIATION
Juan WieserArgentinaAmy Elsner UNQUALIFIED
Jones VocelkaIndiaOnyama Limba PROPOSAL
Faith GillianFranceStephen Shaw NEGOTIATION
Darci PoquetteJapanAsiya Javayant UNQUALIFIED
Morrow RutaItalyAsiya Javayant NEGOTIATION
Deepesh ChuiFranceAmy Elsner NEW
Kadeem FlosiIndiaAsiya Javayant NEGOTIATION
Rodrigues CampainSpainIoni Bowcher PROPOSAL
Costa DilliardItalyIoni Bowcher UNQUALIFIED
James ButtJapanElwin Sharvill NEW
Ivar PaprockiJapanBernardo Dominic QUALIFIED
Costa DilliardSpainIvan Magalhaes UNQUALIFIED
Misaki RoysterCanadaOnyama Limba NEW
Julie StensethIndiaElwin Sharvill UNQUALIFIED
Julie StensethFranceXuxue Feng PROPOSAL
Rodrigues CampainBrazilOnyama Limba PROPOSAL
Arvin AlbaresCanadaStephen Shaw NEGOTIATION
Morrow RutaRussiaElwin Sharvill RENEWAL
Aika InouyeUnited KingdomAmy Elsner NEW
Leja CaldareraUnited KingdomAnna Fali PROPOSAL
Leja CaldareraIndiaOnyama Limba NEW
Aika InouyeArgentinaElwin Sharvill NEW
Darci PoquetteArgentinaAsiya Javayant PROPOSAL
Kaitlin OstroskyGermanyIoni Bowcher NEW
Salvatore StockhamAustraliaOnyama Limba PROPOSAL
Aditya KuskoArgentinaAnna Fali NEW

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