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
James ButtUnited KingdomAmy Elsner NEGOTIATION
Aruna FigeroaFranceBernardo Dominic QUALIFIED
Izzy GarufiBrazilElwin Sharvill NEW
Salvatore StockhamArgentinaAnna Fali NEW
Mayumi KolmetzFranceAnna Fali QUALIFIED
Darci PoquetteAustraliaBernardo Dominic QUALIFIED
Wickens NestleCanadaAmy Elsner RENEWAL
Munro FerenczIndiaElwin Sharvill QUALIFIED
James ButtIndiaBernardo Dominic UNQUALIFIED
Kadeem FlosiItalyBernardo Dominic NEW
Cody SaylorsRussiaElwin Sharvill NEW
Jefferson SchemmerJapanAmy Elsner UNQUALIFIED
Claire TollnerGermanyElwin Sharvill UNQUALIFIED
Ashley DoeUnited KingdomAmy Elsner QUALIFIED
Kadeem FlosiIndiaOnyama Limba PROPOSAL
Aika InouyeItalyAsiya Javayant QUALIFIED
Murillo MaletArgentinaAmy Elsner PROPOSAL
Murillo MaletAustraliaXuxue Feng NEW
Deepesh ChuiGermanyElwin Sharvill UNQUALIFIED
Silvio SlusarskiBrazilOnyama Limba NEW
Francesco ShinkoCanadaAsiya Javayant QUALIFIED
Cody SaylorsJapanXuxue Feng QUALIFIED
Maria MarrierUnited KingdomBernardo Dominic QUALIFIED
Deepesh ChuiSpainElwin Sharvill UNQUALIFIED
Jeanfrancois VenereRussiaIoni Bowcher UNQUALIFIED
Maria MarrierAustraliaAnna Fali QUALIFIED
Misaki RoysterFranceIvan Magalhaes UNQUALIFIED
Izzy GarufiIndiaAnna Fali UNQUALIFIED
Ivar PaprockiCanadaAsiya Javayant RENEWAL
Mayumi KolmetzJapanOnyama Limba NEGOTIATION
Costa DilliardArgentinaAnna Fali NEGOTIATION
Kadeem FlosiGermanyBernardo Dominic NEGOTIATION
Nicolas IturbideArgentinaXuxue Feng NEGOTIATION
Aruna FigeroaAustraliaStephen Shaw QUALIFIED
Jeanfrancois VenereArgentinaBernardo Dominic NEGOTIATION
David DarakjySpainBernardo Dominic NEW
Alejandro PerinUnited KingdomAmy Elsner NEGOTIATION
Leja CaldareraArgentinaAmy Elsner QUALIFIED
Ashley DoeSpainAmy Elsner PROPOSAL
Kaitlin OstroskyRussiaXuxue Feng UNQUALIFIED
Greenwood BologniaJapanIvan Magalhaes NEW
Mujtaba NickaIndiaStephen Shaw UNQUALIFIED
Morrow RutaItalyAnna Fali NEW
Costa DilliardGermanyAsiya Javayant UNQUALIFIED
Deepesh ChuiRussiaAnna Fali QUALIFIED
Greenwood BologniaUnited KingdomXuxue Feng QUALIFIED
Darci PoquetteArgentinaAmy Elsner NEW
David DarakjyArgentinaIvan Magalhaes UNQUALIFIED
David DarakjyItalyAmy Elsner QUALIFIED
Smith GlickCanadaXuxue Feng QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Deepesh ChuiUnited KingdomAsiya Javayant NEW
Kaitlin OstroskyRussiaIvan Magalhaes UNQUALIFIED
Adams MorascaRussiaAmy Elsner NEW
Darci PoquetteCanadaAmy Elsner QUALIFIED
Isabel BowleyBrazilIoni Bowcher RENEWAL
Salvatore StockhamJapanElwin Sharvill NEGOTIATION
Leon OldroydRussiaBernardo Dominic QUALIFIED
Julie StensethUnited KingdomXuxue Feng NEGOTIATION
Smith GlickUnited KingdomIvan Magalhaes QUALIFIED
Costa DilliardAustraliaIvan Magalhaes UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Rodrigues CampainRussia2026-05-11Truhlar And Truhlar Attys QUALIFIED0Anna Fali
1001Silvio SlusarskiIndia2026-05-16Morlong Associates NEW68Elwin Sharvill
1002Julie StensethItaly2026-05-02Feltz Printing Service NEGOTIATION5Ioni Bowcher
1003Faith GillianUnited Kingdom2026-05-17Truhlar And Truhlar Attys PROPOSAL82Anna Fali
1004Aruna FigeroaJapan2026-05-08Chanay, Jeffrey A Esq QUALIFIED77Xuxue Feng
1005Aditya KuskoBrazil2026-05-14Rousseaux, Michael Esq QUALIFIED42Ioni Bowcher
1006Jones VocelkaBrazil2026-05-03Chemel, James L Cpa NEW24Anna Fali
1007Isabel BowleyAustralia2026-04-27Commercial Press NEW78Asiya Javayant
1008Antonio CaudyIndia2026-04-27Benton, John B Jr UNQUALIFIED63Asiya Javayant
1009Maria MarrierBrazil2026-05-14Rousseaux, Michael Esq NEW30Amy Elsner
1010Jones VocelkaUnited Kingdom2026-05-15King, Christopher A Esq UNQUALIFIED9Xuxue Feng
1011Jennifer AmigonItaly2026-05-24Chemel, James L Cpa NEGOTIATION28Bernardo Dominic
1012Silvio SlusarskiRussia2026-05-02Dorl, James J Esq UNQUALIFIED79Onyama Limba
1013Sinclair WaycottFrance2026-05-25Feltz Printing Service QUALIFIED49Onyama Limba
1014Nicolas IturbideSpain2026-05-07Chemel, James L Cpa RENEWAL99Ioni Bowcher
1015Alejandro PerinAustralia2026-04-28Rangoni Of Florence RENEWAL15Elwin Sharvill
1016Jeanfrancois VenereJapan2026-05-18Truhlar And Truhlar Attys RENEWAL76Asiya Javayant
1017Murillo MaletGermany2026-05-18Morlong Associates NEW76Xuxue Feng
1018Darci PoquetteCanada2026-04-30Feiner Bros PROPOSAL65Amy Elsner
1019Murillo MaletJapan2026-05-10Chemel, James L Cpa UNQUALIFIED0Elwin Sharvill
1020Leon OldroydAustralia2026-05-08Rousseaux, Michael Esq NEGOTIATION18Ivan Magalhaes
1021Jennifer AmigonCanada2026-05-12Rousseaux, Michael Esq NEW2Onyama Limba
1022Leon OldroydUnited Kingdom2026-05-12Rousseaux, Michael Esq QUALIFIED38Amy Elsner
1023Sinclair WaycottAustralia2026-05-13Buckley Miller Wright NEW96Ivan Magalhaes
1024Jennifer AmigonItaly2026-05-22Rousseaux, Michael Esq UNQUALIFIED27Ivan Magalhaes
1025Ashley DoeAustralia2026-04-29Dorl, James J Esq QUALIFIED22Ioni Bowcher
1026Greenwood BologniaFrance2026-04-29Buckley Miller Wright UNQUALIFIED76Bernardo Dominic
1027James ButtJapan2026-05-12Benton, John B Jr QUALIFIED78Amy Elsner
1028Adams MorascaRussia2026-05-24Truhlar And Truhlar Attys NEW17Anna Fali
1029Jones VocelkaFrance2026-04-29Rousseaux, Michael Esq UNQUALIFIED40Anna Fali
1030Jeanfrancois VenereJapan2026-05-05Feiner Bros UNQUALIFIED82Anna Fali
1031Isabel BowleyItaly2026-05-13Feltz Printing Service NEGOTIATION67Elwin Sharvill
1032Izzy GarufiUnited Kingdom2026-05-14Morlong Associates NEW86Bernardo Dominic
1033Claire TollnerAustralia2026-05-25Morlong Associates NEW3Ivan Magalhaes
1034Nicolas IturbideItaly2026-05-22Printing Dimensions NEGOTIATION32Amy Elsner
1035Murillo MaletItaly2026-05-11Printing Dimensions NEGOTIATION97Asiya Javayant
1036Julie StensethRussia2026-05-20Commercial Press RENEWAL3Ioni Bowcher
1037Costa DilliardCanada2026-05-18Feltz Printing Service NEW57Xuxue Feng
1038Wickens NestleSpain2026-05-13Chapman, Ross E Esq UNQUALIFIED11Onyama Limba
1039Johnson SergiAustralia2026-05-10Dorl, James J Esq NEW49Xuxue Feng
1040Octavia MaletArgentina2026-05-18Rousseaux, Michael Esq PROPOSAL92Stephen Shaw
1041Wickens NestleUnited Kingdom2026-05-03Printing Dimensions QUALIFIED27Stephen Shaw
1042Johnson SergiIndia2026-05-05Printing Dimensions NEGOTIATION28Anna Fali
1043Aika InouyeItaly2026-04-30Truhlar And Truhlar Attys NEW46Anna Fali
1044Isabel BowleyAustralia2026-05-05Printing Dimensions QUALIFIED92Onyama Limba
1045Misaki RoysterJapan2026-05-22Buckley Miller Wright NEGOTIATION72Stephen Shaw
1046Salvatore StockhamFrance2026-05-20Chapman, Ross E Esq NEGOTIATION21Asiya Javayant
1047Greenwood BologniaGermany2026-05-16Feiner Bros PROPOSAL29Bernardo Dominic
1048Leja CaldareraItaly2026-05-02Buckley Miller Wright RENEWAL23Xuxue Feng
1049Claire TollnerArgentina2026-05-03Chapman, Ross E Esq QUALIFIED1Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Faith GillianGermanyXuxue Feng NEGOTIATION
Octavia MaletFranceElwin Sharvill RENEWAL
Murillo MaletCanadaOnyama Limba PROPOSAL
Munro FerenczFranceIvan Magalhaes QUALIFIED
Darci PoquetteSpainAmy Elsner PROPOSAL
Isabel BowleyCanadaBernardo Dominic PROPOSAL
Johnson SergiUnited KingdomOnyama Limba PROPOSAL
Antonio CaudyIndiaXuxue Feng PROPOSAL
Maria MarrierCanadaStephen Shaw UNQUALIFIED
Mayumi KolmetzAustraliaElwin Sharvill NEGOTIATION
Alejandro PerinJapanAmy Elsner QUALIFIED
Murillo MaletGermanyIoni Bowcher NEGOTIATION
Tony FollerArgentinaAnna Fali RENEWAL
Faith GillianAustraliaAnna Fali QUALIFIED
Francesco ShinkoCanadaIvan Magalhaes UNQUALIFIED
Juan WieserCanadaAnna Fali QUALIFIED
David DarakjyRussiaAnna Fali PROPOSAL
Mayumi KolmetzRussiaStephen Shaw QUALIFIED
Adams MorascaUnited KingdomAsiya Javayant NEGOTIATION
Jeanfrancois VenereGermanyOnyama Limba QUALIFIED
Leja CaldareraGermanyOnyama Limba QUALIFIED
Darci PoquetteSpainIoni Bowcher UNQUALIFIED
Isabel BowleyArgentinaElwin Sharvill QUALIFIED
Julie StensethCanadaAnna Fali QUALIFIED
Jones VocelkaAustraliaAsiya Javayant NEGOTIATION
Jones VocelkaRussiaAnna Fali RENEWAL
Cody SaylorsItalyElwin Sharvill NEGOTIATION
Isabel BowleyArgentinaElwin Sharvill RENEWAL
Leon OldroydArgentinaStephen Shaw NEGOTIATION
Arvin AlbaresArgentinaIvan Magalhaes UNQUALIFIED
Ashley DoeIndiaXuxue Feng NEGOTIATION
Sinclair WaycottUnited KingdomIvan Magalhaes RENEWAL
Claire TollnerItalyIvan Magalhaes RENEWAL
Jefferson SchemmerCanadaAnna Fali NEW
Izzy GarufiRussiaStephen Shaw QUALIFIED
Juan WieserRussiaAsiya Javayant NEGOTIATION
Faith GillianAustraliaAnna Fali UNQUALIFIED
Aika InouyeIndiaAsiya Javayant RENEWAL
Silvio SlusarskiFranceAsiya Javayant NEGOTIATION
Kadeem FlosiItalyAmy Elsner RENEWAL
Leon OldroydArgentinaXuxue Feng NEW
Maisha RulapaughArgentinaElwin Sharvill RENEWAL
Murillo MaletCanadaIvan Magalhaes UNQUALIFIED
Aditya KuskoItalyBernardo Dominic PROPOSAL
Mujtaba NickaUnited KingdomAsiya Javayant NEW
Morrow RutaAustraliaAsiya Javayant PROPOSAL
Jennifer AmigonIndiaIvan Magalhaes NEGOTIATION
Greenwood BologniaArgentinaAnna Fali NEW
Jennifer AmigonIndiaAmy Elsner NEW
Stacey MacleadRussiaAsiya Javayant RENEWAL
Frozen Columns
Name
Cody Saylors
Francesco Shinko
Tony Foller
Silvio Slusarski
Maisha Rulapaugh
Rodrigues Campain
Arvin Albares
Izzy Garufi
Julie Stenseth
Faith Gillian
Rodrigues Campain
Faith Gillian
Leon Oldroyd
Morrow Ruta
Smith Glick
Misaki Royster
Mayumi Kolmetz
Jones Vocelka
Isabel Bowley
Mayumi Kolmetz
Mayumi Kolmetz
Misaki Royster
Alejandro Perin
Jones Vocelka
Ashley Doe
Mujtaba Nicka
Salvatore Stockham
Ivar Paprocki
Morrow Ruta
Emily Whobrey
Jones Vocelka
Chavez Briddick
Maria Marrier
Tony Foller
Ivar Paprocki
Munro Ferencz
Jeanfrancois Venere
Munro Ferencz
Leja Caldarera
Mujtaba Nicka
Isabel Bowley
Jefferson Schemmer
Costa Dilliard
Johnson Sergi
Rodrigues Campain
Aruna Figeroa
Clifford Rim
Maisha Rulapaugh
Francesco Shinko
Murillo Malet
IdCountryDate
1000Russia2026-05-22
1001Russia2026-04-27
1002Italy2026-05-10
1003Argentina2026-05-22
1004Argentina2026-05-23
1005Russia2026-05-20
1006Italy2026-05-26
1007Australia2026-05-17
1008Australia2026-04-30
1009Argentina2026-05-21
1010Australia2026-05-19
1011France2026-05-18
1012Spain2026-05-10
1013Argentina2026-05-18
1014United Kingdom2026-05-11
1015Canada2026-05-24
1016France2026-05-25
1017India2026-05-25
1018United Kingdom2026-05-25
1019Brazil2026-05-08
1020Australia2026-05-11
1021Spain2026-05-25
1022Argentina2026-05-17
1023Japan2026-05-10
1024India2026-05-17
1025Germany2026-05-06
1026Russia2026-05-09
1027Germany2026-05-01
1028India2026-05-17
1029United Kingdom2026-05-03
1030India2026-05-23
1031Australia2026-04-28
1032Japan2026-05-02
1033Germany2026-05-15
1034Canada2026-05-24
1035United Kingdom2026-05-19
1036Germany2026-05-20
1037Russia2026-05-22
1038Russia2026-05-17
1039Australia2026-04-27
1040Italy2026-05-05
1041Japan2026-05-25
1042Germany2026-05-03
1043India2026-05-11
1044Germany2026-05-07
1045United Kingdom2026-05-16
1046Australia2026-05-11
1047Russia2026-04-29
1048United Kingdom2026-05-01
1049Australia2026-05-09

