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
Claire TollnerFranceBernardo Dominic PROPOSAL
Munro FerenczCanadaAnna Fali UNQUALIFIED
Aika InouyeCanadaIoni Bowcher PROPOSAL
Sinclair WaycottIndiaIoni Bowcher RENEWAL
Smith GlickIndiaIvan Magalhaes NEGOTIATION
David DarakjyIndiaAmy Elsner NEGOTIATION
Jeanfrancois VenereCanadaAmy Elsner QUALIFIED
Izzy GarufiJapanIvan Magalhaes NEGOTIATION
Claire TollnerFranceStephen Shaw NEW
Maria MarrierRussiaAsiya Javayant RENEWAL
Arvin AlbaresCanadaIoni Bowcher QUALIFIED
Faith GillianItalyElwin Sharvill UNQUALIFIED
Jones VocelkaSpainBernardo Dominic PROPOSAL
Greenwood BologniaIndiaAnna Fali NEW
Kadeem FlosiAustraliaAmy Elsner RENEWAL
Izzy GarufiUnited KingdomAsiya Javayant PROPOSAL
Murillo MaletIndiaAnna Fali NEGOTIATION
Cody SaylorsSpainBernardo Dominic QUALIFIED
Morrow RutaSpainIoni Bowcher PROPOSAL
Emily WhobreyIndiaElwin Sharvill PROPOSAL
Aika InouyeAustraliaIoni Bowcher QUALIFIED
Deepesh ChuiGermanyOnyama Limba UNQUALIFIED
Morrow RutaItalyIvan Magalhaes NEW
Smith GlickAustraliaStephen Shaw QUALIFIED
Ashley DoeUnited KingdomAmy Elsner NEW
Emily WhobreyFranceIvan Magalhaes NEW
Smith GlickGermanyOnyama Limba QUALIFIED
Ivar PaprockiArgentinaAnna Fali NEW
Mayumi KolmetzAustraliaIoni Bowcher NEW
Jefferson SchemmerCanadaXuxue Feng NEGOTIATION
Leja CaldareraCanadaIoni Bowcher QUALIFIED
Stacey MacleadItalyBernardo Dominic NEW
Leja CaldareraGermanyXuxue Feng NEW
Murillo MaletFranceStephen Shaw QUALIFIED
Salvatore StockhamSpainAmy Elsner QUALIFIED
Maria MarrierArgentinaAmy Elsner UNQUALIFIED
Leja CaldareraSpainOnyama Limba NEGOTIATION
Salvatore StockhamUnited KingdomAmy Elsner PROPOSAL
Arvin AlbaresFranceIoni Bowcher QUALIFIED
Munro FerenczIndiaXuxue Feng UNQUALIFIED
James ButtCanadaBernardo Dominic NEGOTIATION
Kaitlin OstroskyRussiaBernardo Dominic QUALIFIED
Sinclair WaycottArgentinaStephen Shaw NEW
Maisha RulapaughGermanyAmy Elsner RENEWAL
Cody SaylorsBrazilElwin Sharvill RENEWAL
Murillo MaletCanadaOnyama Limba PROPOSAL
Clifford RimJapanOnyama Limba QUALIFIED
Octavia MaletArgentinaAsiya Javayant NEW
Adams MorascaFranceStephen Shaw UNQUALIFIED
Greenwood BologniaRussiaStephen Shaw NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Ivar PaprockiRussiaStephen Shaw PROPOSAL
Isabel BowleyRussiaBernardo Dominic UNQUALIFIED
Arvin AlbaresFranceOnyama Limba QUALIFIED
Octavia MaletUnited KingdomAsiya Javayant UNQUALIFIED
Johnson SergiBrazilAmy Elsner NEW
Munro FerenczArgentinaOnyama Limba PROPOSAL
Maisha RulapaughUnited KingdomStephen Shaw UNQUALIFIED
Octavia MaletBrazilAnna Fali NEW
Cody SaylorsFranceBernardo Dominic RENEWAL
Jones VocelkaIndiaIoni Bowcher NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Munro FerenczArgentina2026-04-25Morlong Associates PROPOSAL44Onyama Limba
1001Kadeem FlosiBrazil2026-04-04Chanay, Jeffrey A Esq NEW3Ivan Magalhaes
1002Ashley DoeItaly2026-04-11Dorl, James J Esq RENEWAL88Stephen Shaw
1003Misaki RoysterUnited Kingdom2026-03-30Rousseaux, Michael Esq NEW18Ioni Bowcher
1004Jeanfrancois VenereIndia2026-04-01Feiner Bros PROPOSAL21Asiya Javayant
1005Greenwood BologniaIndia2026-04-14Dorl, James J Esq QUALIFIED89Asiya Javayant
1006Darci PoquetteRussia2026-04-25King, Christopher A Esq RENEWAL76Ivan Magalhaes
1007Greenwood BologniaRussia2026-04-14Commercial Press RENEWAL99Bernardo Dominic
1008Kaitlin OstroskyItaly2026-04-09Chapman, Ross E Esq NEW39Stephen Shaw
1009Rodrigues CampainJapan2026-04-04Rangoni Of Florence QUALIFIED23Elwin Sharvill
1010Kaitlin OstroskyGermany2026-04-18Truhlar And Truhlar Attys UNQUALIFIED75Amy Elsner
1011Jones VocelkaUnited Kingdom2026-04-27Printing Dimensions PROPOSAL49Ioni Bowcher
1012Julie StensethFrance2026-04-23Feltz Printing Service QUALIFIED18Anna Fali
1013Julie StensethJapan2026-04-07Morlong Associates UNQUALIFIED13Anna Fali
1014Maria MarrierFrance2026-04-18Commercial Press RENEWAL15Asiya Javayant
1015Leja CaldareraGermany2026-04-17Truhlar And Truhlar Attys QUALIFIED49Asiya Javayant
1016Arvin AlbaresAustralia2026-04-08Chapman, Ross E Esq PROPOSAL97Ioni Bowcher
1017Antonio CaudyFrance2026-04-08Chapman, Ross E Esq NEGOTIATION0Stephen Shaw
1018Sinclair WaycottUnited Kingdom2026-04-11Rangoni Of Florence UNQUALIFIED40Ioni Bowcher
1019Arvin AlbaresIndia2026-04-09Feiner Bros NEGOTIATION87Elwin Sharvill
1020Jones VocelkaItaly2026-04-09Rangoni Of Florence UNQUALIFIED52Asiya Javayant
1021Alejandro PerinSpain2026-03-30Truhlar And Truhlar Attys NEW15Anna Fali
1022Murillo MaletRussia2026-04-18Chanay, Jeffrey A Esq RENEWAL26Anna Fali
1023Clifford RimIndia2026-04-14Chemel, James L Cpa NEW57Stephen Shaw
1024Ricardo GauchoIndia2026-04-14Rangoni Of Florence NEW36Anna Fali
1025Kaitlin OstroskyIndia2026-04-01Commercial Press NEW9Amy Elsner
1026Ivar PaprockiUnited Kingdom2026-04-18Chanay, Jeffrey A Esq PROPOSAL16Anna Fali
1027Alejandro PerinArgentina2026-04-18Dorl, James J Esq UNQUALIFIED52Stephen Shaw
1028Costa DilliardIndia2026-04-22King, Christopher A Esq NEGOTIATION82Bernardo Dominic
1029Costa DilliardIndia2026-04-20Feiner Bros QUALIFIED89Ioni Bowcher
1030Juan WieserFrance2026-04-05Truhlar And Truhlar Attys NEGOTIATION55Stephen Shaw
1031Ricardo GauchoBrazil2026-04-17Dorl, James J Esq RENEWAL7Xuxue Feng
1032Mujtaba NickaBrazil2026-04-12King, Christopher A Esq QUALIFIED83Anna Fali
1033Misaki RoysterJapan2026-04-11Truhlar And Truhlar Attys NEW30Ivan Magalhaes
1034Silvio SlusarskiSpain2026-04-14Rangoni Of Florence QUALIFIED2Ivan Magalhaes
1035Deepesh ChuiSpain2026-04-19Printing Dimensions PROPOSAL29Amy Elsner
1036Kaitlin OstroskyJapan2026-04-14Buckley Miller Wright NEGOTIATION77Xuxue Feng
1037Adams MorascaRussia2026-04-19Benton, John B Jr PROPOSAL55Bernardo Dominic
1038Kadeem FlosiJapan2026-04-12Feltz Printing Service RENEWAL29Bernardo Dominic
1039Maria MarrierAustralia2026-04-08Benton, John B Jr QUALIFIED95Ivan Magalhaes
1040Nicolas IturbideJapan2026-04-23Benton, John B Jr NEW2Asiya Javayant
1041Cody SaylorsItaly2026-04-14Rangoni Of Florence NEGOTIATION88Ioni Bowcher
1042Aika InouyeArgentina2026-04-27Chemel, James L Cpa UNQUALIFIED35Xuxue Feng
1043Morrow RutaArgentina2026-04-02Benton, John B Jr UNQUALIFIED55Anna Fali
1044Arvin AlbaresArgentina2026-04-16Feiner Bros UNQUALIFIED72Ivan Magalhaes
1045Mayumi KolmetzIndia2026-04-11King, Christopher A Esq UNQUALIFIED92Xuxue Feng
1046Aika InouyeArgentina2026-04-21Chapman, Ross E Esq QUALIFIED93Ivan Magalhaes
1047Ivar PaprockiArgentina2026-04-18Truhlar And Truhlar Attys NEW20Xuxue Feng
1048David DarakjyAustralia2026-04-21Chapman, Ross E Esq NEW41Asiya Javayant
1049Misaki RoysterSpain2026-04-09Dorl, James J Esq QUALIFIED91Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Faith GillianItalyAsiya Javayant PROPOSAL
Tony FollerBrazilIvan Magalhaes QUALIFIED
Mayumi KolmetzFranceXuxue Feng RENEWAL
Kadeem FlosiGermanyAnna Fali NEGOTIATION
Kaitlin OstroskySpainStephen Shaw NEW
Francesco ShinkoIndiaStephen Shaw PROPOSAL
Ivar PaprockiUnited KingdomIvan Magalhaes UNQUALIFIED
Chavez BriddickGermanyBernardo Dominic PROPOSAL
Isabel BowleySpainBernardo Dominic PROPOSAL
Jeanfrancois VenereSpainAnna Fali RENEWAL
Wickens NestleUnited KingdomOnyama Limba NEW
Ivar PaprockiRussiaIoni Bowcher QUALIFIED
Isabel BowleyRussiaIoni Bowcher RENEWAL
Stacey MacleadUnited KingdomOnyama Limba RENEWAL
Maisha RulapaughAustraliaXuxue Feng NEGOTIATION
Morrow RutaSpainOnyama Limba NEGOTIATION
Alejandro PerinArgentinaElwin Sharvill QUALIFIED
Kaitlin OstroskyGermanyElwin Sharvill PROPOSAL
Aditya KuskoArgentinaXuxue Feng UNQUALIFIED
Kaitlin OstroskyFranceAnna Fali UNQUALIFIED
Clifford RimIndiaIoni Bowcher UNQUALIFIED
Rodrigues CampainArgentinaAsiya Javayant NEGOTIATION
Francesco ShinkoCanadaOnyama Limba PROPOSAL
Francesco ShinkoRussiaXuxue Feng NEW
Leon OldroydUnited KingdomAnna Fali PROPOSAL
Antonio CaudyJapanBernardo Dominic RENEWAL
Maria MarrierGermanyXuxue Feng NEW
Jeanfrancois VenereJapanBernardo Dominic NEGOTIATION
Maisha RulapaughAustraliaElwin Sharvill QUALIFIED
Izzy GarufiRussiaOnyama Limba UNQUALIFIED
Cody SaylorsSpainIvan Magalhaes RENEWAL
David DarakjyAustraliaBernardo Dominic NEW
Aika InouyeRussiaElwin Sharvill UNQUALIFIED
Jeanfrancois VenereItalyStephen Shaw NEGOTIATION
Tony FollerIndiaAsiya Javayant PROPOSAL
Mujtaba NickaArgentinaAmy Elsner PROPOSAL
Murillo MaletArgentinaElwin Sharvill PROPOSAL
Maisha RulapaughAustraliaXuxue Feng NEW
Wickens NestleIndiaAsiya Javayant QUALIFIED
Isabel BowleyItalyElwin Sharvill QUALIFIED
Chavez BriddickUnited KingdomBernardo Dominic UNQUALIFIED
Isabel BowleyItalyElwin Sharvill UNQUALIFIED
Adams MorascaUnited KingdomIoni Bowcher RENEWAL
Claire TollnerIndiaIvan Magalhaes PROPOSAL
Silvio SlusarskiUnited KingdomXuxue Feng QUALIFIED
Nicolas IturbideSpainAnna Fali UNQUALIFIED
Julie StensethBrazilXuxue Feng RENEWAL
Juan WieserRussiaAmy Elsner NEGOTIATION
Chavez BriddickBrazilBernardo Dominic PROPOSAL
Ashley DoeCanadaOnyama Limba PROPOSAL
Frozen Columns
Name
Ivar Paprocki
Mujtaba Nicka
Misaki Royster
Leon Oldroyd
Clifford Rim
Kaitlin Ostrosky
Claire Tollner
Alejandro Perin
Jones Vocelka
Rodrigues Campain
Maria Marrier
Misaki Royster
Greenwood Bolognia
Aika Inouye
Alejandro Perin
Aditya Kusko
Leja Caldarera
Julie Stenseth
Rodrigues Campain
Rodrigues Campain
Ricardo Gaucho
Tony Foller
James Butt
Mujtaba Nicka
David Darakjy
Aruna Figeroa
Faith Gillian
David Darakjy
Mujtaba Nicka
Stacey Maclead
Munro Ferencz
Juan Wieser
Jefferson Schemmer
Leon Oldroyd
Johnson Sergi
Johnson Sergi
Johnson Sergi
Aditya Kusko
Ashley Doe
Darci Poquette
Mujtaba Nicka
Stacey Maclead
Juan Wieser
Isabel Bowley
Salvatore Stockham
Jennifer Amigon
Aruna Figeroa
Maisha Rulapaugh
Jeanfrancois Venere
Deepesh Chui
IdCountryDate
1000Italy2026-04-01
1001Japan2026-04-15
1002United Kingdom2026-04-22
1003Brazil2026-04-14
1004Spain2026-04-20
1005France2026-04-19
1006Argentina2026-03-30
1007India2026-04-02
1008Germany2026-04-27
1009Japan2026-03-31
1010Italy2026-04-15
1011Spain2026-04-16
1012Argentina2026-04-23
1013Australia2026-04-03
1014Italy2026-04-25
1015Spain2026-04-19
1016Canada2026-03-30
1017Japan2026-04-26
1018Australia2026-04-14
1019United Kingdom2026-04-01
1020Japan2026-04-04
1021United Kingdom2026-04-07
1022Spain2026-04-24
1023Canada2026-04-07
1024Spain2026-04-23
1025United Kingdom2026-04-19
1026Germany2026-04-19
1027France2026-04-24
1028Spain2026-04-15
1029Italy2026-04-04
1030France2026-04-23
1031Spain2026-04-22
1032Italy2026-04-08
1033United Kingdom2026-04-16
1034Italy2026-04-06
1035Brazil2026-04-07
1036France2026-04-16
1037Germany2026-03-30
1038Germany2026-04-06
1039Germany2026-04-13
1040Brazil2026-04-04
1041France2026-04-25
1042India2026-04-03
1043Russia2026-04-15
1044Spain2026-04-18
1045Canada2026-04-03
1046Spain2026-04-15
1047Russia2026-04-20
1048Italy2026-04-03
1049United Kingdom2026-04-20

