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 DilliardBrazilBernardo Dominic QUALIFIED
Arvin AlbaresJapanStephen Shaw UNQUALIFIED
Maria MarrierRussiaBernardo Dominic QUALIFIED
Ricardo GauchoSpainIvan Magalhaes RENEWAL
David DarakjyItalyXuxue Feng UNQUALIFIED
Kaitlin OstroskyJapanAmy Elsner PROPOSAL
Morrow RutaGermanyIoni Bowcher UNQUALIFIED
Aditya KuskoFranceStephen Shaw RENEWAL
Salvatore StockhamCanadaStephen Shaw PROPOSAL
Francesco ShinkoIndiaBernardo Dominic RENEWAL
Costa DilliardBrazilIoni Bowcher PROPOSAL
Silvio SlusarskiFranceAsiya Javayant NEW
Sinclair WaycottJapanAmy Elsner RENEWAL
Isabel BowleySpainOnyama Limba RENEWAL
Darci PoquetteGermanyOnyama Limba NEW
Rodrigues CampainBrazilIoni Bowcher UNQUALIFIED
Maria MarrierCanadaXuxue Feng PROPOSAL
Claire TollnerBrazilAsiya Javayant QUALIFIED
Ricardo GauchoJapanAsiya Javayant NEGOTIATION
Wickens NestleFranceAsiya Javayant QUALIFIED
Wickens NestleAustraliaAnna Fali NEGOTIATION
Morrow RutaArgentinaAsiya Javayant UNQUALIFIED
Juan WieserRussiaAsiya Javayant UNQUALIFIED
Izzy GarufiFranceBernardo Dominic RENEWAL
Silvio SlusarskiBrazilStephen Shaw PROPOSAL
Arvin AlbaresFranceAnna Fali NEGOTIATION
Ashley DoeJapanElwin Sharvill UNQUALIFIED
Ivar PaprockiJapanElwin Sharvill NEW
Aika InouyeRussiaAsiya Javayant RENEWAL
Nicolas IturbideUnited KingdomAsiya Javayant PROPOSAL
Aruna FigeroaGermanyAsiya Javayant NEW
Leon OldroydArgentinaStephen Shaw UNQUALIFIED
Julie StensethSpainOnyama Limba UNQUALIFIED
Claire TollnerUnited KingdomAnna Fali UNQUALIFIED
Jones VocelkaFranceElwin Sharvill NEW
Mujtaba NickaSpainXuxue Feng PROPOSAL
Salvatore StockhamIndiaIoni Bowcher UNQUALIFIED
Leja CaldareraSpainIoni Bowcher NEW
Johnson SergiItalyAnna Fali PROPOSAL
Francesco ShinkoAustraliaBernardo Dominic UNQUALIFIED
Izzy GarufiCanadaXuxue Feng PROPOSAL
Chavez BriddickFranceStephen Shaw NEW
Adams MorascaItalyOnyama Limba NEGOTIATION
Smith GlickBrazilAmy Elsner QUALIFIED
Maria MarrierSpainAsiya Javayant UNQUALIFIED
Maisha RulapaughIndiaElwin Sharvill QUALIFIED
Chavez BriddickJapanAsiya Javayant UNQUALIFIED
Juan WieserBrazilIvan Magalhaes NEW
Cody SaylorsSpainIoni Bowcher NEW
Arvin AlbaresUnited KingdomOnyama Limba PROPOSAL
Horizontal
NameCountryRepresentativeStatus
David DarakjyAustraliaXuxue Feng NEW
Izzy GarufiJapanElwin Sharvill NEGOTIATION
Cody SaylorsBrazilElwin Sharvill QUALIFIED
Claire TollnerAustraliaIoni Bowcher NEW
Julie StensethFranceAmy Elsner RENEWAL
Adams MorascaRussiaXuxue Feng UNQUALIFIED
Smith GlickCanadaStephen Shaw PROPOSAL
Salvatore StockhamCanadaElwin Sharvill PROPOSAL
Johnson SergiItalyIoni Bowcher NEGOTIATION
Adams MorascaGermanyXuxue Feng NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Francesco ShinkoFrance2026-04-19Rangoni Of Florence NEGOTIATION97Amy Elsner
1001Jefferson SchemmerUnited Kingdom2026-04-22Dorl, James J Esq PROPOSAL72Ivan Magalhaes
1002Costa DilliardItaly2026-04-07King, Christopher A Esq PROPOSAL14Stephen Shaw
1003Julie StensethArgentina2026-04-09Chapman, Ross E Esq UNQUALIFIED32Bernardo Dominic
1004Johnson SergiUnited Kingdom2026-04-08Chemel, James L Cpa NEGOTIATION48Stephen Shaw
1005Ashley DoeFrance2026-04-05Feiner Bros NEGOTIATION84Elwin Sharvill
1006Ivar PaprockiUnited Kingdom2026-04-01Benton, John B Jr QUALIFIED70Bernardo Dominic
1007Mayumi KolmetzSpain2026-04-13Dorl, James J Esq RENEWAL15Bernardo Dominic
1008Claire TollnerAustralia2026-04-05Truhlar And Truhlar Attys RENEWAL42Onyama Limba
1009Wickens NestleItaly2026-04-25Morlong Associates QUALIFIED95Onyama Limba
1010Rodrigues CampainItaly2026-04-08King, Christopher A Esq NEGOTIATION40Xuxue Feng
1011Nicolas IturbideGermany2026-04-19Benton, John B Jr NEGOTIATION74Anna Fali
1012Leon OldroydCanada2026-04-26Benton, John B Jr NEGOTIATION50Elwin Sharvill
1013Rodrigues CampainIndia2026-04-27Rousseaux, Michael Esq PROPOSAL60Stephen Shaw
1014Jennifer AmigonAustralia2026-04-12Printing Dimensions RENEWAL85Onyama Limba
1015Emily WhobreyRussia2026-04-08Rangoni Of Florence PROPOSAL85Xuxue Feng
1016Adams MorascaRussia2026-04-09Chemel, James L Cpa PROPOSAL25Elwin Sharvill
1017Antonio CaudyAustralia2026-04-21Chapman, Ross E Esq PROPOSAL91Ivan Magalhaes
1018Julie StensethAustralia2026-04-05Chanay, Jeffrey A Esq QUALIFIED36Elwin Sharvill
1019Antonio CaudyIndia2026-04-17King, Christopher A Esq QUALIFIED96Onyama Limba
1020Alejandro PerinJapan2026-04-13Chapman, Ross E Esq UNQUALIFIED79Elwin Sharvill
1021Wickens NestleGermany2026-04-25King, Christopher A Esq QUALIFIED77Ioni Bowcher
1022Ashley DoeRussia2026-04-29Chemel, James L Cpa NEGOTIATION94Bernardo Dominic
1023Jennifer AmigonIndia2026-04-10King, Christopher A Esq NEW4Bernardo Dominic
1024Clifford RimCanada2026-04-01Benton, John B Jr NEGOTIATION50Elwin Sharvill
1025Costa DilliardArgentina2026-04-18Chanay, Jeffrey A Esq QUALIFIED96Stephen Shaw
1026Francesco ShinkoBrazil2026-04-03Rangoni Of Florence NEGOTIATION56Onyama Limba
1027Faith GillianAustralia2026-04-19Truhlar And Truhlar Attys PROPOSAL66Bernardo Dominic
1028Juan WieserJapan2026-04-02Truhlar And Truhlar Attys RENEWAL0Asiya Javayant
1029Aruna FigeroaCanada2026-04-07Dorl, James J Esq NEGOTIATION86Onyama Limba
1030Maria MarrierItaly2026-04-02Feiner Bros NEW16Bernardo Dominic
1031Jennifer AmigonCanada2026-04-07Truhlar And Truhlar Attys QUALIFIED50Stephen Shaw
1032Jeanfrancois VenereArgentina2026-04-13Truhlar And Truhlar Attys NEW19Bernardo Dominic
1033Antonio CaudyBrazil2026-04-26Chapman, Ross E Esq QUALIFIED5Ioni Bowcher
1034Munro FerenczGermany2026-04-23Commercial Press PROPOSAL53Asiya Javayant
1035Sinclair WaycottCanada2026-04-16Commercial Press NEW22Ioni Bowcher
1036David DarakjyRussia2026-04-17Dorl, James J Esq RENEWAL40Bernardo Dominic
1037Tony FollerArgentina2026-04-15Dorl, James J Esq NEGOTIATION19Ivan Magalhaes
1038Francesco ShinkoUnited Kingdom2026-04-04Feiner Bros NEGOTIATION89Xuxue Feng
1039Izzy GarufiItaly2026-04-17Chemel, James L Cpa QUALIFIED90Asiya Javayant
1040Johnson SergiBrazil2026-04-10Feltz Printing Service RENEWAL42Anna Fali
1041Claire TollnerUnited Kingdom2026-04-11Chapman, Ross E Esq UNQUALIFIED68Xuxue Feng
1042Cody SaylorsArgentina2026-04-06King, Christopher A Esq QUALIFIED36Stephen Shaw
1043Julie StensethArgentina2026-04-18Buckley Miller Wright PROPOSAL90Amy Elsner
1044Nicolas IturbideSpain2026-04-04Chanay, Jeffrey A Esq NEW47Asiya Javayant
1045Jeanfrancois VenereCanada2026-04-10Buckley Miller Wright QUALIFIED20Stephen Shaw
1046Ivar PaprockiJapan2026-04-12Morlong Associates QUALIFIED26Bernardo Dominic
1047Leon OldroydBrazil2026-04-28Rousseaux, Michael Esq NEW39Anna Fali
1048Morrow RutaIndia2026-04-23Rangoni Of Florence UNQUALIFIED62Amy Elsner
1049Murillo MaletUnited Kingdom2026-04-12Buckley Miller Wright NEGOTIATION8Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Francesco ShinkoBrazilAmy Elsner PROPOSAL
Antonio CaudyArgentinaOnyama Limba RENEWAL
Smith GlickAustraliaAnna Fali NEW
Leon OldroydFranceBernardo Dominic RENEWAL
Stacey MacleadIndiaIvan Magalhaes UNQUALIFIED
Costa DilliardArgentinaIvan Magalhaes UNQUALIFIED
Costa DilliardItalyAmy Elsner UNQUALIFIED
Ivar PaprockiUnited KingdomBernardo Dominic NEW
Salvatore StockhamGermanyAsiya Javayant NEGOTIATION
Smith GlickGermanyBernardo Dominic NEGOTIATION
Smith GlickCanadaIvan Magalhaes NEW
Silvio SlusarskiIndiaAsiya Javayant PROPOSAL
Johnson SergiIndiaStephen Shaw PROPOSAL
Sinclair WaycottBrazilIoni Bowcher PROPOSAL
Leja CaldareraRussiaElwin Sharvill PROPOSAL
Aditya KuskoRussiaIoni Bowcher RENEWAL
Emily WhobreySpainBernardo Dominic NEGOTIATION
Ivar PaprockiBrazilBernardo Dominic NEGOTIATION
Aditya KuskoIndiaIvan Magalhaes NEGOTIATION
Mujtaba NickaAustraliaOnyama Limba QUALIFIED
Adams MorascaBrazilElwin Sharvill PROPOSAL
Octavia MaletGermanyAmy Elsner RENEWAL
Antonio CaudyJapanElwin Sharvill NEW
Stacey MacleadArgentinaAnna Fali UNQUALIFIED
Claire TollnerGermanyOnyama Limba PROPOSAL
Nicolas IturbideUnited KingdomAnna Fali QUALIFIED
Mujtaba NickaJapanAsiya Javayant UNQUALIFIED
Julie StensethIndiaAmy Elsner NEGOTIATION
David DarakjyBrazilAmy Elsner QUALIFIED
Kadeem FlosiJapanAsiya Javayant UNQUALIFIED
Murillo MaletRussiaXuxue Feng QUALIFIED
Ashley DoeGermanyXuxue Feng NEGOTIATION
Julie StensethBrazilBernardo Dominic NEGOTIATION
Salvatore StockhamJapanBernardo Dominic NEW
Ricardo GauchoUnited KingdomAsiya Javayant NEGOTIATION
Claire TollnerUnited KingdomElwin Sharvill PROPOSAL
Adams MorascaIndiaXuxue Feng RENEWAL
Francesco ShinkoFranceIoni Bowcher NEW
James ButtArgentinaAsiya Javayant QUALIFIED
Stacey MacleadJapanAsiya Javayant RENEWAL
Alejandro PerinRussiaAmy Elsner NEGOTIATION
Maisha RulapaughItalyOnyama Limba QUALIFIED
Leja CaldareraRussiaAmy Elsner QUALIFIED
Maria MarrierArgentinaIoni Bowcher QUALIFIED
Salvatore StockhamArgentinaElwin Sharvill QUALIFIED
Jones VocelkaUnited KingdomIoni Bowcher QUALIFIED
Darci PoquetteIndiaAmy Elsner NEGOTIATION
Greenwood BologniaCanadaStephen Shaw RENEWAL
Smith GlickArgentinaAsiya Javayant NEGOTIATION
Clifford RimBrazilBernardo Dominic PROPOSAL
Frozen Columns
Name
Leja Caldarera
Johnson Sergi
Jones Vocelka
Ivar Paprocki
Antonio Caudy
Arvin Albares
Jones Vocelka
Arvin Albares
Smith Glick
Kadeem Flosi
Morrow Ruta
Munro Ferencz
Cody Saylors
Leon Oldroyd
Stacey Maclead
Octavia Malet
Mujtaba Nicka
Kaitlin Ostrosky
Cody Saylors
Octavia Malet
Murillo Malet
Jennifer Amigon
James Butt
Maisha Rulapaugh
Darci Poquette
David Darakjy
Emily Whobrey
Murillo Malet
Costa Dilliard
Jefferson Schemmer
David Darakjy
Munro Ferencz
Jeanfrancois Venere
Jennifer Amigon
Jefferson Schemmer
Johnson Sergi
Salvatore Stockham
Izzy Garufi
Aditya Kusko
Sinclair Waycott
Mayumi Kolmetz
Maria Marrier
Juan Wieser
Isabel Bowley
Darci Poquette
Octavia Malet
Antonio Caudy
Mujtaba Nicka
Greenwood Bolognia
Juan Wieser
IdCountryDate
1000Spain2026-04-12
1001Italy2026-04-23
1002Japan2026-04-20
1003Spain2026-04-27
1004United Kingdom2026-04-04
1005Brazil2026-04-08
1006India2026-04-01
1007Russia2026-04-13
1008United Kingdom2026-04-07
1009United Kingdom2026-04-19
1010Australia2026-04-03
1011Australia2026-04-04
1012Australia2026-04-01
1013India2026-04-30
1014Brazil2026-04-17
1015Brazil2026-04-05
1016United Kingdom2026-04-26
1017Russia2026-04-14
1018Italy2026-04-27
1019Canada2026-04-17
1020Canada2026-04-12
1021Spain2026-04-29
1022Japan2026-04-10
1023India2026-04-01
1024Spain2026-04-30
1025Brazil2026-04-17
1026Italy2026-04-11
1027Germany2026-04-03
1028Argentina2026-04-23
1029Australia2026-04-27
1030Russia2026-04-25
1031Australia2026-04-06
1032Russia2026-04-27
1033Japan2026-04-10
1034India2026-04-09
1035United Kingdom2026-04-02
1036Russia2026-04-16
1037France2026-04-02
1038France2026-04-23
1039France2026-04-21
1040Germany2026-04-27
1041Canada2026-04-29
1042Germany2026-04-30
1043Japan2026-04-15
1044Germany2026-04-01
1045India2026-04-19
1046Brazil2026-04-13
1047Canada2026-04-17
1048Argentina2026-04-22
1049Brazil2026-04-30

