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
Emily WhobreyFranceIoni Bowcher UNQUALIFIED
Munro FerenczAustraliaStephen Shaw PROPOSAL
David DarakjyArgentinaAsiya Javayant NEW
Aditya KuskoSpainOnyama Limba RENEWAL
Emily WhobreyIndiaIvan Magalhaes QUALIFIED
Johnson SergiJapanElwin Sharvill PROPOSAL
Aditya KuskoSpainBernardo Dominic PROPOSAL
Wickens NestleAustraliaXuxue Feng PROPOSAL
Ashley DoeUnited KingdomElwin Sharvill QUALIFIED
Octavia MaletSpainAsiya Javayant QUALIFIED
Mayumi KolmetzBrazilElwin Sharvill PROPOSAL
Jeanfrancois VenereCanadaIoni Bowcher PROPOSAL
Mujtaba NickaAustraliaAnna Fali RENEWAL
Smith GlickIndiaIvan Magalhaes NEW
Francesco ShinkoGermanyElwin Sharvill QUALIFIED
Darci PoquetteUnited KingdomBernardo Dominic NEW
Deepesh ChuiBrazilAmy Elsner RENEWAL
Mujtaba NickaGermanyStephen Shaw QUALIFIED
Johnson SergiArgentinaIoni Bowcher RENEWAL
Clifford RimSpainStephen Shaw PROPOSAL
Stacey MacleadCanadaBernardo Dominic NEW
Alejandro PerinAustraliaOnyama Limba UNQUALIFIED
Salvatore StockhamItalyOnyama Limba PROPOSAL
James ButtItalyIoni Bowcher RENEWAL
Chavez BriddickIndiaBernardo Dominic UNQUALIFIED
Jennifer AmigonFranceElwin Sharvill UNQUALIFIED
Chavez BriddickFranceAnna Fali NEW
Octavia MaletAustraliaXuxue Feng NEGOTIATION
Tony FollerBrazilIvan Magalhaes RENEWAL
Octavia MaletIndiaBernardo Dominic NEGOTIATION
Sinclair WaycottSpainIoni Bowcher PROPOSAL
Kadeem FlosiAustraliaOnyama Limba NEGOTIATION
Aditya KuskoRussiaBernardo Dominic QUALIFIED
Morrow RutaItalyIoni Bowcher NEW
Ashley DoeJapanXuxue Feng NEGOTIATION
Deepesh ChuiRussiaAmy Elsner UNQUALIFIED
David DarakjyArgentinaAmy Elsner NEGOTIATION
Jones VocelkaIndiaBernardo Dominic QUALIFIED
Ricardo GauchoGermanyIoni Bowcher PROPOSAL
Munro FerenczRussiaXuxue Feng QUALIFIED
Juan WieserArgentinaIvan Magalhaes QUALIFIED
Mayumi KolmetzAustraliaIoni Bowcher UNQUALIFIED
Ashley DoeUnited KingdomBernardo Dominic RENEWAL
Mayumi KolmetzItalyIoni Bowcher UNQUALIFIED
Arvin AlbaresItalyStephen Shaw NEGOTIATION
Salvatore StockhamUnited KingdomOnyama Limba PROPOSAL
Costa DilliardRussiaOnyama Limba RENEWAL
Deepesh ChuiFranceXuxue Feng PROPOSAL
Tony FollerCanadaXuxue Feng QUALIFIED
Rodrigues CampainIndiaStephen Shaw PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Darci PoquetteFranceOnyama Limba QUALIFIED
Wickens NestleArgentinaBernardo Dominic NEW
Aditya KuskoItalyBernardo Dominic NEW
Julie StensethArgentinaAsiya Javayant PROPOSAL
Nicolas IturbideSpainIvan Magalhaes QUALIFIED
Jeanfrancois VenereItalyAnna Fali PROPOSAL
Sinclair WaycottRussiaAnna Fali QUALIFIED
Isabel BowleyGermanyXuxue Feng PROPOSAL
Misaki RoysterUnited KingdomAmy Elsner QUALIFIED
Salvatore StockhamJapanAsiya Javayant RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Smith GlickAustralia2025-10-04Rousseaux, Michael Esq QUALIFIED2Stephen Shaw
1001Ivar PaprockiFrance2025-09-20Rousseaux, Michael Esq PROPOSAL28Amy Elsner
1002Juan WieserArgentina2025-10-02Morlong Associates RENEWAL30Asiya Javayant
1003Jeanfrancois VenereCanada2025-10-19Rangoni Of Florence RENEWAL29Xuxue Feng
1004Jeanfrancois VenereItaly2025-09-27Chemel, James L Cpa NEW18Amy Elsner
1005Costa DilliardCanada2025-10-19Benton, John B Jr RENEWAL81Elwin Sharvill
1006Silvio SlusarskiSpain2025-09-29Printing Dimensions UNQUALIFIED4Ioni Bowcher
1007Wickens NestleArgentina2025-10-09Printing Dimensions QUALIFIED93Stephen Shaw
1008Isabel BowleyItaly2025-10-17Rangoni Of Florence UNQUALIFIED5Elwin Sharvill
1009Nicolas IturbideIndia2025-10-18Chemel, James L Cpa UNQUALIFIED3Asiya Javayant
1010Antonio CaudyArgentina2025-10-06Feltz Printing Service PROPOSAL41Stephen Shaw
1011Jones VocelkaItaly2025-10-09Chapman, Ross E Esq RENEWAL32Ivan Magalhaes
1012Maisha RulapaughIndia2025-10-15Feltz Printing Service NEGOTIATION36Onyama Limba
1013Claire TollnerSpain2025-09-22Benton, John B Jr UNQUALIFIED0Stephen Shaw
1014Juan WieserGermany2025-10-13Morlong Associates QUALIFIED0Anna Fali
1015Juan WieserGermany2025-10-01Chanay, Jeffrey A Esq QUALIFIED72Amy Elsner
1016Juan WieserSpain2025-10-06Buckley Miller Wright NEGOTIATION8Ioni Bowcher
1017Ricardo GauchoJapan2025-09-22Rangoni Of Florence QUALIFIED37Onyama Limba
1018Kadeem FlosiArgentina2025-10-03Dorl, James J Esq NEGOTIATION95Onyama Limba
1019Kadeem FlosiFrance2025-10-14King, Christopher A Esq RENEWAL5Stephen Shaw
1020Alejandro PerinBrazil2025-09-22King, Christopher A Esq NEGOTIATION98Elwin Sharvill
1021Mujtaba NickaItaly2025-09-20Morlong Associates UNQUALIFIED51Anna Fali
1022Wickens NestleItaly2025-09-27Chemel, James L Cpa QUALIFIED16Bernardo Dominic
1023James ButtGermany2025-10-01Chanay, Jeffrey A Esq NEW89Elwin Sharvill
1024Morrow RutaFrance2025-10-17Printing Dimensions NEGOTIATION47Ioni Bowcher
1025Smith GlickIndia2025-09-22Chanay, Jeffrey A Esq QUALIFIED12Xuxue Feng
1026Morrow RutaArgentina2025-09-23Commercial Press UNQUALIFIED91Ioni Bowcher
1027Greenwood BologniaUnited Kingdom2025-09-22King, Christopher A Esq QUALIFIED51Xuxue Feng
1028Clifford RimSpain2025-10-15Benton, John B Jr UNQUALIFIED98Asiya Javayant
1029Kadeem FlosiCanada2025-10-02King, Christopher A Esq NEGOTIATION95Xuxue Feng
1030Murillo MaletGermany2025-10-17King, Christopher A Esq QUALIFIED85Onyama Limba
1031Leja CaldareraIndia2025-10-08Benton, John B Jr QUALIFIED48Anna Fali
1032Jefferson SchemmerArgentina2025-09-20Rangoni Of Florence QUALIFIED7Elwin Sharvill
1033Alejandro PerinRussia2025-10-17Feiner Bros NEGOTIATION35Bernardo Dominic
1034Johnson SergiIndia2025-10-04Buckley Miller Wright NEGOTIATION45Amy Elsner
1035Alejandro PerinIndia2025-10-08Commercial Press UNQUALIFIED51Asiya Javayant
1036Misaki RoysterSpain2025-09-29Printing Dimensions QUALIFIED98Xuxue Feng
1037Stacey MacleadRussia2025-10-04Printing Dimensions RENEWAL29Ioni Bowcher
1038Aditya KuskoGermany2025-10-05Chanay, Jeffrey A Esq RENEWAL75Ioni Bowcher
1039Alejandro PerinRussia2025-09-30Benton, John B Jr UNQUALIFIED4Onyama Limba
1040Sinclair WaycottCanada2025-10-18Chapman, Ross E Esq NEW53Stephen Shaw
1041Antonio CaudyUnited Kingdom2025-10-12King, Christopher A Esq NEGOTIATION91Elwin Sharvill
1042Silvio SlusarskiSpain2025-10-01Chapman, Ross E Esq RENEWAL69Xuxue Feng
1043Maisha RulapaughBrazil2025-10-07Commercial Press UNQUALIFIED24Ioni Bowcher
1044Chavez BriddickCanada2025-10-05Truhlar And Truhlar Attys UNQUALIFIED30Asiya Javayant
1045Salvatore StockhamIndia2025-09-29Truhlar And Truhlar Attys NEGOTIATION53Elwin Sharvill
1046Alejandro PerinArgentina2025-10-17Rangoni Of Florence QUALIFIED89Onyama Limba
1047Maisha RulapaughRussia2025-10-10Printing Dimensions UNQUALIFIED9Ivan Magalhaes
1048Isabel BowleyAustralia2025-09-21King, Christopher A Esq PROPOSAL7Asiya Javayant
1049Rodrigues CampainUnited Kingdom2025-10-11Printing Dimensions NEGOTIATION44Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Darci PoquetteGermanyIvan Magalhaes QUALIFIED
Wickens NestleGermanyAmy Elsner RENEWAL
Alejandro PerinUnited KingdomIvan Magalhaes NEW
Aruna FigeroaSpainXuxue Feng NEGOTIATION
Sinclair WaycottJapanElwin Sharvill RENEWAL
Munro FerenczRussiaElwin Sharvill UNQUALIFIED
James ButtJapanAmy Elsner PROPOSAL
Morrow RutaBrazilAmy Elsner QUALIFIED
Greenwood BologniaRussiaAmy Elsner RENEWAL
Ashley DoeGermanyAsiya Javayant PROPOSAL
Darci PoquetteJapanXuxue Feng NEW
Stacey MacleadArgentinaOnyama Limba PROPOSAL
Wickens NestleUnited KingdomAnna Fali QUALIFIED
Deepesh ChuiSpainAnna Fali UNQUALIFIED
Aditya KuskoAustraliaBernardo Dominic UNQUALIFIED
Rodrigues CampainJapanAmy Elsner NEGOTIATION
Smith GlickCanadaBernardo Dominic RENEWAL
Ivar PaprockiJapanIoni Bowcher NEGOTIATION
Emily WhobreyItalyIoni Bowcher QUALIFIED
Isabel BowleyArgentinaElwin Sharvill PROPOSAL
Izzy GarufiFranceElwin Sharvill NEGOTIATION
Octavia MaletGermanyAsiya Javayant PROPOSAL
Maisha RulapaughGermanyBernardo Dominic PROPOSAL
Chavez BriddickItalyIvan Magalhaes NEGOTIATION
Ivar PaprockiIndiaIvan Magalhaes QUALIFIED
Francesco ShinkoCanadaElwin Sharvill PROPOSAL
Izzy GarufiItalyOnyama Limba QUALIFIED
Antonio CaudyArgentinaAsiya Javayant NEGOTIATION
Mayumi KolmetzSpainIvan Magalhaes PROPOSAL
Emily WhobreyRussiaElwin Sharvill QUALIFIED
Misaki RoysterIndiaAmy Elsner PROPOSAL
Rodrigues CampainGermanyElwin Sharvill RENEWAL
Aruna FigeroaFranceIvan Magalhaes QUALIFIED
Johnson SergiIndiaAsiya Javayant RENEWAL
Murillo MaletFranceAsiya Javayant UNQUALIFIED
Aika InouyeArgentinaXuxue Feng RENEWAL
Leja CaldareraFranceAmy Elsner RENEWAL
Nicolas IturbideFranceElwin Sharvill NEGOTIATION
Chavez BriddickItalyElwin Sharvill UNQUALIFIED
Kadeem FlosiItalyIvan Magalhaes PROPOSAL
Wickens NestleRussiaXuxue Feng NEGOTIATION
Kaitlin OstroskySpainElwin Sharvill QUALIFIED
Murillo MaletAustraliaXuxue Feng UNQUALIFIED
Cody SaylorsJapanXuxue Feng RENEWAL
Izzy GarufiBrazilElwin Sharvill UNQUALIFIED
Deepesh ChuiFranceIvan Magalhaes NEW
Antonio CaudyRussiaIvan Magalhaes PROPOSAL
Faith GillianJapanOnyama Limba QUALIFIED
Julie StensethBrazilIvan Magalhaes NEGOTIATION
Izzy GarufiArgentinaElwin Sharvill NEW
Frozen Columns
Name
Antonio Caudy
Rodrigues Campain
Salvatore Stockham
Chavez Briddick
Rodrigues Campain
David Darakjy
Arvin Albares
Deepesh Chui
Silvio Slusarski
Silvio Slusarski
Alejandro Perin
Sinclair Waycott
Aika Inouye
David Darakjy
Leja Caldarera
Ashley Doe
Nicolas Iturbide
Murillo Malet
Smith Glick
David Darakjy
Emily Whobrey
Juan Wieser
Clifford Rim
Maria Marrier
Kadeem Flosi
Jeanfrancois Venere
Greenwood Bolognia
Maisha Rulapaugh
Johnson Sergi
Misaki Royster
Clifford Rim
Murillo Malet
Izzy Garufi
Izzy Garufi
Mujtaba Nicka
Jefferson Schemmer
Maisha Rulapaugh
Adams Morasca
Adams Morasca
Mayumi Kolmetz
Jones Vocelka
Octavia Malet
Alejandro Perin
Wickens Nestle
Aditya Kusko
Chavez Briddick
Kadeem Flosi
Kadeem Flosi
Mujtaba Nicka
Leja Caldarera
IdCountryDate
1000Russia2025-10-03
1001Brazil2025-09-26
1002Australia2025-10-08
1003Spain2025-10-16
1004Italy2025-10-10
1005Brazil2025-10-09
1006Australia2025-09-30
1007United Kingdom2025-10-07
1008Argentina2025-09-20
1009Germany2025-10-16
1010France2025-10-18
1011Japan2025-09-29
1012Germany2025-09-23
1013Russia2025-09-28
1014Russia2025-10-03
1015Germany2025-09-24
1016Japan2025-10-13
1017Italy2025-10-01
1018Germany2025-09-24
1019Italy2025-10-08
1020Argentina2025-10-18
1021United Kingdom2025-09-22
1022Argentina2025-09-26
1023Spain2025-09-20
1024Japan2025-09-29
1025Spain2025-10-07
1026Australia2025-10-14
1027Australia2025-09-23
1028Australia2025-09-26
1029Brazil2025-10-17
1030France2025-09-27
1031Italy2025-09-27
1032Argentina2025-10-12
1033Australia2025-10-03
1034Italy2025-09-26
1035Russia2025-09-21
1036Japan2025-10-08
1037Russia2025-10-16
1038France2025-09-23
1039United Kingdom2025-09-20
1040Australia2025-09-20
1041Brazil2025-10-10
1042Japan2025-09-30
1043France2025-10-08
1044United Kingdom2025-10-16
1045Argentina2025-09-26
1046Brazil2025-09-26
1047France2025-10-15
1048India2025-10-18
1049France2025-10-17

