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
Aditya KuskoIndiaOnyama Limba PROPOSAL
Maria MarrierItalyElwin Sharvill QUALIFIED
Maria MarrierGermanyOnyama Limba UNQUALIFIED
Silvio SlusarskiFranceXuxue Feng NEGOTIATION
Jones VocelkaGermanyOnyama Limba UNQUALIFIED
Stacey MacleadBrazilAmy Elsner NEGOTIATION
Juan WieserGermanyAsiya Javayant QUALIFIED
Maria MarrierUnited KingdomBernardo Dominic RENEWAL
Antonio CaudyFranceBernardo Dominic NEGOTIATION
Darci PoquetteSpainIvan Magalhaes UNQUALIFIED
Misaki RoysterGermanyStephen Shaw PROPOSAL
Aruna FigeroaRussiaAnna Fali QUALIFIED
Ivar PaprockiGermanyOnyama Limba QUALIFIED
Stacey MacleadIndiaXuxue Feng NEGOTIATION
Deepesh ChuiAustraliaAnna Fali RENEWAL
Smith GlickRussiaIvan Magalhaes UNQUALIFIED
Francesco ShinkoAustraliaStephen Shaw RENEWAL
Jennifer AmigonItalyElwin Sharvill PROPOSAL
Deepesh ChuiArgentinaIvan Magalhaes PROPOSAL
Arvin AlbaresSpainAsiya Javayant NEGOTIATION
Emily WhobreyGermanyAsiya Javayant QUALIFIED
Leja CaldareraBrazilBernardo Dominic PROPOSAL
Francesco ShinkoIndiaIvan Magalhaes RENEWAL
David DarakjyUnited KingdomIoni Bowcher UNQUALIFIED
Emily WhobreyJapanOnyama Limba PROPOSAL
Deepesh ChuiJapanElwin Sharvill UNQUALIFIED
Jennifer AmigonArgentinaAsiya Javayant NEGOTIATION
Sinclair WaycottGermanyOnyama Limba QUALIFIED
Nicolas IturbideJapanAmy Elsner RENEWAL
Aika InouyeIndiaAmy Elsner UNQUALIFIED
Silvio SlusarskiItalyElwin Sharvill PROPOSAL
Aditya KuskoIndiaIvan Magalhaes QUALIFIED
Sinclair WaycottCanadaIoni Bowcher NEW
Kaitlin OstroskyJapanOnyama Limba NEW
Clifford RimSpainAmy Elsner RENEWAL
Maria MarrierIndiaStephen Shaw QUALIFIED
Aika InouyeRussiaElwin Sharvill NEGOTIATION
Adams MorascaAustraliaElwin Sharvill NEGOTIATION
Leja CaldareraJapanStephen Shaw QUALIFIED
Alejandro PerinItalyElwin Sharvill NEGOTIATION
Ricardo GauchoBrazilAmy Elsner NEGOTIATION
Jones VocelkaSpainAnna Fali PROPOSAL
Misaki RoysterAustraliaAmy Elsner RENEWAL
Claire TollnerSpainAnna Fali UNQUALIFIED
Leon OldroydGermanyIoni Bowcher RENEWAL
Aika InouyeUnited KingdomOnyama Limba UNQUALIFIED
Chavez BriddickIndiaIvan Magalhaes NEGOTIATION
Jones VocelkaBrazilBernardo Dominic RENEWAL
Isabel BowleyCanadaIoni Bowcher NEW
Salvatore StockhamAustraliaOnyama Limba RENEWAL
Horizontal
NameCountryRepresentativeStatus
Ricardo GauchoArgentinaXuxue Feng NEW
Leja CaldareraBrazilAnna Fali PROPOSAL
Rodrigues CampainUnited KingdomAmy Elsner NEW
Deepesh ChuiGermanyBernardo Dominic NEGOTIATION
Deepesh ChuiGermanyStephen Shaw RENEWAL
Silvio SlusarskiGermanyBernardo Dominic NEW
Juan WieserCanadaStephen Shaw NEGOTIATION
Sinclair WaycottJapanElwin Sharvill UNQUALIFIED
Jefferson SchemmerBrazilIvan Magalhaes PROPOSAL
Misaki RoysterSpainAsiya Javayant PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aruna FigeroaRussia2026-06-12Rousseaux, Michael Esq NEW94Bernardo Dominic
1001Emily WhobreyRussia2026-06-13Printing Dimensions QUALIFIED81Anna Fali
1002Juan WieserRussia2026-06-05Benton, John B Jr PROPOSAL56Amy Elsner
1003Octavia MaletIndia2026-06-13Benton, John B Jr QUALIFIED33Asiya Javayant
1004Johnson SergiArgentina2026-06-15Feltz Printing Service RENEWAL87Ivan Magalhaes
1005Clifford RimBrazil2026-06-18Rousseaux, Michael Esq QUALIFIED18Stephen Shaw
1006Isabel BowleyUnited Kingdom2026-05-31Rousseaux, Michael Esq RENEWAL27Amy Elsner
1007Greenwood BologniaIndia2026-05-27Feltz Printing Service NEGOTIATION34Asiya Javayant
1008Faith GillianUnited Kingdom2026-06-03Chemel, James L Cpa RENEWAL67Stephen Shaw
1009Francesco ShinkoIndia2026-06-02King, Christopher A Esq UNQUALIFIED59Asiya Javayant
1010Jefferson SchemmerUnited Kingdom2026-06-07Morlong Associates NEW39Ioni Bowcher
1011Leon OldroydSpain2026-06-01Dorl, James J Esq NEGOTIATION56Amy Elsner
1012Wickens NestleJapan2026-06-09Truhlar And Truhlar Attys QUALIFIED7Asiya Javayant
1013Isabel BowleyGermany2026-06-13Commercial Press NEW69Ioni Bowcher
1014Chavez BriddickGermany2026-06-06Buckley Miller Wright NEGOTIATION60Amy Elsner
1015Leon OldroydAustralia2026-05-24Commercial Press NEW86Asiya Javayant
1016Jennifer AmigonUnited Kingdom2026-06-12Truhlar And Truhlar Attys UNQUALIFIED32Bernardo Dominic
1017Munro FerenczFrance2026-06-19Chanay, Jeffrey A Esq QUALIFIED13Ioni Bowcher
1018Ricardo GauchoFrance2026-06-15Truhlar And Truhlar Attys RENEWAL73Onyama Limba
1019Ashley DoeUnited Kingdom2026-06-20Buckley Miller Wright UNQUALIFIED72Ioni Bowcher
1020Juan WieserArgentina2026-06-18Benton, John B Jr NEGOTIATION55Bernardo Dominic
1021Claire TollnerUnited Kingdom2026-05-27Feiner Bros NEGOTIATION74Stephen Shaw
1022Ricardo GauchoJapan2026-06-09Feiner Bros NEGOTIATION3Ioni Bowcher
1023Maisha RulapaughFrance2026-06-10Benton, John B Jr NEGOTIATION7Amy Elsner
1024Silvio SlusarskiUnited Kingdom2026-05-30Chanay, Jeffrey A Esq PROPOSAL9Anna Fali
1025Sinclair WaycottRussia2026-06-07Dorl, James J Esq QUALIFIED1Elwin Sharvill
1026Morrow RutaIndia2026-06-08Truhlar And Truhlar Attys NEGOTIATION37Ioni Bowcher
1027Arvin AlbaresGermany2026-06-15Rangoni Of Florence PROPOSAL30Bernardo Dominic
1028Cody SaylorsBrazil2026-06-18Truhlar And Truhlar Attys NEGOTIATION11Ioni Bowcher
1029Chavez BriddickGermany2026-06-17Chemel, James L Cpa QUALIFIED59Xuxue Feng
1030Nicolas IturbideGermany2026-06-20Buckley Miller Wright RENEWAL72Asiya Javayant
1031Octavia MaletRussia2026-06-04Buckley Miller Wright NEW87Xuxue Feng
1032Francesco ShinkoGermany2026-06-06Printing Dimensions UNQUALIFIED32Ioni Bowcher
1033Mujtaba NickaAustralia2026-06-05Benton, John B Jr NEGOTIATION94Ioni Bowcher
1034Julie StensethGermany2026-06-13Printing Dimensions QUALIFIED39Xuxue Feng
1035Salvatore StockhamSpain2026-06-01Morlong Associates PROPOSAL24Anna Fali
1036Jefferson SchemmerArgentina2026-06-06Feltz Printing Service NEW77Onyama Limba
1037Tony FollerFrance2026-06-21Chemel, James L Cpa UNQUALIFIED56Onyama Limba
1038Sinclair WaycottGermany2026-05-28Feiner Bros UNQUALIFIED75Bernardo Dominic
1039Leja CaldareraSpain2026-06-22Rangoni Of Florence NEGOTIATION86Anna Fali
1040Emily WhobreyAustralia2026-06-02Benton, John B Jr UNQUALIFIED88Anna Fali
1041Izzy GarufiFrance2026-05-24Morlong Associates NEW73Bernardo Dominic
1042Salvatore StockhamBrazil2026-06-06Rousseaux, Michael Esq NEW63Ivan Magalhaes
1043Smith GlickItaly2026-05-31Commercial Press RENEWAL66Onyama Limba
1044Antonio CaudyBrazil2026-06-06Rangoni Of Florence NEW48Bernardo Dominic
1045Adams MorascaRussia2026-05-24King, Christopher A Esq QUALIFIED99Bernardo Dominic
1046Leja CaldareraArgentina2026-05-31Morlong Associates UNQUALIFIED62Elwin Sharvill
1047Aika InouyeArgentina2026-06-18Dorl, James J Esq RENEWAL15Ivan Magalhaes
1048Sinclair WaycottItaly2026-06-03Dorl, James J Esq NEW43Xuxue Feng
1049Jeanfrancois VenereCanada2026-05-24Rangoni Of Florence RENEWAL92Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Sinclair WaycottIndiaAmy Elsner PROPOSAL
Leon OldroydSpainStephen Shaw QUALIFIED
Julie StensethCanadaIoni Bowcher PROPOSAL
Deepesh ChuiIndiaElwin Sharvill NEGOTIATION
Murillo MaletGermanyXuxue Feng QUALIFIED
Izzy GarufiFranceOnyama Limba QUALIFIED
Aditya KuskoSpainElwin Sharvill UNQUALIFIED
Darci PoquetteArgentinaIvan Magalhaes RENEWAL
Francesco ShinkoAustraliaIoni Bowcher NEW
Aditya KuskoArgentinaStephen Shaw UNQUALIFIED
Adams MorascaIndiaElwin Sharvill NEGOTIATION
Munro FerenczItalyOnyama Limba UNQUALIFIED
Johnson SergiJapanBernardo Dominic NEW
Isabel BowleyJapanAsiya Javayant PROPOSAL
Tony FollerAustraliaIvan Magalhaes NEW
Adams MorascaGermanyElwin Sharvill RENEWAL
Jeanfrancois VenereUnited KingdomAmy Elsner NEW
Deepesh ChuiCanadaElwin Sharvill PROPOSAL
Jones VocelkaArgentinaIoni Bowcher QUALIFIED
Greenwood BologniaIndiaBernardo Dominic QUALIFIED
Greenwood BologniaFranceElwin Sharvill QUALIFIED
Claire TollnerRussiaElwin Sharvill QUALIFIED
Adams MorascaSpainAnna Fali NEW
Jefferson SchemmerSpainAsiya Javayant UNQUALIFIED
Jeanfrancois VenereItalyBernardo Dominic RENEWAL
Isabel BowleyCanadaXuxue Feng PROPOSAL
Juan WieserCanadaAsiya Javayant NEW
Johnson SergiUnited KingdomStephen Shaw UNQUALIFIED
Nicolas IturbideUnited KingdomAsiya Javayant QUALIFIED
Chavez BriddickGermanyAsiya Javayant RENEWAL
Smith GlickSpainAmy Elsner NEW
Octavia MaletRussiaIoni Bowcher RENEWAL
James ButtIndiaOnyama Limba UNQUALIFIED
Aruna FigeroaArgentinaXuxue Feng PROPOSAL
Salvatore StockhamRussiaIvan Magalhaes RENEWAL
Maria MarrierBrazilAnna Fali QUALIFIED
Emily WhobreyAustraliaStephen Shaw NEGOTIATION
Munro FerenczBrazilAsiya Javayant NEGOTIATION
Salvatore StockhamItalyOnyama Limba RENEWAL
Nicolas IturbideJapanIvan Magalhaes UNQUALIFIED
Faith GillianJapanIoni Bowcher QUALIFIED
Salvatore StockhamFranceAsiya Javayant UNQUALIFIED
Antonio CaudyItalyIoni Bowcher QUALIFIED
Costa DilliardRussiaAsiya Javayant NEGOTIATION
Leja CaldareraGermanyAnna Fali NEGOTIATION
Kadeem FlosiBrazilBernardo Dominic QUALIFIED
Leon OldroydIndiaAmy Elsner UNQUALIFIED
David DarakjyJapanIoni Bowcher NEGOTIATION
Francesco ShinkoAustraliaIvan Magalhaes RENEWAL
Chavez BriddickUnited KingdomIvan Magalhaes QUALIFIED
Frozen Columns
Name
Mayumi Kolmetz
Munro Ferencz
Misaki Royster
Arvin Albares
Aruna Figeroa
Ricardo Gaucho
Isabel Bowley
Jeanfrancois Venere
Aruna Figeroa
Johnson Sergi
Francesco Shinko
Ashley Doe
Ivar Paprocki
Stacey Maclead
Misaki Royster
Jeanfrancois Venere
Jennifer Amigon
Wickens Nestle
Claire Tollner
Morrow Ruta
Mujtaba Nicka
Adams Morasca
Claire Tollner
Tony Foller
Kadeem Flosi
Rodrigues Campain
Johnson Sergi
Aditya Kusko
Aruna Figeroa
Octavia Malet
James Butt
Alejandro Perin
Stacey Maclead
Morrow Ruta
Johnson Sergi
David Darakjy
Juan Wieser
Francesco Shinko
Deepesh Chui
Cody Saylors
Leja Caldarera
Jennifer Amigon
Claire Tollner
Darci Poquette
Salvatore Stockham
Jones Vocelka
Morrow Ruta
Julie Stenseth
Smith Glick
Ashley Doe
IdCountryDate
1000Australia2026-06-02
1001Canada2026-06-14
1002Argentina2026-06-13
1003India2026-05-29
1004Australia2026-06-10
1005Russia2026-06-08
1006Australia2026-05-31
1007Japan2026-05-27
1008Spain2026-06-06
1009Russia2026-05-25
1010Russia2026-06-21
1011United Kingdom2026-06-02
1012Canada2026-06-10
1013Germany2026-05-24
1014Brazil2026-06-17
1015Russia2026-05-24
1016Italy2026-06-01
1017Russia2026-06-21
1018Germany2026-06-08
1019United Kingdom2026-05-28
1020United Kingdom2026-06-21
1021Spain2026-06-05
1022India2026-05-25
1023United Kingdom2026-05-29
1024Germany2026-06-06
1025Spain2026-06-15
1026Australia2026-06-04
1027Spain2026-06-20
1028India2026-06-07
1029United Kingdom2026-06-10
1030Italy2026-06-14
1031India2026-06-06
1032Spain2026-05-24
1033United Kingdom2026-06-05
1034France2026-06-18
1035Argentina2026-06-02
1036Argentina2026-06-16
1037India2026-06-14
1038Australia2026-06-22
1039Italy2026-06-03
1040Australia2026-06-03
1041India2026-05-30
1042India2026-06-10
1043Canada2026-06-04
1044Australia2026-06-14
1045India2026-06-20
1046Italy2026-06-05
1047India2026-06-17
1048Australia2026-06-16
1049Canada2026-06-21

