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
Chavez BriddickArgentinaIoni Bowcher UNQUALIFIED
Octavia MaletGermanyAmy Elsner RENEWAL
Nicolas IturbideIndiaAmy Elsner UNQUALIFIED
Rodrigues CampainArgentinaBernardo Dominic UNQUALIFIED
Juan WieserBrazilAnna Fali QUALIFIED
David DarakjyUnited KingdomOnyama Limba NEW
Octavia MaletArgentinaAnna Fali UNQUALIFIED
Adams MorascaArgentinaOnyama Limba NEGOTIATION
Emily WhobreyBrazilIvan Magalhaes PROPOSAL
Aditya KuskoJapanIvan Magalhaes QUALIFIED
Kadeem FlosiCanadaAmy Elsner NEW
Faith GillianIndiaAmy Elsner NEW
Nicolas IturbideGermanyOnyama Limba QUALIFIED
Faith GillianJapanAsiya Javayant RENEWAL
Smith GlickSpainElwin Sharvill PROPOSAL
Jennifer AmigonJapanStephen Shaw UNQUALIFIED
Stacey MacleadGermanyAnna Fali UNQUALIFIED
Greenwood BologniaUnited KingdomIoni Bowcher QUALIFIED
Mujtaba NickaJapanAnna Fali QUALIFIED
James ButtSpainIvan Magalhaes UNQUALIFIED
Wickens NestleRussiaStephen Shaw RENEWAL
Silvio SlusarskiRussiaAsiya Javayant NEGOTIATION
Clifford RimCanadaAsiya Javayant NEGOTIATION
Darci PoquetteJapanBernardo Dominic PROPOSAL
Stacey MacleadUnited KingdomAnna Fali UNQUALIFIED
Kaitlin OstroskySpainIvan Magalhaes RENEWAL
Cody SaylorsRussiaAmy Elsner NEGOTIATION
Kaitlin OstroskyFranceIoni Bowcher QUALIFIED
Morrow RutaAustraliaElwin Sharvill QUALIFIED
Salvatore StockhamCanadaAnna Fali UNQUALIFIED
Ashley DoeGermanyOnyama Limba QUALIFIED
Silvio SlusarskiSpainAmy Elsner QUALIFIED
Claire TollnerCanadaOnyama Limba NEW
Stacey MacleadArgentinaAmy Elsner QUALIFIED
James ButtArgentinaAsiya Javayant UNQUALIFIED
Smith GlickBrazilElwin Sharvill PROPOSAL
James ButtBrazilAnna Fali UNQUALIFIED
Jefferson SchemmerJapanBernardo Dominic NEGOTIATION
Aika InouyeJapanBernardo Dominic UNQUALIFIED
Chavez BriddickFranceAmy Elsner NEGOTIATION
Juan WieserItalyAmy Elsner UNQUALIFIED
Ivar PaprockiBrazilAmy Elsner PROPOSAL
Smith GlickItalyAmy Elsner PROPOSAL
James ButtFranceAmy Elsner NEW
Wickens NestleUnited KingdomBernardo Dominic NEGOTIATION
Salvatore StockhamJapanElwin Sharvill NEW
Silvio SlusarskiItalyOnyama Limba PROPOSAL
Kaitlin OstroskyIndiaElwin Sharvill UNQUALIFIED
Smith GlickBrazilIvan Magalhaes PROPOSAL
Salvatore StockhamAustraliaAsiya Javayant QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Ashley DoeFranceAnna Fali QUALIFIED
Alejandro PerinBrazilElwin Sharvill QUALIFIED
Murillo MaletAustraliaIoni Bowcher QUALIFIED
Aika InouyeSpainAnna Fali UNQUALIFIED
Silvio SlusarskiJapanAnna Fali QUALIFIED
Juan WieserCanadaBernardo Dominic NEGOTIATION
Aika InouyeUnited KingdomAsiya Javayant PROPOSAL
Tony FollerSpainBernardo Dominic PROPOSAL
Wickens NestleAustraliaAnna Fali NEGOTIATION
Isabel BowleyIndiaAsiya Javayant RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000James ButtGermany2026-04-13Chapman, Ross E Esq UNQUALIFIED89Anna Fali
1001Jefferson SchemmerBrazil2026-04-25Chanay, Jeffrey A Esq NEW48Xuxue Feng
1002Aika InouyeRussia2026-04-17Chanay, Jeffrey A Esq QUALIFIED79Asiya Javayant
1003Jeanfrancois VenereSpain2026-04-14King, Christopher A Esq NEGOTIATION8Anna Fali
1004Ashley DoeUnited Kingdom2026-04-20Feltz Printing Service UNQUALIFIED96Asiya Javayant
1005Wickens NestleBrazil2026-04-28Rangoni Of Florence PROPOSAL89Elwin Sharvill
1006Darci PoquetteItaly2026-04-20Buckley Miller Wright QUALIFIED31Anna Fali
1007Greenwood BologniaCanada2026-03-31Truhlar And Truhlar Attys NEW40Amy Elsner
1008Mayumi KolmetzFrance2026-04-28Buckley Miller Wright NEW57Bernardo Dominic
1009Ashley DoeBrazil2026-04-26Commercial Press NEW81Onyama Limba
1010Misaki RoysterGermany2026-03-31Benton, John B Jr NEGOTIATION84Ivan Magalhaes
1011Leja CaldareraCanada2026-04-10Printing Dimensions QUALIFIED98Amy Elsner
1012Leja CaldareraAustralia2026-04-10Printing Dimensions PROPOSAL29Bernardo Dominic
1013Jefferson SchemmerUnited Kingdom2026-04-12Buckley Miller Wright QUALIFIED39Onyama Limba
1014Nicolas IturbideFrance2026-04-15Commercial Press NEW39Bernardo Dominic
1015Leon OldroydSpain2026-04-18Truhlar And Truhlar Attys UNQUALIFIED12Elwin Sharvill
1016Kaitlin OstroskySpain2026-04-28Chanay, Jeffrey A Esq NEGOTIATION97Amy Elsner
1017Nicolas IturbideJapan2026-04-28Chapman, Ross E Esq NEW49Xuxue Feng
1018Jones VocelkaJapan2026-04-09Rangoni Of Florence QUALIFIED30Onyama Limba
1019Salvatore StockhamItaly2026-04-18Rousseaux, Michael Esq NEW78Onyama Limba
1020Jennifer AmigonArgentina2026-04-06Printing Dimensions RENEWAL86Amy Elsner
1021Cody SaylorsRussia2026-04-03Benton, John B Jr NEW2Bernardo Dominic
1022James ButtAustralia2026-04-23Feltz Printing Service UNQUALIFIED5Ioni Bowcher
1023Alejandro PerinSpain2026-04-28Feltz Printing Service NEGOTIATION12Ioni Bowcher
1024James ButtItaly2026-04-01Rangoni Of Florence PROPOSAL25Asiya Javayant
1025Jeanfrancois VenereRussia2026-04-24Chapman, Ross E Esq RENEWAL85Onyama Limba
1026Claire TollnerArgentina2026-04-22Chapman, Ross E Esq RENEWAL36Elwin Sharvill
1027Emily WhobreyUnited Kingdom2026-04-27King, Christopher A Esq NEW78Asiya Javayant
1028Deepesh ChuiFrance2026-04-14Buckley Miller Wright UNQUALIFIED26Ivan Magalhaes
1029Tony FollerAustralia2026-04-21Commercial Press NEW76Onyama Limba
1030Chavez BriddickAustralia2026-04-20Chemel, James L Cpa NEGOTIATION17Anna Fali
1031Smith GlickCanada2026-04-19Chanay, Jeffrey A Esq PROPOSAL24Ivan Magalhaes
1032Izzy GarufiGermany2026-04-20Morlong Associates NEW52Anna Fali
1033Faith GillianFrance2026-04-20Rousseaux, Michael Esq UNQUALIFIED91Asiya Javayant
1034Rodrigues CampainUnited Kingdom2026-04-05Chemel, James L Cpa QUALIFIED42Amy Elsner
1035Leja CaldareraIndia2026-04-08Feiner Bros QUALIFIED7Bernardo Dominic
1036Arvin AlbaresJapan2026-04-15Rangoni Of Florence RENEWAL74Elwin Sharvill
1037Costa DilliardUnited Kingdom2026-04-26Feltz Printing Service NEGOTIATION34Ioni Bowcher
1038Cody SaylorsRussia2026-04-15Rangoni Of Florence NEGOTIATION8Amy Elsner
1039Julie StensethAustralia2026-04-11Rangoni Of Florence NEW12Ivan Magalhaes
1040Ivar PaprockiAustralia2026-04-13Dorl, James J Esq PROPOSAL67Elwin Sharvill
1041Arvin AlbaresCanada2026-04-16Truhlar And Truhlar Attys NEGOTIATION82Amy Elsner
1042Silvio SlusarskiItaly2026-04-16King, Christopher A Esq RENEWAL49Xuxue Feng
1043Morrow RutaRussia2026-04-09Truhlar And Truhlar Attys NEGOTIATION87Bernardo Dominic
1044Mujtaba NickaAustralia2026-04-25Morlong Associates UNQUALIFIED61Onyama Limba
1045Izzy GarufiUnited Kingdom2026-04-25Rousseaux, Michael Esq NEGOTIATION31Onyama Limba
1046Jones VocelkaItaly2026-04-06Printing Dimensions UNQUALIFIED86Asiya Javayant
1047Aditya KuskoIndia2026-03-30Benton, John B Jr PROPOSAL50Ivan Magalhaes
1048Greenwood BologniaSpain2026-04-02Rousseaux, Michael Esq NEGOTIATION15Stephen Shaw
1049Salvatore StockhamGermany2026-04-13King, Christopher A Esq UNQUALIFIED73Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Alejandro PerinArgentinaAmy Elsner UNQUALIFIED
Claire TollnerItalyAnna Fali PROPOSAL
Cody SaylorsGermanyElwin Sharvill RENEWAL
Sinclair WaycottFranceIoni Bowcher NEW
Aruna FigeroaRussiaAsiya Javayant NEGOTIATION
Francesco ShinkoSpainAmy Elsner PROPOSAL
Ashley DoeUnited KingdomAnna Fali UNQUALIFIED
Morrow RutaItalyAsiya Javayant NEGOTIATION
Tony FollerItalyXuxue Feng PROPOSAL
Adams MorascaArgentinaStephen Shaw NEGOTIATION
Mujtaba NickaItalyElwin Sharvill QUALIFIED
Clifford RimGermanyBernardo Dominic NEGOTIATION
James ButtFranceElwin Sharvill NEW
Rodrigues CampainBrazilAmy Elsner RENEWAL
Antonio CaudyIndiaAmy Elsner NEW
Juan WieserUnited KingdomOnyama Limba NEW
Nicolas IturbideGermanyOnyama Limba UNQUALIFIED
Juan WieserArgentinaStephen Shaw PROPOSAL
Antonio CaudyBrazilXuxue Feng NEW
Leon OldroydGermanyXuxue Feng QUALIFIED
Darci PoquetteGermanyXuxue Feng PROPOSAL
Kaitlin OstroskyAustraliaBernardo Dominic QUALIFIED
Aditya KuskoUnited KingdomAsiya Javayant PROPOSAL
Francesco ShinkoFranceIvan Magalhaes NEW
Aika InouyeBrazilIoni Bowcher UNQUALIFIED
Arvin AlbaresGermanyXuxue Feng UNQUALIFIED
Salvatore StockhamRussiaAsiya Javayant QUALIFIED
Jennifer AmigonIndiaAsiya Javayant UNQUALIFIED
Jennifer AmigonJapanStephen Shaw UNQUALIFIED
Claire TollnerGermanyOnyama Limba QUALIFIED
Tony FollerFranceAsiya Javayant NEGOTIATION
Ivar PaprockiFranceElwin Sharvill QUALIFIED
Stacey MacleadJapanElwin Sharvill QUALIFIED
Rodrigues CampainJapanStephen Shaw NEW
Misaki RoysterGermanyBernardo Dominic QUALIFIED
James ButtFranceAnna Fali QUALIFIED
Antonio CaudyRussiaAmy Elsner PROPOSAL
Johnson SergiSpainOnyama Limba NEGOTIATION
Izzy GarufiGermanyAsiya Javayant RENEWAL
Maisha RulapaughJapanAsiya Javayant UNQUALIFIED
David DarakjySpainOnyama Limba UNQUALIFIED
Sinclair WaycottItalyIvan Magalhaes QUALIFIED
Kaitlin OstroskyGermanyStephen Shaw NEW
Aditya KuskoJapanAmy Elsner QUALIFIED
Claire TollnerRussiaIoni Bowcher RENEWAL
Kaitlin OstroskyJapanOnyama Limba RENEWAL
Murillo MaletAustraliaAnna Fali NEGOTIATION
Cody SaylorsAustraliaStephen Shaw RENEWAL
Arvin AlbaresFranceXuxue Feng PROPOSAL
Maisha RulapaughAustraliaElwin Sharvill QUALIFIED
Frozen Columns
Name
Octavia Malet
Mayumi Kolmetz
Juan Wieser
Morrow Ruta
Clifford Rim
Emily Whobrey
Isabel Bowley
Greenwood Bolognia
Wickens Nestle
Arvin Albares
Leon Oldroyd
David Darakjy
Leon Oldroyd
Mayumi Kolmetz
Munro Ferencz
Morrow Ruta
Murillo Malet
Sinclair Waycott
Clifford Rim
Juan Wieser
Wickens Nestle
Smith Glick
Julie Stenseth
Deepesh Chui
Silvio Slusarski
Juan Wieser
Nicolas Iturbide
Maisha Rulapaugh
Clifford Rim
Leja Caldarera
Cody Saylors
Jefferson Schemmer
Rodrigues Campain
Jeanfrancois Venere
Wickens Nestle
Jefferson Schemmer
Cody Saylors
Antonio Caudy
Aditya Kusko
Emily Whobrey
Chavez Briddick
Aditya Kusko
Mujtaba Nicka
Stacey Maclead
Faith Gillian
Izzy Garufi
Mujtaba Nicka
Claire Tollner
Rodrigues Campain
Misaki Royster
IdCountryDate
1000Russia2026-04-17
1001Germany2026-04-09
1002Canada2026-04-05
1003Italy2026-04-03
1004United Kingdom2026-04-03
1005Brazil2026-04-01
1006Italy2026-04-11
1007France2026-04-25
1008Italy2026-04-03
1009Japan2026-04-12
1010Argentina2026-03-30
1011Australia2026-04-20
1012Argentina2026-04-05
1013United Kingdom2026-04-22
1014Japan2026-04-01
1015United Kingdom2026-04-28
1016Argentina2026-04-12
1017India2026-04-10
1018Russia2026-04-21
1019Australia2026-04-14
1020Russia2026-04-15
1021United Kingdom2026-04-03
1022Japan2026-04-01
1023Australia2026-04-15
1024Italy2026-04-20
1025Russia2026-03-31
1026Russia2026-04-24
1027Canada2026-04-15
1028Brazil2026-04-11
1029Brazil2026-04-16
1030Argentina2026-04-22
1031Brazil2026-04-27
1032Spain2026-04-04
1033France2026-04-01
1034Brazil2026-04-17
1035Canada2026-04-21
1036Japan2026-04-08
1037Australia2026-04-28
1038Australia2026-04-10
1039Japan2026-04-02
1040Germany2026-04-12
1041Germany2026-03-31
1042Spain2026-04-15
1043Japan2026-04-21
1044Japan2026-03-30
1045Germany2026-04-27
1046Australia2026-04-13
1047Argentina2026-04-24
1048India2026-04-26
1049Brazil2026-03-31