On-Demand Data

NameIdCountryDate
Jennifer Amigon1000Germany2026-04-19
Clifford Rim1001Argentina2026-04-22
Deepesh Chui1002United Kingdom2026-04-05
Tony Foller1003Canada2026-04-26
Misaki Royster1004Japan2026-04-21
Alejandro Perin1005France2026-04-23
Aruna Figeroa1006Argentina2026-04-06
Izzy Garufi1007Australia2026-04-24
Jeanfrancois Venere1008Germany2026-04-14
Emily Whobrey1009Italy2026-04-29
Morrow Ruta1010France2026-04-18
Maisha Rulapaugh1011Russia2026-04-26
Leja Caldarera1012Germany2026-04-18
Ashley Doe1013Australia2026-04-16
Kaitlin Ostrosky1014Argentina2026-04-11
Misaki Royster1015Italy2026-04-29
Adams Morasca1016United Kingdom2026-04-04
Octavia Malet1017Japan2026-04-27
Mujtaba Nicka1018Japan2026-04-26
Wickens Nestle1019France2026-04-07
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leon OldroydFranceBernardo Dominic NEGOTIATION
Deepesh ChuiJapanOnyama Limba UNQUALIFIED
Isabel BowleyRussiaXuxue Feng PROPOSAL
James ButtGermanyOnyama Limba PROPOSAL
Faith GillianFranceElwin Sharvill UNQUALIFIED
Smith GlickItalyAnna Fali PROPOSAL
Octavia MaletSpainOnyama Limba NEW
Kaitlin OstroskyGermanyOnyama Limba PROPOSAL
Morrow RutaBrazilAnna Fali QUALIFIED
Johnson SergiItalyIoni Bowcher NEW
Ivar PaprockiArgentinaAmy Elsner NEW
Kaitlin OstroskyFranceOnyama Limba PROPOSAL
Greenwood BologniaRussiaAsiya Javayant NEW
Ricardo GauchoUnited KingdomAnna Fali QUALIFIED
Julie StensethJapanIvan Magalhaes NEGOTIATION
Aruna FigeroaAustraliaAsiya Javayant QUALIFIED
Kaitlin OstroskyGermanyAmy Elsner QUALIFIED
David DarakjyArgentinaStephen Shaw UNQUALIFIED
Izzy GarufiFranceBernardo Dominic NEGOTIATION
Jefferson SchemmerUnited KingdomIoni Bowcher NEW
Julie StensethRussiaStephen Shaw NEW
Francesco ShinkoFranceAsiya Javayant NEW
Francesco ShinkoFranceAnna Fali QUALIFIED
Alejandro PerinSpainAnna Fali NEW
David DarakjyAustraliaAsiya Javayant QUALIFIED
Salvatore StockhamFranceAsiya Javayant QUALIFIED
Octavia MaletIndiaXuxue Feng NEGOTIATION
Deepesh ChuiAustraliaAmy Elsner UNQUALIFIED
Misaki RoysterGermanyOnyama Limba RENEWAL
Cody SaylorsArgentinaStephen Shaw NEW
Salvatore StockhamRussiaIvan Magalhaes RENEWAL
Arvin AlbaresArgentinaAmy Elsner QUALIFIED
Ashley DoeIndiaIvan Magalhaes RENEWAL
Chavez BriddickAustraliaBernardo Dominic UNQUALIFIED
Faith GillianBrazilIvan Magalhaes QUALIFIED
Maisha RulapaughFranceAsiya Javayant RENEWAL
Clifford RimSpainBernardo Dominic PROPOSAL
Aruna FigeroaArgentinaAmy Elsner NEGOTIATION
Murillo MaletItalyStephen Shaw UNQUALIFIED
Francesco ShinkoSpainAnna Fali 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>