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
Munro FerenczCanadaStephen Shaw NEW
Jennifer AmigonJapanXuxue Feng QUALIFIED
Adams MorascaFranceStephen Shaw UNQUALIFIED
Alejandro PerinArgentinaIvan Magalhaes NEGOTIATION
Wickens NestleIndiaElwin Sharvill NEGOTIATION
Claire TollnerBrazilAsiya Javayant QUALIFIED
Chavez BriddickGermanyStephen Shaw UNQUALIFIED
Rodrigues CampainUnited KingdomXuxue Feng QUALIFIED
Arvin AlbaresSpainIvan Magalhaes UNQUALIFIED
Mayumi KolmetzIndiaElwin Sharvill QUALIFIED
Cody SaylorsArgentinaAsiya Javayant QUALIFIED
Darci PoquetteAustraliaXuxue Feng RENEWAL
Octavia MaletUnited KingdomAmy Elsner QUALIFIED
Silvio SlusarskiFranceStephen Shaw PROPOSAL
Jones VocelkaItalyBernardo Dominic NEW
James ButtUnited KingdomIoni Bowcher RENEWAL
Julie StensethUnited KingdomXuxue Feng QUALIFIED
Stacey MacleadGermanyAmy Elsner NEW
Maisha RulapaughCanadaElwin Sharvill RENEWAL
David DarakjyFranceIoni Bowcher NEGOTIATION
Faith GillianCanadaStephen Shaw PROPOSAL
Julie StensethArgentinaIvan Magalhaes UNQUALIFIED
Claire TollnerBrazilBernardo Dominic RENEWAL
Jefferson SchemmerUnited KingdomAmy Elsner NEGOTIATION
Chavez BriddickGermanyIoni Bowcher NEGOTIATION
Sinclair WaycottItalyOnyama Limba QUALIFIED
Chavez BriddickUnited KingdomBernardo Dominic NEGOTIATION
Wickens NestleRussiaXuxue Feng NEW
Jefferson SchemmerSpainBernardo Dominic NEGOTIATION
Leon OldroydGermanyXuxue Feng NEW
Silvio SlusarskiAustraliaAmy Elsner QUALIFIED
Greenwood BologniaFranceStephen Shaw NEW
Misaki RoysterJapanAnna Fali UNQUALIFIED
Clifford RimJapanBernardo Dominic NEGOTIATION
Emily WhobreyRussiaAmy Elsner NEGOTIATION
Aditya KuskoItalyAmy Elsner QUALIFIED
Leja CaldareraSpainIvan Magalhaes NEW
Leon OldroydUnited KingdomIoni Bowcher UNQUALIFIED
Jefferson SchemmerAustraliaAmy Elsner NEGOTIATION
Isabel BowleySpainStephen Shaw RENEWAL
Sinclair WaycottJapanXuxue Feng NEGOTIATION
Antonio CaudyAustraliaAnna Fali UNQUALIFIED
Salvatore StockhamUnited KingdomStephen Shaw NEGOTIATION
Octavia MaletArgentinaIvan Magalhaes UNQUALIFIED
Jeanfrancois VenereRussiaBernardo Dominic QUALIFIED
Aruna FigeroaItalyIoni Bowcher RENEWAL
Kadeem FlosiIndiaAsiya Javayant PROPOSAL
Wickens NestleJapanOnyama Limba QUALIFIED
Mujtaba NickaItalyIvan Magalhaes UNQUALIFIED
Julie StensethSpainOnyama Limba RENEWAL
Horizontal
NameCountryRepresentativeStatus
Aditya KuskoJapanElwin Sharvill NEGOTIATION
Jennifer AmigonIndiaAmy Elsner PROPOSAL
Emily WhobreyAustraliaBernardo Dominic NEGOTIATION
Deepesh ChuiFranceElwin Sharvill QUALIFIED
Smith GlickRussiaAnna Fali NEW
Maisha RulapaughItalyIvan Magalhaes NEGOTIATION
Misaki RoysterAustraliaAnna Fali NEW
Sinclair WaycottBrazilBernardo Dominic UNQUALIFIED
Jefferson SchemmerAustraliaIvan Magalhaes QUALIFIED
Maisha RulapaughItalyElwin Sharvill NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jefferson SchemmerSpain2026-04-25Chanay, Jeffrey A Esq RENEWAL25Elwin Sharvill
1001Stacey MacleadUnited Kingdom2026-04-16Morlong Associates UNQUALIFIED82Bernardo Dominic
1002Smith GlickFrance2026-04-17Feiner Bros NEGOTIATION80Bernardo Dominic
1003James ButtJapan2026-04-23Truhlar And Truhlar Attys PROPOSAL10Bernardo Dominic
1004James ButtRussia2026-04-22Chapman, Ross E Esq QUALIFIED16Ioni Bowcher
1005Leon OldroydFrance2026-04-26Feiner Bros NEW4Stephen Shaw
1006Ivar PaprockiArgentina2026-05-04Printing Dimensions PROPOSAL51Elwin Sharvill
1007Mujtaba NickaGermany2026-05-05King, Christopher A Esq UNQUALIFIED62Elwin Sharvill
1008Ricardo GauchoFrance2026-05-03Morlong Associates QUALIFIED47Ivan Magalhaes
1009Johnson SergiRussia2026-05-05Printing Dimensions PROPOSAL72Ioni Bowcher
1010Salvatore StockhamRussia2026-04-29Truhlar And Truhlar Attys NEGOTIATION38Xuxue Feng
1011Nicolas IturbideRussia2026-04-27Feltz Printing Service NEGOTIATION41Ioni Bowcher
1012Rodrigues CampainArgentina2026-05-15Morlong Associates UNQUALIFIED15Stephen Shaw
1013Claire TollnerItaly2026-04-18Printing Dimensions NEGOTIATION6Anna Fali
1014Sinclair WaycottUnited Kingdom2026-05-14Chemel, James L Cpa QUALIFIED85Ioni Bowcher
1015Misaki RoysterCanada2026-04-17Chanay, Jeffrey A Esq UNQUALIFIED28Xuxue Feng
1016Isabel BowleyIndia2026-05-14Commercial Press PROPOSAL66Amy Elsner
1017Ashley DoeFrance2026-05-15Feiner Bros QUALIFIED90Amy Elsner
1018Isabel BowleyCanada2026-05-05King, Christopher A Esq NEGOTIATION60Stephen Shaw
1019James ButtItaly2026-05-01Morlong Associates RENEWAL83Amy Elsner
1020Misaki RoysterBrazil2026-04-24Benton, John B Jr PROPOSAL52Elwin Sharvill
1021Izzy GarufiUnited Kingdom2026-04-23Chanay, Jeffrey A Esq NEW13Stephen Shaw
1022Aika InouyeAustralia2026-04-28Chanay, Jeffrey A Esq NEGOTIATION18Onyama Limba
1023Clifford RimRussia2026-05-06Morlong Associates NEGOTIATION89Xuxue Feng
1024Ivar PaprockiArgentina2026-05-02Rousseaux, Michael Esq NEGOTIATION82Asiya Javayant
1025Clifford RimGermany2026-05-14Feiner Bros RENEWAL51Anna Fali
1026David DarakjyRussia2026-05-15Benton, John B Jr QUALIFIED11Stephen Shaw
1027Johnson SergiBrazil2026-04-20Buckley Miller Wright UNQUALIFIED71Anna Fali
1028Munro FerenczBrazil2026-05-01Feiner Bros QUALIFIED91Anna Fali
1029Aika InouyeCanada2026-05-15Morlong Associates UNQUALIFIED6Amy Elsner
1030Kaitlin OstroskyJapan2026-05-02Chanay, Jeffrey A Esq NEW81Amy Elsner
1031Cody SaylorsArgentina2026-04-29Buckley Miller Wright PROPOSAL34Anna Fali
1032Ivar PaprockiArgentina2026-04-30Rangoni Of Florence PROPOSAL90Elwin Sharvill
1033Morrow RutaArgentina2026-05-08Feiner Bros QUALIFIED23Stephen Shaw
1034Isabel BowleyFrance2026-04-30Commercial Press NEGOTIATION91Elwin Sharvill
1035Mayumi KolmetzBrazil2026-04-26King, Christopher A Esq NEGOTIATION7Bernardo Dominic
1036Sinclair WaycottGermany2026-05-10Feiner Bros UNQUALIFIED31Xuxue Feng
1037Aditya KuskoJapan2026-05-10Buckley Miller Wright RENEWAL94Bernardo Dominic
1038Silvio SlusarskiBrazil2026-04-26Commercial Press NEGOTIATION81Ioni Bowcher
1039Cody SaylorsItaly2026-05-13Printing Dimensions NEGOTIATION74Ioni Bowcher
1040Kaitlin OstroskyArgentina2026-04-20Buckley Miller Wright NEW59Ivan Magalhaes
1041Isabel BowleyRussia2026-05-04Chanay, Jeffrey A Esq NEW78Anna Fali
1042Nicolas IturbideJapan2026-05-02Benton, John B Jr RENEWAL81Amy Elsner
1043Greenwood BologniaUnited Kingdom2026-05-13Truhlar And Truhlar Attys UNQUALIFIED3Ivan Magalhaes
1044Izzy GarufiItaly2026-05-10Buckley Miller Wright NEGOTIATION18Asiya Javayant
1045David DarakjyUnited Kingdom2026-05-14Chanay, Jeffrey A Esq NEGOTIATION69Bernardo Dominic
1046Munro FerenczGermany2026-05-02Printing Dimensions UNQUALIFIED20Onyama Limba
1047Tony FollerGermany2026-04-30Feltz Printing Service PROPOSAL99Anna Fali
1048Darci PoquetteIndia2026-04-21King, Christopher A Esq NEW78Onyama Limba
1049Ivar PaprockiArgentina2026-05-12Printing Dimensions RENEWAL50Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Murillo MaletRussiaIvan Magalhaes RENEWAL
Izzy GarufiItalyAsiya Javayant NEW
Mayumi KolmetzAustraliaStephen Shaw NEGOTIATION
Aika InouyeBrazilIoni Bowcher QUALIFIED
Maria MarrierBrazilOnyama Limba UNQUALIFIED
Smith GlickGermanyAsiya Javayant QUALIFIED
Claire TollnerFranceAsiya Javayant NEGOTIATION
Mujtaba NickaSpainIoni Bowcher NEW
David DarakjyItalyAsiya Javayant NEW
Arvin AlbaresFranceOnyama Limba RENEWAL
Claire TollnerSpainAnna Fali UNQUALIFIED
James ButtIndiaElwin Sharvill UNQUALIFIED
Jeanfrancois VenereJapanStephen Shaw PROPOSAL
Francesco ShinkoFranceAmy Elsner NEGOTIATION
Darci PoquetteIndiaAsiya Javayant RENEWAL
Alejandro PerinAustraliaXuxue Feng RENEWAL
Aruna FigeroaAustraliaIoni Bowcher NEGOTIATION
Jones VocelkaSpainBernardo Dominic QUALIFIED
Munro FerenczGermanyElwin Sharvill UNQUALIFIED
Julie StensethBrazilIoni Bowcher RENEWAL
Misaki RoysterFranceElwin Sharvill RENEWAL
Morrow RutaGermanyBernardo Dominic NEW
Jeanfrancois VenereIndiaXuxue Feng UNQUALIFIED
Aditya KuskoFranceAmy Elsner PROPOSAL
Greenwood BologniaSpainAnna Fali NEGOTIATION
Alejandro PerinSpainAnna Fali RENEWAL
Wickens NestleBrazilXuxue Feng UNQUALIFIED
Kaitlin OstroskyUnited KingdomAnna Fali PROPOSAL
Jennifer AmigonSpainOnyama Limba QUALIFIED
Julie StensethSpainBernardo Dominic NEW
Clifford RimIndiaBernardo Dominic UNQUALIFIED
Julie StensethRussiaOnyama Limba NEW
Ivar PaprockiAustraliaElwin Sharvill UNQUALIFIED
Cody SaylorsIndiaXuxue Feng PROPOSAL
Aika InouyeArgentinaBernardo Dominic QUALIFIED
Arvin AlbaresJapanAsiya Javayant QUALIFIED
Claire TollnerBrazilIvan Magalhaes PROPOSAL
Nicolas IturbideJapanIoni Bowcher RENEWAL
Leon OldroydUnited KingdomXuxue Feng RENEWAL
Nicolas IturbideBrazilBernardo Dominic NEW
Rodrigues CampainIndiaOnyama Limba PROPOSAL
Izzy GarufiAustraliaBernardo Dominic UNQUALIFIED
Izzy GarufiCanadaBernardo Dominic RENEWAL
Greenwood BologniaItalyAmy Elsner PROPOSAL
Costa DilliardUnited KingdomAnna Fali RENEWAL
Chavez BriddickArgentinaStephen Shaw RENEWAL
Ricardo GauchoRussiaOnyama Limba QUALIFIED
Antonio CaudyUnited KingdomIvan Magalhaes QUALIFIED
Claire TollnerSpainStephen Shaw NEGOTIATION
Aditya KuskoJapanStephen Shaw NEGOTIATION
Frozen Columns
Name
Wickens Nestle
David Darakjy
Ashley Doe
Leja Caldarera
Aruna Figeroa
Isabel Bowley
Rodrigues Campain
Jones Vocelka
Smith Glick
Sinclair Waycott
Izzy Garufi
Ivar Paprocki
Kadeem Flosi
Johnson Sergi
Izzy Garufi
Nicolas Iturbide
Rodrigues Campain
Aruna Figeroa
Tony Foller
Munro Ferencz
Murillo Malet
Isabel Bowley
Nicolas Iturbide
Murillo Malet
Isabel Bowley
Johnson Sergi
Mujtaba Nicka
Aruna Figeroa
Octavia Malet
Tony Foller
Francesco Shinko
Octavia Malet
Mayumi Kolmetz
Smith Glick
Murillo Malet
Maria Marrier
Jennifer Amigon
Ricardo Gaucho
Salvatore Stockham
Jeanfrancois Venere
Julie Stenseth
Antonio Caudy
Kaitlin Ostrosky
Julie Stenseth
Ivar Paprocki
Aditya Kusko
Maria Marrier
Johnson Sergi
Morrow Ruta
Mayumi Kolmetz
IdCountryDate
1000Argentina2026-04-18
1001Spain2026-05-10
1002Argentina2026-04-17
1003Brazil2026-05-15
1004Canada2026-04-27
1005Canada2026-05-05
1006Brazil2026-04-28
1007Italy2026-05-12
1008Canada2026-05-01
1009France2026-05-10
1010Japan2026-04-19
1011Italy2026-05-04
1012Germany2026-04-23
1013Italy2026-05-05
1014Canada2026-04-22
1015France2026-05-08
1016France2026-04-20
1017Argentina2026-05-11
1018France2026-04-17
1019Argentina2026-04-27
1020Argentina2026-05-12
1021Argentina2026-04-20
1022Italy2026-04-28
1023Russia2026-05-09
1024United Kingdom2026-05-01
1025United Kingdom2026-04-17
1026India2026-05-11
1027Germany2026-05-02
1028France2026-05-03
1029India2026-05-08
1030United Kingdom2026-05-11
1031Japan2026-05-13
1032Japan2026-04-28
1033India2026-04-28
1034United Kingdom2026-04-30
1035Canada2026-04-16
1036Australia2026-05-06
1037Brazil2026-04-21
1038United Kingdom2026-05-08
1039United Kingdom2026-05-06
1040Australia2026-04-19
1041France2026-04-28
1042Germany2026-05-08
1043Argentina2026-04-22
1044United Kingdom2026-05-12
1045India2026-05-07
1046Germany2026-05-04
1047Brazil2026-04-21
1048France2026-04-21
1049Argentina2026-04-28