On-Demand Data

NameIdCountryDate
Mayumi Kolmetz1000Germany2026-05-05
Morrow Ruta1001Australia2026-05-04
Julie Stenseth1002Spain2026-05-07
Arvin Albares1003France2026-05-08
Maria Marrier1004Japan2026-05-12
Octavia Malet1005Russia2026-04-30
Costa Dilliard1006United Kingdom2026-05-03
David Darakjy1007United Kingdom2026-05-03
Faith Gillian1008Brazil2026-05-16
Emily Whobrey1009Canada2026-05-12
Costa Dilliard1010Italy2026-05-07
Juan Wieser1011India2026-05-18
Jones Vocelka1012Italy2026-05-13
Francesco Shinko1013Brazil2026-04-29
Kaitlin Ostrosky1014France2026-05-08
Arvin Albares1015Spain2026-05-04
Cody Saylors1016United Kingdom2026-05-02
Emily Whobrey1017Russia2026-05-14
Claire Tollner1018United Kingdom2026-05-02
Salvatore Stockham1019India2026-05-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Rodrigues CampainArgentinaIoni Bowcher UNQUALIFIED
Jennifer AmigonGermanyOnyama Limba RENEWAL
Mujtaba NickaArgentinaBernardo Dominic QUALIFIED
Faith GillianRussiaIoni Bowcher QUALIFIED
Misaki RoysterJapanAnna Fali NEW
Izzy GarufiRussiaXuxue Feng UNQUALIFIED
Arvin AlbaresArgentinaBernardo Dominic QUALIFIED
Octavia MaletGermanyStephen Shaw NEW
Greenwood BologniaJapanElwin Sharvill UNQUALIFIED
Tony FollerRussiaIoni Bowcher UNQUALIFIED
Aruna FigeroaSpainIoni Bowcher PROPOSAL
Wickens NestleRussiaOnyama Limba PROPOSAL
Nicolas IturbideIndiaOnyama Limba QUALIFIED
Tony FollerArgentinaIoni Bowcher QUALIFIED
Leja CaldareraItalyElwin Sharvill PROPOSAL
Leja CaldareraIndiaOnyama Limba NEGOTIATION
Leja CaldareraAustraliaStephen Shaw NEW
Mayumi KolmetzItalyIoni Bowcher QUALIFIED
Emily WhobreyItalyAsiya Javayant UNQUALIFIED
Mayumi KolmetzBrazilElwin Sharvill QUALIFIED
Julie StensethUnited KingdomStephen Shaw RENEWAL
Rodrigues CampainBrazilAmy Elsner QUALIFIED
Stacey MacleadUnited KingdomIvan Magalhaes QUALIFIED
Misaki RoysterItalyBernardo Dominic NEW
Ivar PaprockiBrazilXuxue Feng QUALIFIED
Kaitlin OstroskyCanadaBernardo Dominic RENEWAL
Ricardo GauchoFranceIvan Magalhaes NEGOTIATION
Juan WieserCanadaAsiya Javayant NEW
Morrow RutaCanadaAsiya Javayant NEGOTIATION
Juan WieserCanadaIoni Bowcher NEGOTIATION
Silvio SlusarskiGermanyAsiya Javayant UNQUALIFIED
Octavia MaletArgentinaAsiya Javayant UNQUALIFIED
Mayumi KolmetzFranceElwin Sharvill UNQUALIFIED
James ButtBrazilStephen Shaw QUALIFIED
Jones VocelkaFranceXuxue Feng NEGOTIATION
Cody SaylorsAustraliaIoni Bowcher UNQUALIFIED
Faith GillianIndiaAmy Elsner NEW
Adams MorascaJapanIoni Bowcher UNQUALIFIED
Mujtaba NickaUnited KingdomAsiya Javayant NEW
Kadeem FlosiArgentinaElwin Sharvill 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>