On-Demand Data

NameIdCountryDate
Mujtaba Nicka1000Brazil2026-04-07
Nicolas Iturbide1001Italy2026-04-02
Munro Ferencz1002Russia2026-04-11
Antonio Caudy1003Brazil2026-04-23
James Butt1004Brazil2026-04-27
Antonio Caudy1005India2026-04-19
Clifford Rim1006Russia2026-04-15
Darci Poquette1007Australia2026-04-18
Alejandro Perin1008United Kingdom2026-04-14
Maria Marrier1009Italy2026-04-01
Johnson Sergi1010Spain2026-04-21
Kaitlin Ostrosky1011Brazil2026-03-31
Tony Foller1012Brazil2026-04-19
Arvin Albares1013Japan2026-04-03
Octavia Malet1014Canada2026-04-15
Octavia Malet1015Germany2026-04-06
Aditya Kusko1016Japan2026-04-03
Tony Foller1017Argentina2026-04-28
Smith Glick1018Brazil2026-04-20
Jennifer Amigon1019Spain2026-04-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aika InouyeIndiaElwin Sharvill NEW
Clifford RimRussiaAnna Fali NEGOTIATION
Leon OldroydArgentinaAnna Fali NEGOTIATION
Greenwood BologniaItalyStephen Shaw RENEWAL
Kaitlin OstroskyItalyStephen Shaw NEW
Julie StensethCanadaBernardo Dominic NEW
Silvio SlusarskiAustraliaAnna Fali PROPOSAL
Johnson SergiRussiaElwin Sharvill QUALIFIED
Ricardo GauchoJapanBernardo Dominic QUALIFIED
Wickens NestleSpainStephen Shaw RENEWAL
Morrow RutaItalyAsiya Javayant NEW
Aruna FigeroaItalyAmy Elsner RENEWAL
Juan WieserCanadaOnyama Limba QUALIFIED
Salvatore StockhamArgentinaIvan Magalhaes NEW
Aruna FigeroaUnited KingdomOnyama Limba NEGOTIATION
Sinclair WaycottCanadaElwin Sharvill NEGOTIATION
Faith GillianItalyAnna Fali UNQUALIFIED
Chavez BriddickJapanElwin Sharvill UNQUALIFIED
Salvatore StockhamJapanStephen Shaw QUALIFIED
Ricardo GauchoIndiaOnyama Limba PROPOSAL
Darci PoquetteAustraliaIvan Magalhaes NEW
Greenwood BologniaGermanyAmy Elsner NEGOTIATION
Darci PoquetteSpainBernardo Dominic RENEWAL
Rodrigues CampainRussiaXuxue Feng UNQUALIFIED
Mayumi KolmetzRussiaOnyama Limba NEW
Costa DilliardGermanyAsiya Javayant NEW
Arvin AlbaresIndiaXuxue Feng RENEWAL
Morrow RutaIndiaStephen Shaw QUALIFIED
Jeanfrancois VenereSpainBernardo Dominic QUALIFIED
Leja CaldareraFranceXuxue Feng QUALIFIED
Misaki RoysterRussiaAnna Fali UNQUALIFIED
Wickens NestleArgentinaXuxue Feng QUALIFIED
Arvin AlbaresUnited KingdomOnyama Limba NEW
Mayumi KolmetzArgentinaStephen Shaw QUALIFIED
Clifford RimItalyIoni Bowcher RENEWAL
Izzy GarufiSpainElwin Sharvill UNQUALIFIED
Clifford RimFranceElwin Sharvill PROPOSAL
Darci PoquetteItalyElwin Sharvill RENEWAL
Alejandro PerinBrazilXuxue Feng NEW
Chavez BriddickAustraliaBernardo Dominic RENEWAL

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