On-Demand Data

NameIdCountryDate
Greenwood Bolognia1000India2026-05-12
Wickens Nestle1001Japan2026-04-21
Maria Marrier1002Italy2026-05-02
Rodrigues Campain1003India2026-04-30
Morrow Ruta1004United Kingdom2026-04-23
Julie Stenseth1005Italy2026-05-06
Maisha Rulapaugh1006India2026-04-25
Tony Foller1007Italy2026-04-30
Mayumi Kolmetz1008France2026-05-06
Murillo Malet1009Spain2026-05-14
Antonio Caudy1010Brazil2026-05-06
Ivar Paprocki1011Australia2026-05-02
Aika Inouye1012Brazil2026-04-28
Ashley Doe1013India2026-04-18
Murillo Malet1014Spain2026-05-11
Kaitlin Ostrosky1015Argentina2026-04-16
Ivar Paprocki1016Spain2026-05-10
Wickens Nestle1017Argentina2026-05-03
Maria Marrier1018Italy2026-05-01
Juan Wieser1019Japan2026-04-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Costa DilliardGermanyBernardo Dominic NEGOTIATION
Aditya KuskoBrazilAnna Fali NEGOTIATION
Greenwood BologniaCanadaIvan Magalhaes PROPOSAL
Izzy GarufiCanadaAnna Fali UNQUALIFIED
Juan WieserAustraliaAsiya Javayant NEW
Ashley DoeSpainIvan Magalhaes NEW
Johnson SergiUnited KingdomIoni Bowcher NEW
Isabel BowleyBrazilIoni Bowcher UNQUALIFIED
Mayumi KolmetzBrazilBernardo Dominic QUALIFIED
Wickens NestleJapanStephen Shaw UNQUALIFIED
Chavez BriddickUnited KingdomAmy Elsner NEW
Antonio CaudyJapanAmy Elsner UNQUALIFIED
Stacey MacleadSpainBernardo Dominic NEW
Darci PoquetteCanadaElwin Sharvill RENEWAL
Greenwood BologniaRussiaStephen Shaw UNQUALIFIED
Greenwood BologniaBrazilOnyama Limba RENEWAL
James ButtGermanyXuxue Feng NEGOTIATION
Greenwood BologniaBrazilAmy Elsner QUALIFIED
James ButtIndiaAnna Fali NEGOTIATION
Cody SaylorsItalyXuxue Feng UNQUALIFIED
Maria MarrierCanadaElwin Sharvill PROPOSAL
Cody SaylorsFranceAsiya Javayant UNQUALIFIED
Francesco ShinkoFranceAmy Elsner NEGOTIATION
Murillo MaletCanadaXuxue Feng NEGOTIATION
Arvin AlbaresIndiaOnyama Limba PROPOSAL
Jennifer AmigonSpainAsiya Javayant NEW
Clifford RimGermanyIoni Bowcher UNQUALIFIED
Darci PoquetteGermanyAmy Elsner PROPOSAL
Adams MorascaRussiaAsiya Javayant RENEWAL
Faith GillianSpainOnyama Limba UNQUALIFIED
Aditya KuskoGermanyElwin Sharvill QUALIFIED
Emily WhobreyRussiaBernardo Dominic NEGOTIATION
Maria MarrierGermanyIoni Bowcher RENEWAL
Francesco ShinkoIndiaStephen Shaw PROPOSAL
Smith GlickRussiaElwin Sharvill NEGOTIATION
Ivar PaprockiFranceBernardo Dominic QUALIFIED
Salvatore StockhamCanadaAsiya Javayant QUALIFIED
Juan WieserArgentinaElwin Sharvill NEGOTIATION
Maria MarrierBrazilAnna Fali RENEWAL
Kaitlin OstroskyCanadaStephen Shaw 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>