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
Morrow RutaArgentinaOnyama Limba QUALIFIED
Chavez BriddickArgentinaOnyama Limba RENEWAL
Deepesh ChuiBrazilBernardo Dominic QUALIFIED
Costa DilliardIndiaIoni Bowcher PROPOSAL
Mayumi KolmetzGermanyIvan Magalhaes RENEWAL
James ButtArgentinaAsiya Javayant PROPOSAL
Aditya KuskoBrazilXuxue Feng UNQUALIFIED
Leja CaldareraArgentinaIvan Magalhaes NEW
Claire TollnerArgentinaBernardo Dominic NEGOTIATION
Faith GillianCanadaAsiya Javayant NEGOTIATION
Silvio SlusarskiItalyIvan Magalhaes UNQUALIFIED
Johnson SergiIndiaOnyama Limba NEW
Aruna FigeroaItalyBernardo Dominic QUALIFIED
Aika InouyeFranceAmy Elsner NEW
Maria MarrierItalyStephen Shaw PROPOSAL
Mayumi KolmetzRussiaBernardo Dominic QUALIFIED
Juan WieserCanadaAsiya Javayant NEGOTIATION
Jefferson SchemmerSpainXuxue Feng NEGOTIATION
Aditya KuskoItalyAmy Elsner QUALIFIED
Aika InouyeAustraliaElwin Sharvill NEGOTIATION
Izzy GarufiGermanyAmy Elsner RENEWAL
Isabel BowleyRussiaXuxue Feng NEGOTIATION
Julie StensethSpainIoni Bowcher RENEWAL
Izzy GarufiGermanyStephen Shaw NEGOTIATION
Aika InouyeAustraliaAsiya Javayant RENEWAL
Johnson SergiUnited KingdomIoni Bowcher QUALIFIED
Ivar PaprockiFranceXuxue Feng NEW
Octavia MaletCanadaAmy Elsner RENEWAL
Antonio CaudyUnited KingdomIoni Bowcher NEGOTIATION
Jeanfrancois VenereAustraliaIvan Magalhaes PROPOSAL
Mayumi KolmetzAustraliaAsiya Javayant RENEWAL
Cody SaylorsAustraliaAsiya Javayant NEGOTIATION
Smith GlickRussiaXuxue Feng RENEWAL
Clifford RimJapanIvan Magalhaes PROPOSAL
Silvio SlusarskiUnited KingdomBernardo Dominic PROPOSAL
Salvatore StockhamBrazilAmy Elsner QUALIFIED
Stacey MacleadJapanBernardo Dominic UNQUALIFIED
Johnson SergiItalyAmy Elsner NEGOTIATION
Johnson SergiGermanyBernardo Dominic NEW
Alejandro PerinRussiaIvan Magalhaes PROPOSAL
Silvio SlusarskiBrazilElwin Sharvill PROPOSAL
Jennifer AmigonItalyAnna Fali NEW
Wickens NestleRussiaAmy Elsner RENEWAL
Cody SaylorsRussiaXuxue Feng UNQUALIFIED
Murillo MaletItalyStephen Shaw UNQUALIFIED
Misaki RoysterArgentinaElwin Sharvill RENEWAL
Emily WhobreyAustraliaOnyama Limba RENEWAL
Misaki RoysterItalyIoni Bowcher RENEWAL
Antonio CaudyUnited KingdomOnyama Limba NEGOTIATION
Misaki RoysterAustraliaIvan Magalhaes QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Leja CaldareraIndiaAsiya Javayant NEW
Jefferson SchemmerArgentinaStephen Shaw RENEWAL
Clifford RimCanadaIoni Bowcher NEGOTIATION
Maisha RulapaughBrazilBernardo Dominic NEW
Mujtaba NickaArgentinaXuxue Feng NEW
Ivar PaprockiIndiaBernardo Dominic UNQUALIFIED
Nicolas IturbideRussiaIoni Bowcher NEGOTIATION
David DarakjyFranceAnna Fali RENEWAL
Octavia MaletBrazilAnna Fali NEGOTIATION
David DarakjyAustraliaXuxue Feng RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jennifer AmigonJapan2026-03-29Truhlar And Truhlar Attys RENEWAL12Amy Elsner
1001Aika InouyeUnited Kingdom2026-04-02Truhlar And Truhlar Attys RENEWAL73Xuxue Feng
1002Salvatore StockhamIndia2026-04-16Feltz Printing Service UNQUALIFIED74Ivan Magalhaes
1003Faith GillianRussia2026-04-07Feltz Printing Service UNQUALIFIED97Asiya Javayant
1004Antonio CaudyUnited Kingdom2026-03-29Feltz Printing Service PROPOSAL99Anna Fali
1005Deepesh ChuiBrazil2026-04-03Printing Dimensions NEW79Anna Fali
1006Jefferson SchemmerIndia2026-04-09Feltz Printing Service NEW64Onyama Limba
1007Maisha RulapaughBrazil2026-04-11Truhlar And Truhlar Attys QUALIFIED47Xuxue Feng
1008Greenwood BologniaJapan2026-04-02Printing Dimensions NEGOTIATION19Amy Elsner
1009Mujtaba NickaUnited Kingdom2026-04-20Dorl, James J Esq QUALIFIED71Elwin Sharvill
1010Salvatore StockhamSpain2026-04-06Morlong Associates RENEWAL23Anna Fali
1011Jeanfrancois VenereGermany2026-03-23King, Christopher A Esq PROPOSAL7Elwin Sharvill
1012Izzy GarufiBrazil2026-04-20Printing Dimensions NEGOTIATION6Anna Fali
1013Octavia MaletJapan2026-04-10Buckley Miller Wright NEW54Stephen Shaw
1014Tony FollerIndia2026-04-16King, Christopher A Esq NEGOTIATION47Onyama Limba
1015Julie StensethUnited Kingdom2026-04-20Buckley Miller Wright RENEWAL5Ivan Magalhaes
1016Maisha RulapaughSpain2026-04-05Feiner Bros QUALIFIED53Asiya Javayant
1017Murillo MaletJapan2026-03-24Morlong Associates NEGOTIATION66Amy Elsner
1018James ButtCanada2026-03-28King, Christopher A Esq RENEWAL64Onyama Limba
1019Leja CaldareraItaly2026-04-17Benton, John B Jr NEGOTIATION94Elwin Sharvill
1020Aika InouyeCanada2026-04-20Feiner Bros RENEWAL15Onyama Limba
1021Aika InouyeJapan2026-04-05Truhlar And Truhlar Attys NEGOTIATION66Xuxue Feng
1022James ButtSpain2026-04-05Feiner Bros PROPOSAL33Ivan Magalhaes
1023Darci PoquetteItaly2026-03-29Truhlar And Truhlar Attys UNQUALIFIED84Anna Fali
1024Adams MorascaBrazil2026-04-04Dorl, James J Esq PROPOSAL61Xuxue Feng
1025Misaki RoysterGermany2026-04-13Chemel, James L Cpa QUALIFIED42Anna Fali
1026Kadeem FlosiGermany2026-04-16Rangoni Of Florence RENEWAL82Stephen Shaw
1027David DarakjyArgentina2026-04-18Chanay, Jeffrey A Esq QUALIFIED58Bernardo Dominic
1028Jeanfrancois VenereUnited Kingdom2026-03-29Feiner Bros PROPOSAL78Anna Fali
1029Aika InouyeAustralia2026-04-02Buckley Miller Wright NEGOTIATION57Asiya Javayant
1030Jeanfrancois VenereUnited Kingdom2026-04-12Printing Dimensions RENEWAL31Elwin Sharvill
1031Emily WhobreyBrazil2026-04-11Feltz Printing Service QUALIFIED58Stephen Shaw
1032James ButtSpain2026-03-27Buckley Miller Wright RENEWAL69Ioni Bowcher
1033Jennifer AmigonJapan2026-04-16Chanay, Jeffrey A Esq UNQUALIFIED85Stephen Shaw
1034Aditya KuskoRussia2026-04-20Commercial Press NEGOTIATION75Anna Fali
1035Rodrigues CampainArgentina2026-04-01Truhlar And Truhlar Attys QUALIFIED97Xuxue Feng
1036Alejandro PerinJapan2026-04-19Benton, John B Jr NEW33Elwin Sharvill
1037Jones VocelkaArgentina2026-04-12Chapman, Ross E Esq UNQUALIFIED94Xuxue Feng
1038Ricardo GauchoAustralia2026-03-30Commercial Press UNQUALIFIED51Bernardo Dominic
1039Morrow RutaAustralia2026-04-15King, Christopher A Esq QUALIFIED36Elwin Sharvill
1040Maria MarrierBrazil2026-04-06Chanay, Jeffrey A Esq NEGOTIATION35Stephen Shaw
1041Darci PoquetteBrazil2026-03-29Chanay, Jeffrey A Esq NEGOTIATION93Stephen Shaw
1042Aika InouyeIndia2026-04-14Truhlar And Truhlar Attys NEW64Anna Fali
1043Costa DilliardItaly2026-03-23Commercial Press QUALIFIED9Asiya Javayant
1044Ashley DoeBrazil2026-04-09Rangoni Of Florence NEW78Elwin Sharvill
1045Ricardo GauchoItaly2026-04-06Truhlar And Truhlar Attys QUALIFIED83Anna Fali
1046Stacey MacleadUnited Kingdom2026-03-30Buckley Miller Wright UNQUALIFIED40Ivan Magalhaes
1047Nicolas IturbideFrance2026-04-14Dorl, James J Esq NEW55Onyama Limba
1048Jennifer AmigonGermany2026-03-29Buckley Miller Wright NEW25Stephen Shaw
1049Ricardo GauchoArgentina2026-03-24Commercial Press PROPOSAL52Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Cody SaylorsUnited KingdomAmy Elsner NEW
Maria MarrierIndiaStephen Shaw QUALIFIED
Leon OldroydJapanAsiya Javayant UNQUALIFIED
Mayumi KolmetzGermanyBernardo Dominic PROPOSAL
Julie StensethSpainStephen Shaw UNQUALIFIED
Ivar PaprockiArgentinaAmy Elsner QUALIFIED
Deepesh ChuiArgentinaStephen Shaw PROPOSAL
Smith GlickSpainIoni Bowcher NEGOTIATION
Juan WieserSpainXuxue Feng RENEWAL
Deepesh ChuiGermanyAsiya Javayant RENEWAL
Ricardo GauchoCanadaIoni Bowcher QUALIFIED
Mayumi KolmetzArgentinaIoni Bowcher NEW
Kadeem FlosiUnited KingdomIoni Bowcher UNQUALIFIED
Mujtaba NickaIndiaIoni Bowcher PROPOSAL
Leja CaldareraAustraliaAmy Elsner NEGOTIATION
Francesco ShinkoFranceIvan Magalhaes UNQUALIFIED
Aika InouyeAustraliaXuxue Feng NEGOTIATION
David DarakjyFranceOnyama Limba RENEWAL
Claire TollnerJapanOnyama Limba NEGOTIATION
Adams MorascaAustraliaIvan Magalhaes PROPOSAL
Alejandro PerinArgentinaAmy Elsner PROPOSAL
Francesco ShinkoJapanAsiya Javayant PROPOSAL
Francesco ShinkoUnited KingdomIoni Bowcher UNQUALIFIED
Arvin AlbaresArgentinaStephen Shaw NEW
Maisha RulapaughGermanyBernardo Dominic PROPOSAL
Izzy GarufiArgentinaXuxue Feng NEW
Isabel BowleyIndiaOnyama Limba PROPOSAL
Jeanfrancois VenereItalyBernardo Dominic QUALIFIED
Jefferson SchemmerFranceBernardo Dominic NEGOTIATION
Costa DilliardSpainOnyama Limba NEGOTIATION
Murillo MaletGermanyXuxue Feng PROPOSAL
Faith GillianGermanyXuxue Feng PROPOSAL
Mayumi KolmetzArgentinaAsiya Javayant PROPOSAL
Alejandro PerinSpainAmy Elsner QUALIFIED
Salvatore StockhamUnited KingdomAnna Fali NEGOTIATION
Ricardo GauchoRussiaOnyama Limba UNQUALIFIED
Leja CaldareraBrazilAmy Elsner NEGOTIATION
Jeanfrancois VenereSpainIvan Magalhaes RENEWAL
Francesco ShinkoGermanyBernardo Dominic RENEWAL
Faith GillianJapanAsiya Javayant NEW
Rodrigues CampainSpainBernardo Dominic UNQUALIFIED
Claire TollnerArgentinaAsiya Javayant NEGOTIATION
Tony FollerFranceIoni Bowcher UNQUALIFIED
Jefferson SchemmerJapanStephen Shaw QUALIFIED
Jennifer AmigonBrazilAsiya Javayant RENEWAL
Octavia MaletAustraliaStephen Shaw QUALIFIED
Arvin AlbaresUnited KingdomAsiya Javayant NEW
Greenwood BologniaArgentinaAmy Elsner NEW
Izzy GarufiCanadaBernardo Dominic UNQUALIFIED
Aika InouyeArgentinaOnyama Limba RENEWAL
Frozen Columns
Name
Sinclair Waycott
Cody Saylors
Jennifer Amigon
Mujtaba Nicka
Adams Morasca
Leon Oldroyd
Izzy Garufi
Jones Vocelka
Nicolas Iturbide
Adams Morasca
Chavez Briddick
Morrow Ruta
Salvatore Stockham
Murillo Malet
Tony Foller
Maria Marrier
Kaitlin Ostrosky
Alejandro Perin
Misaki Royster
Munro Ferencz
Darci Poquette
Munro Ferencz
Smith Glick
Ricardo Gaucho
Cody Saylors
Mayumi Kolmetz
David Darakjy
Juan Wieser
Smith Glick
Kadeem Flosi
Ashley Doe
Aika Inouye
Smith Glick
Maisha Rulapaugh
Isabel Bowley
Francesco Shinko
Isabel Bowley
Misaki Royster
Salvatore Stockham
Chavez Briddick
Maisha Rulapaugh
Aruna Figeroa
Mayumi Kolmetz
Ashley Doe
Claire Tollner
Alejandro Perin
Rodrigues Campain
Kadeem Flosi
Leja Caldarera
Deepesh Chui
IdCountryDate
1000Australia2026-04-06
1001Argentina2026-04-15
1002France2026-04-09
1003Argentina2026-04-20
1004Germany2026-03-24
1005Australia2026-03-22
1006Germany2026-03-30
1007Canada2026-04-16
1008Argentina2026-03-31
1009Brazil2026-04-13
1010Spain2026-04-04
1011Italy2026-04-06
1012Germany2026-04-02
1013Italy2026-03-31
1014United Kingdom2026-04-12
1015Russia2026-04-09
1016Brazil2026-03-31
1017France2026-04-06
1018Spain2026-04-18
1019Japan2026-03-28
1020India2026-04-15
1021Australia2026-03-28
1022Brazil2026-04-08
1023Spain2026-04-20
1024Spain2026-03-28
1025Australia2026-03-25
1026India2026-04-14
1027Brazil2026-03-22
1028Germany2026-04-06
1029Canada2026-04-01
1030Italy2026-04-16
1031Russia2026-03-26
1032India2026-03-23
1033Brazil2026-03-28
1034India2026-04-07
1035Germany2026-04-13
1036Argentina2026-04-13
1037Spain2026-03-22
1038Russia2026-04-09
1039United Kingdom2026-04-18
1040Russia2026-03-29
1041United Kingdom2026-04-09
1042India2026-04-15
1043United Kingdom2026-04-08
1044Spain2026-03-24
1045Japan2026-04-06
1046Brazil2026-04-16
1047India2026-04-17
1048Germany2026-03-27
1049Italy2026-04-02