On-Demand Data

NameIdCountryDate
Leon Oldroyd1000Australia2025-10-13
Murillo Malet1001France2025-09-28
Claire Tollner1002India2025-09-20
Ashley Doe1003Canada2025-10-15
Mujtaba Nicka1004United Kingdom2025-09-27
Ashley Doe1005Italy2025-09-20
Misaki Royster1006India2025-09-27
Aruna Figeroa1007Japan2025-09-24
Johnson Sergi1008Spain2025-09-20
Costa Dilliard1009Germany2025-10-19
Maisha Rulapaugh1010Russia2025-10-08
Izzy Garufi1011Brazil2025-10-03
Morrow Ruta1012Germany2025-10-18
Claire Tollner1013Germany2025-10-18
Nicolas Iturbide1014Argentina2025-10-07
Faith Gillian1015Russia2025-10-09
Izzy Garufi1016Italy2025-10-06
Mujtaba Nicka1017France2025-10-09
Leon Oldroyd1018Spain2025-09-26
Emily Whobrey1019Spain2025-10-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ivar PaprockiBrazilStephen Shaw RENEWAL
Ricardo GauchoJapanBernardo Dominic NEW
Rodrigues CampainUnited KingdomAnna Fali QUALIFIED
Mayumi KolmetzBrazilElwin Sharvill RENEWAL
Aditya KuskoRussiaElwin Sharvill QUALIFIED
Ricardo GauchoFranceAnna Fali RENEWAL
Alejandro PerinGermanyAnna Fali NEGOTIATION
Adams MorascaArgentinaOnyama Limba UNQUALIFIED
Morrow RutaRussiaXuxue Feng QUALIFIED
Sinclair WaycottSpainAmy Elsner QUALIFIED
Chavez BriddickIndiaXuxue Feng NEGOTIATION
Mayumi KolmetzAustraliaAmy Elsner RENEWAL
Aditya KuskoSpainXuxue Feng PROPOSAL
Morrow RutaBrazilAnna Fali PROPOSAL
Emily WhobreyArgentinaIoni Bowcher QUALIFIED
Cody SaylorsArgentinaAnna Fali NEGOTIATION
Ivar PaprockiAustraliaStephen Shaw NEGOTIATION
Juan WieserFranceBernardo Dominic NEGOTIATION
Isabel BowleyRussiaAmy Elsner QUALIFIED
Rodrigues CampainGermanyBernardo Dominic PROPOSAL
Murillo MaletAustraliaElwin Sharvill RENEWAL
Maisha RulapaughGermanyBernardo Dominic RENEWAL
Nicolas IturbideJapanOnyama Limba NEW
Costa DilliardBrazilAsiya Javayant RENEWAL
Ivar PaprockiCanadaAsiya Javayant PROPOSAL
Morrow RutaUnited KingdomAmy Elsner PROPOSAL
Chavez BriddickGermanyAnna Fali RENEWAL
Aruna FigeroaArgentinaElwin Sharvill RENEWAL
Munro FerenczItalyAsiya Javayant UNQUALIFIED
Juan WieserIndiaElwin Sharvill UNQUALIFIED
Silvio SlusarskiCanadaStephen Shaw PROPOSAL
Murillo MaletBrazilStephen Shaw PROPOSAL
Silvio SlusarskiItalyAsiya Javayant RENEWAL
Julie StensethJapanXuxue Feng UNQUALIFIED
Johnson SergiAustraliaIvan Magalhaes NEW
Jefferson SchemmerJapanIoni Bowcher UNQUALIFIED
Emily WhobreyGermanyIvan Magalhaes RENEWAL
Tony FollerSpainAsiya Javayant PROPOSAL
Arvin AlbaresSpainOnyama Limba QUALIFIED
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>