On-Demand Data

NameIdCountryDate
Maisha Rulapaugh1000Spain2026-04-17
Alejandro Perin1001Spain2026-04-26
Ivar Paprocki1002Germany2026-04-03
Izzy Garufi1003Germany2026-04-09
Isabel Bowley1004Spain2026-04-17
Clifford Rim1005Japan2026-04-23
Smith Glick1006Spain2026-04-14
Jennifer Amigon1007Italy2026-04-22
Darci Poquette1008Japan2026-04-18
Isabel Bowley1009United Kingdom2026-04-18
Nicolas Iturbide1010Australia2026-04-09
Munro Ferencz1011Italy2026-04-13
Chavez Briddick1012Brazil2026-04-10
Alejandro Perin1013United Kingdom2026-04-07
Deepesh Chui1014France2026-03-31
Wickens Nestle1015United Kingdom2026-04-02
Antonio Caudy1016Brazil2026-04-06
Ivar Paprocki1017Australia2026-04-25
Kaitlin Ostrosky1018Germany2026-04-08
Munro Ferencz1019Italy2026-04-19
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kadeem FlosiGermanyIvan Magalhaes UNQUALIFIED
Mujtaba NickaGermanyIvan Magalhaes PROPOSAL
James ButtItalyStephen Shaw RENEWAL
Claire TollnerGermanyElwin Sharvill PROPOSAL
Octavia MaletJapanOnyama Limba UNQUALIFIED
Jones VocelkaGermanyOnyama Limba UNQUALIFIED
Octavia MaletBrazilIvan Magalhaes UNQUALIFIED
Adams MorascaArgentinaXuxue Feng RENEWAL
Emily WhobreyUnited KingdomBernardo Dominic QUALIFIED
Darci PoquetteRussiaElwin Sharvill QUALIFIED
Ivar PaprockiAustraliaElwin Sharvill RENEWAL
Wickens NestleItalyElwin Sharvill NEGOTIATION
Ivar PaprockiGermanyAsiya Javayant NEW
Sinclair WaycottItalyAnna Fali PROPOSAL
Jennifer AmigonUnited KingdomAnna Fali NEGOTIATION
Maria MarrierFranceAsiya Javayant PROPOSAL
Ivar PaprockiSpainAsiya Javayant PROPOSAL
Aika InouyeBrazilIvan Magalhaes PROPOSAL
Rodrigues CampainArgentinaElwin Sharvill NEGOTIATION
Octavia MaletJapanOnyama Limba PROPOSAL
Darci PoquetteUnited KingdomAsiya Javayant RENEWAL
Munro FerenczItalyOnyama Limba PROPOSAL
Arvin AlbaresFranceIvan Magalhaes RENEWAL
Jones VocelkaIndiaStephen Shaw NEGOTIATION
Jones VocelkaGermanyOnyama Limba NEGOTIATION
Jeanfrancois VenereFranceOnyama Limba RENEWAL
Maria MarrierAustraliaIoni Bowcher UNQUALIFIED
Ivar PaprockiFranceOnyama Limba QUALIFIED
James ButtUnited KingdomAsiya Javayant NEGOTIATION
David DarakjyAustraliaIvan Magalhaes PROPOSAL
Jennifer AmigonCanadaStephen Shaw NEW
Kadeem FlosiFranceAmy Elsner PROPOSAL
Mayumi KolmetzItalyAsiya Javayant UNQUALIFIED
Nicolas IturbideSpainElwin Sharvill UNQUALIFIED
Salvatore StockhamIndiaIvan Magalhaes NEW
Izzy GarufiJapanIvan Magalhaes QUALIFIED
Sinclair WaycottSpainXuxue Feng UNQUALIFIED
Wickens NestleJapanOnyama Limba RENEWAL
Rodrigues CampainItalyStephen Shaw NEW
Darci PoquetteJapanXuxue Feng NEW

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