On-Demand Data

NameIdCountryDate
Morrow Ruta1000Canada2026-04-03
Misaki Royster1001France2026-03-30
Wickens Nestle1002Australia2026-04-17
Nicolas Iturbide1003Brazil2026-03-30
Misaki Royster1004United Kingdom2026-04-20
Greenwood Bolognia1005Canada2026-04-18
Aika Inouye1006Brazil2026-04-08
Maisha Rulapaugh1007India2026-04-01
Faith Gillian1008Argentina2026-04-06
Izzy Garufi1009Brazil2026-04-15
Maisha Rulapaugh1010Japan2026-04-11
Jefferson Schemmer1011Germany2026-04-02
Tony Foller1012Argentina2026-03-26
Jefferson Schemmer1013Russia2026-03-24
Aruna Figeroa1014India2026-04-14
Jeanfrancois Venere1015Australia2026-04-08
Chavez Briddick1016France2026-04-04
Mujtaba Nicka1017Australia2026-04-01
Ricardo Gaucho1018Germany2026-04-16
Izzy Garufi1019France2026-04-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Wickens NestleItalyXuxue Feng NEW
Stacey MacleadArgentinaElwin Sharvill NEW
Leja CaldareraRussiaIvan Magalhaes PROPOSAL
Clifford RimBrazilIvan Magalhaes RENEWAL
Ashley DoeIndiaOnyama Limba QUALIFIED
Aruna FigeroaSpainAmy Elsner PROPOSAL
Greenwood BologniaIndiaStephen Shaw NEW
Deepesh ChuiJapanIvan Magalhaes UNQUALIFIED
Kadeem FlosiArgentinaAnna Fali RENEWAL
Aruna FigeroaIndiaAsiya Javayant NEW
Izzy GarufiFranceElwin Sharvill QUALIFIED
Octavia MaletRussiaXuxue Feng RENEWAL
Misaki RoysterIndiaAnna Fali PROPOSAL
Aditya KuskoItalyAsiya Javayant NEW
Maisha RulapaughItalyIvan Magalhaes NEW
Francesco ShinkoJapanAnna Fali QUALIFIED
Izzy GarufiCanadaElwin Sharvill UNQUALIFIED
Maisha RulapaughItalyBernardo Dominic RENEWAL
Wickens NestleAustraliaIvan Magalhaes RENEWAL
James ButtAustraliaAnna Fali QUALIFIED
Arvin AlbaresGermanyStephen Shaw UNQUALIFIED
Faith GillianArgentinaElwin Sharvill PROPOSAL
Sinclair WaycottSpainXuxue Feng PROPOSAL
Antonio CaudyGermanyElwin Sharvill RENEWAL
Adams MorascaIndiaElwin Sharvill NEGOTIATION
Maria MarrierSpainIvan Magalhaes NEGOTIATION
Stacey MacleadItalyAmy Elsner NEW
Rodrigues CampainItalyOnyama Limba NEGOTIATION
Adams MorascaIndiaAsiya Javayant QUALIFIED
Octavia MaletJapanIoni Bowcher NEGOTIATION
Chavez BriddickFranceElwin Sharvill NEGOTIATION
Isabel BowleyUnited KingdomIoni Bowcher NEW
Ricardo GauchoGermanyAnna Fali RENEWAL
Costa DilliardFranceAsiya Javayant QUALIFIED
Jones VocelkaIndiaBernardo Dominic NEGOTIATION
Julie StensethRussiaIoni Bowcher QUALIFIED
Ivar PaprockiArgentinaIvan Magalhaes NEGOTIATION
Smith GlickRussiaAmy Elsner UNQUALIFIED
Kadeem FlosiJapanBernardo Dominic UNQUALIFIED
Clifford RimAustraliaBernardo Dominic 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>