On-Demand Data

NameIdCountryDate
Costa Dilliard1000France2026-05-24
Leja Caldarera1001Brazil2026-05-24
Isabel Bowley1002Japan2026-06-13
Faith Gillian1003United Kingdom2026-06-05
Ivar Paprocki1004Japan2026-06-10
David Darakjy1005Brazil2026-05-26
Isabel Bowley1006Spain2026-06-17
Darci Poquette1007Australia2026-06-16
Arvin Albares1008Italy2026-06-18
Munro Ferencz1009Argentina2026-05-24
Cody Saylors1010Italy2026-06-13
Clifford Rim1011Italy2026-06-03
Smith Glick1012Brazil2026-05-28
Silvio Slusarski1013Italy2026-06-17
Clifford Rim1014Australia2026-06-17
Alejandro Perin1015Argentina2026-05-27
Izzy Garufi1016Japan2026-06-03
Octavia Malet1017Russia2026-06-22
Johnson Sergi1018Australia2026-06-07
Antonio Caudy1019Canada2026-05-25
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Nicolas IturbideJapanAmy Elsner NEGOTIATION
Ashley DoeUnited KingdomXuxue Feng NEGOTIATION
Julie StensethArgentinaXuxue Feng RENEWAL
Izzy GarufiItalyStephen Shaw QUALIFIED
Nicolas IturbideRussiaAmy Elsner NEW
Wickens NestleAustraliaAmy Elsner QUALIFIED
Emily WhobreyCanadaXuxue Feng NEW
Adams MorascaIndiaAmy Elsner UNQUALIFIED
Ashley DoeIndiaAmy Elsner UNQUALIFIED
Johnson SergiIndiaOnyama Limba NEGOTIATION
Julie StensethItalyIoni Bowcher NEW
Jones VocelkaArgentinaAnna Fali UNQUALIFIED
Izzy GarufiJapanIvan Magalhaes NEW
Arvin AlbaresBrazilAmy Elsner PROPOSAL
Maria MarrierIndiaIvan Magalhaes QUALIFIED
Mujtaba NickaUnited KingdomElwin Sharvill NEW
Johnson SergiAustraliaAmy Elsner NEW
Adams MorascaJapanXuxue Feng NEW
Kaitlin OstroskyFranceAmy Elsner QUALIFIED
Ricardo GauchoArgentinaOnyama Limba NEW
Francesco ShinkoGermanyAmy Elsner RENEWAL
Misaki RoysterBrazilAnna Fali RENEWAL
Maria MarrierCanadaStephen Shaw QUALIFIED
Silvio SlusarskiBrazilBernardo Dominic PROPOSAL
Jones VocelkaFranceAsiya Javayant NEGOTIATION
Ricardo GauchoFranceAnna Fali NEGOTIATION
Silvio SlusarskiSpainAnna Fali UNQUALIFIED
Aruna FigeroaRussiaOnyama Limba UNQUALIFIED
Maisha RulapaughFranceAsiya Javayant NEW
Smith GlickUnited KingdomBernardo Dominic NEGOTIATION
Aditya KuskoCanadaIvan Magalhaes PROPOSAL
Jones VocelkaJapanAmy Elsner PROPOSAL
Smith GlickUnited KingdomAsiya Javayant NEW
Wickens NestleBrazilOnyama Limba UNQUALIFIED
Arvin AlbaresRussiaAsiya Javayant UNQUALIFIED
Izzy GarufiCanadaXuxue Feng NEGOTIATION
Alejandro PerinUnited KingdomStephen Shaw NEW
Greenwood BologniaRussiaBernardo Dominic NEGOTIATION
Jeanfrancois VenereAustraliaXuxue Feng RENEWAL
Nicolas IturbideFranceOnyama Limba NEGOTIATION

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