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
Cody SaylorsFranceIoni Bowcher PROPOSAL
Adams MorascaRussiaStephen Shaw QUALIFIED
David DarakjyArgentinaOnyama Limba UNQUALIFIED
Chavez BriddickGermanyAmy Elsner UNQUALIFIED
Jennifer AmigonIndiaAnna Fali NEGOTIATION
Isabel BowleyIndiaAsiya Javayant QUALIFIED
Sinclair WaycottItalyAsiya Javayant NEW
Maisha RulapaughRussiaAmy Elsner NEGOTIATION
Murillo MaletSpainIoni Bowcher UNQUALIFIED
Kaitlin OstroskyAustraliaAsiya Javayant UNQUALIFIED
Kaitlin OstroskyRussiaBernardo Dominic QUALIFIED
Jeanfrancois VenereSpainAnna Fali RENEWAL
James ButtCanadaElwin Sharvill QUALIFIED
Arvin AlbaresUnited KingdomIvan Magalhaes NEGOTIATION
Jefferson SchemmerItalyBernardo Dominic NEGOTIATION
Leon OldroydSpainBernardo Dominic NEGOTIATION
Octavia MaletAustraliaAsiya Javayant NEW
Morrow RutaUnited KingdomIvan Magalhaes RENEWAL
Aditya KuskoCanadaAnna Fali NEW
Leja CaldareraCanadaAmy Elsner QUALIFIED
Nicolas IturbideJapanStephen Shaw UNQUALIFIED
Alejandro PerinItalyOnyama Limba NEGOTIATION
Kadeem FlosiGermanyIvan Magalhaes UNQUALIFIED
Clifford RimRussiaXuxue Feng RENEWAL
Ivar PaprockiJapanIoni Bowcher PROPOSAL
Maria MarrierFranceStephen Shaw RENEWAL
Tony FollerAustraliaElwin Sharvill UNQUALIFIED
Munro FerenczJapanOnyama Limba RENEWAL
Maria MarrierGermanyBernardo Dominic UNQUALIFIED
Juan WieserItalyElwin Sharvill PROPOSAL
Maisha RulapaughArgentinaIvan Magalhaes PROPOSAL
Mayumi KolmetzItalyAnna Fali NEW
Morrow RutaUnited KingdomOnyama Limba NEGOTIATION
Nicolas IturbideFranceAsiya Javayant RENEWAL
Jeanfrancois VenereIndiaStephen Shaw NEW
Jeanfrancois VenereFranceStephen Shaw QUALIFIED
Murillo MaletFranceAnna Fali RENEWAL
James ButtIndiaIvan Magalhaes UNQUALIFIED
Chavez BriddickBrazilAsiya Javayant QUALIFIED
Darci PoquetteBrazilAsiya Javayant PROPOSAL
Rodrigues CampainBrazilAsiya Javayant PROPOSAL
Ashley DoeIndiaBernardo Dominic UNQUALIFIED
Murillo MaletFranceElwin Sharvill NEGOTIATION
Rodrigues CampainItalyAmy Elsner UNQUALIFIED
Stacey MacleadIndiaOnyama Limba NEW
Leon OldroydRussiaAsiya Javayant UNQUALIFIED
Octavia MaletCanadaBernardo Dominic NEW
Ashley DoeGermanyStephen Shaw RENEWAL
Faith GillianArgentinaIvan Magalhaes NEW
Maisha RulapaughJapanBernardo Dominic NEW
Horizontal
NameCountryRepresentativeStatus
Wickens NestleRussiaStephen Shaw NEGOTIATION
Jennifer AmigonSpainBernardo Dominic QUALIFIED
Kadeem FlosiUnited KingdomOnyama Limba NEGOTIATION
Jennifer AmigonFranceAsiya Javayant NEW
Antonio CaudyFranceAsiya Javayant NEW
Octavia MaletSpainIoni Bowcher QUALIFIED
Costa DilliardFranceAsiya Javayant RENEWAL
Arvin AlbaresCanadaOnyama Limba NEW
Kaitlin OstroskyRussiaStephen Shaw QUALIFIED
Misaki RoysterArgentinaElwin Sharvill NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jones VocelkaSpain2026-04-24Chapman, Ross E Esq NEW63Ivan Magalhaes
1001Morrow RutaJapan2026-05-16Feltz Printing Service RENEWAL99Stephen Shaw
1002Aditya KuskoAustralia2026-05-06Dorl, James J Esq QUALIFIED0Asiya Javayant
1003Emily WhobreyItaly2026-05-02Commercial Press UNQUALIFIED51Xuxue Feng
1004Deepesh ChuiSpain2026-04-20Rangoni Of Florence UNQUALIFIED23Bernardo Dominic
1005Mayumi KolmetzRussia2026-05-03Dorl, James J Esq UNQUALIFIED51Amy Elsner
1006Maisha RulapaughAustralia2026-05-16Printing Dimensions NEW82Ioni Bowcher
1007Smith GlickJapan2026-05-01Chanay, Jeffrey A Esq RENEWAL71Bernardo Dominic
1008Salvatore StockhamItaly2026-05-02Rousseaux, Michael Esq RENEWAL13Ivan Magalhaes
1009Stacey MacleadSpain2026-04-21Chemel, James L Cpa UNQUALIFIED32Ioni Bowcher
1010Clifford RimGermany2026-05-06Rousseaux, Michael Esq NEW97Onyama Limba
1011Nicolas IturbideBrazil2026-05-06Morlong Associates RENEWAL75Asiya Javayant
1012Adams MorascaBrazil2026-04-17Chapman, Ross E Esq QUALIFIED5Bernardo Dominic
1013Ricardo GauchoFrance2026-04-18Rousseaux, Michael Esq NEW5Elwin Sharvill
1014Izzy GarufiGermany2026-05-12Chapman, Ross E Esq NEW21Amy Elsner
1015Darci PoquetteFrance2026-05-11Truhlar And Truhlar Attys RENEWAL48Anna Fali
1016Greenwood BologniaCanada2026-04-23Buckley Miller Wright NEW16Ivan Magalhaes
1017Jones VocelkaBrazil2026-05-09Benton, John B Jr NEW21Anna Fali
1018Greenwood BologniaUnited Kingdom2026-04-23Buckley Miller Wright NEGOTIATION76Amy Elsner
1019Juan WieserArgentina2026-04-19Chemel, James L Cpa UNQUALIFIED2Anna Fali
1020Tony FollerRussia2026-04-18Dorl, James J Esq RENEWAL66Elwin Sharvill
1021Francesco ShinkoArgentina2026-05-15Dorl, James J Esq QUALIFIED59Ioni Bowcher
1022Wickens NestleFrance2026-05-03Dorl, James J Esq QUALIFIED32Amy Elsner
1023Ivar PaprockiArgentina2026-05-07Morlong Associates NEGOTIATION20Asiya Javayant
1024Ashley DoeSpain2026-05-06Chanay, Jeffrey A Esq RENEWAL8Ioni Bowcher
1025Antonio CaudyAustralia2026-05-02Commercial Press NEGOTIATION16Amy Elsner
1026Francesco ShinkoCanada2026-04-27Benton, John B Jr UNQUALIFIED1Ioni Bowcher
1027Silvio SlusarskiFrance2026-04-22Chanay, Jeffrey A Esq QUALIFIED18Elwin Sharvill
1028Claire TollnerIndia2026-04-29Feiner Bros NEGOTIATION58Amy Elsner
1029Jeanfrancois VenereGermany2026-04-19Rangoni Of Florence PROPOSAL93Asiya Javayant
1030Costa DilliardItaly2026-04-17Dorl, James J Esq PROPOSAL30Ivan Magalhaes
1031Isabel BowleyItaly2026-04-27Chanay, Jeffrey A Esq NEGOTIATION6Elwin Sharvill
1032Salvatore StockhamItaly2026-05-14Buckley Miller Wright RENEWAL72Bernardo Dominic
1033Murillo MaletBrazil2026-05-05Feltz Printing Service UNQUALIFIED76Onyama Limba
1034Stacey MacleadCanada2026-05-05Dorl, James J Esq NEGOTIATION2Amy Elsner
1035Claire TollnerSpain2026-05-04Rangoni Of Florence PROPOSAL74Bernardo Dominic
1036Adams MorascaUnited Kingdom2026-05-01Rousseaux, Michael Esq NEW27Bernardo Dominic
1037Aika InouyeGermany2026-05-05Commercial Press RENEWAL90Ivan Magalhaes
1038Munro FerenczSpain2026-04-28Morlong Associates RENEWAL18Anna Fali
1039Juan WieserFrance2026-04-29Truhlar And Truhlar Attys NEW74Elwin Sharvill
1040Leja CaldareraSpain2026-05-08Morlong Associates PROPOSAL18Bernardo Dominic
1041Maria MarrierJapan2026-05-02Chemel, James L Cpa NEGOTIATION48Anna Fali
1042Mujtaba NickaSpain2026-05-11Chapman, Ross E Esq RENEWAL63Asiya Javayant
1043Leon OldroydBrazil2026-05-01Chapman, Ross E Esq PROPOSAL7Ivan Magalhaes
1044Nicolas IturbideBrazil2026-04-28Chemel, James L Cpa PROPOSAL0Onyama Limba
1045Isabel BowleyAustralia2026-04-17Commercial Press NEGOTIATION70Stephen Shaw
1046Kadeem FlosiIndia2026-05-08Truhlar And Truhlar Attys NEW48Onyama Limba
1047Wickens NestleGermany2026-04-20Truhlar And Truhlar Attys PROPOSAL68Bernardo Dominic
1048Leon OldroydItaly2026-04-24Buckley Miller Wright NEGOTIATION13Amy Elsner
1049Leja CaldareraIndia2026-04-26Buckley Miller Wright PROPOSAL68Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Leon OldroydItalyIoni Bowcher NEW
Jeanfrancois VenereItalyElwin Sharvill RENEWAL
Johnson SergiGermanyElwin Sharvill UNQUALIFIED
Alejandro PerinCanadaAmy Elsner PROPOSAL
Claire TollnerIndiaElwin Sharvill QUALIFIED
Faith GillianItalyStephen Shaw QUALIFIED
Murillo MaletBrazilBernardo Dominic UNQUALIFIED
Deepesh ChuiBrazilAmy Elsner QUALIFIED
Alejandro PerinFranceElwin Sharvill NEGOTIATION
Cody SaylorsIndiaIoni Bowcher RENEWAL
Jefferson SchemmerGermanyOnyama Limba UNQUALIFIED
Smith GlickArgentinaOnyama Limba UNQUALIFIED
Antonio CaudyIndiaBernardo Dominic RENEWAL
Arvin AlbaresUnited KingdomElwin Sharvill PROPOSAL
Mayumi KolmetzUnited KingdomOnyama Limba QUALIFIED
Morrow RutaArgentinaBernardo Dominic NEGOTIATION
Jefferson SchemmerSpainOnyama Limba RENEWAL
Kadeem FlosiArgentinaElwin Sharvill QUALIFIED
Julie StensethAustraliaBernardo Dominic PROPOSAL
Tony FollerCanadaBernardo Dominic QUALIFIED
Kaitlin OstroskyCanadaElwin Sharvill PROPOSAL
Mayumi KolmetzIndiaBernardo Dominic UNQUALIFIED
Clifford RimCanadaBernardo Dominic NEW
Ricardo GauchoIndiaXuxue Feng PROPOSAL
Greenwood BologniaCanadaOnyama Limba QUALIFIED
Johnson SergiItalyOnyama Limba PROPOSAL
Chavez BriddickSpainAsiya Javayant NEW
Jones VocelkaCanadaBernardo Dominic UNQUALIFIED
Claire TollnerCanadaStephen Shaw QUALIFIED
Faith GillianSpainOnyama Limba QUALIFIED
Jeanfrancois VenereFranceStephen Shaw NEGOTIATION
Salvatore StockhamCanadaBernardo Dominic UNQUALIFIED
Clifford RimItalyIvan Magalhaes UNQUALIFIED
Misaki RoysterGermanyAmy Elsner UNQUALIFIED
Adams MorascaAustraliaBernardo Dominic PROPOSAL
Leon OldroydIndiaIoni Bowcher UNQUALIFIED
Ricardo GauchoAustraliaOnyama Limba RENEWAL
Aditya KuskoGermanyElwin Sharvill PROPOSAL
Maisha RulapaughItalyIoni Bowcher PROPOSAL
Mujtaba NickaUnited KingdomAsiya Javayant RENEWAL
Julie StensethIndiaIoni Bowcher NEGOTIATION
Misaki RoysterCanadaElwin Sharvill PROPOSAL
Aika InouyeArgentinaOnyama Limba QUALIFIED
Murillo MaletArgentinaIvan Magalhaes UNQUALIFIED
Alejandro PerinCanadaIoni Bowcher QUALIFIED
Kadeem FlosiIndiaElwin Sharvill UNQUALIFIED
Cody SaylorsAustraliaIoni Bowcher NEW
Sinclair WaycottIndiaStephen Shaw NEW
Alejandro PerinGermanyIvan Magalhaes QUALIFIED
Aika InouyeFranceElwin Sharvill RENEWAL
Frozen Columns
Name
Ricardo Gaucho
Jones Vocelka
Juan Wieser
Maria Marrier
Adams Morasca
Claire Tollner
Murillo Malet
Leon Oldroyd
Smith Glick
Leja Caldarera
Misaki Royster
Deepesh Chui
Octavia Malet
Salvatore Stockham
Misaki Royster
Aditya Kusko
Adams Morasca
Kadeem Flosi
Johnson Sergi
Kadeem Flosi
Jennifer Amigon
Adams Morasca
Smith Glick
Kaitlin Ostrosky
Emily Whobrey
Costa Dilliard
Deepesh Chui
Kaitlin Ostrosky
Ashley Doe
Johnson Sergi
Silvio Slusarski
Smith Glick
Costa Dilliard
Adams Morasca
Johnson Sergi
David Darakjy
Aditya Kusko
Leon Oldroyd
Kaitlin Ostrosky
Smith Glick
Wickens Nestle
Izzy Garufi
Cody Saylors
Smith Glick
Silvio Slusarski
Deepesh Chui
Aditya Kusko
Emily Whobrey
James Butt
Mayumi Kolmetz
IdCountryDate
1000Russia2026-05-04
1001Germany2026-04-25
1002Canada2026-05-11
1003Japan2026-05-02
1004United Kingdom2026-04-21
1005Argentina2026-04-26
1006Australia2026-04-25
1007Japan2026-05-14
1008Italy2026-04-26
1009Germany2026-04-30
1010Brazil2026-04-30
1011Japan2026-04-22
1012Australia2026-05-14
1013Spain2026-05-08
1014Canada2026-04-19
1015Brazil2026-04-28
1016Argentina2026-05-12
1017Canada2026-04-24
1018United Kingdom2026-04-18
1019Argentina2026-05-10
1020France2026-05-02
1021United Kingdom2026-04-21
1022India2026-05-04
1023Canada2026-05-11
1024Italy2026-04-25
1025Argentina2026-04-21
1026Japan2026-05-08
1027Argentina2026-04-20
1028Italy2026-04-30
1029Canada2026-05-13
1030Japan2026-05-04
1031India2026-05-15
1032Brazil2026-05-03
1033Brazil2026-04-17
1034Russia2026-05-06
1035Argentina2026-04-26
1036Brazil2026-05-16
1037Canada2026-05-01
1038Russia2026-05-15
1039Italy2026-05-05
1040India2026-04-24
1041Japan2026-04-30
1042Russia2026-05-02
1043Germany2026-05-02
1044Japan2026-05-12
1045Germany2026-05-11
1046France2026-04-24
1047Australia2026-05-02
1048Argentina2026-05-02
1049Canada2026-04-22

On-Demand Data

NameIdCountryDate
Jones Vocelka1000Brazil2026-05-15
Mayumi Kolmetz1001Italy2026-05-04
Leja Caldarera1002Canada2026-05-04
Jennifer Amigon1003Italy2026-05-16
Cody Saylors1004France2026-04-20
Silvio Slusarski1005Germany2026-04-25
Stacey Maclead1006Italy2026-04-19
Misaki Royster1007India2026-05-08
Ricardo Gaucho1008Australia2026-05-11
Mayumi Kolmetz1009Spain2026-05-08
Izzy Garufi1010Spain2026-05-11
Leja Caldarera1011United Kingdom2026-04-27
Emily Whobrey1012Spain2026-04-27
Adams Morasca1013Canada2026-05-11
Aditya Kusko1014United Kingdom2026-05-16
Kaitlin Ostrosky1015India2026-04-27
Mujtaba Nicka1016United Kingdom2026-05-04
Kaitlin Ostrosky1017France2026-04-24
Misaki Royster1018Russia2026-04-23
Isabel Bowley1019Argentina2026-05-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Smith GlickRussiaIoni Bowcher UNQUALIFIED
Misaki RoysterIndiaStephen Shaw NEW
Smith GlickItalyElwin Sharvill NEW
Kaitlin OstroskySpainElwin Sharvill NEW
Salvatore StockhamGermanyStephen Shaw PROPOSAL
Deepesh ChuiUnited KingdomStephen Shaw NEW
Ricardo GauchoFranceAnna Fali PROPOSAL
Kaitlin OstroskyAustraliaStephen Shaw QUALIFIED
Stacey MacleadBrazilIvan Magalhaes NEW
Arvin AlbaresUnited KingdomOnyama Limba PROPOSAL
Francesco ShinkoArgentinaStephen Shaw UNQUALIFIED
Greenwood BologniaUnited KingdomIvan Magalhaes QUALIFIED
Wickens NestleCanadaOnyama Limba NEGOTIATION
Wickens NestleIndiaAmy Elsner NEGOTIATION
Claire TollnerSpainXuxue Feng RENEWAL
Leon OldroydAustraliaAnna Fali NEGOTIATION
Murillo MaletAustraliaAmy Elsner UNQUALIFIED
Claire TollnerFranceStephen Shaw NEGOTIATION
Wickens NestleItalyIvan Magalhaes NEGOTIATION
Cody SaylorsJapanXuxue Feng PROPOSAL
Rodrigues CampainItalyElwin Sharvill NEW
Maria MarrierUnited KingdomIoni Bowcher QUALIFIED
Jennifer AmigonRussiaElwin Sharvill RENEWAL
David DarakjyIndiaIoni Bowcher PROPOSAL
Izzy GarufiFranceAnna Fali UNQUALIFIED
Jeanfrancois VenereItalyAmy Elsner UNQUALIFIED
Rodrigues CampainArgentinaAsiya Javayant RENEWAL
Salvatore StockhamSpainXuxue Feng NEGOTIATION
Rodrigues CampainSpainIvan Magalhaes QUALIFIED
Mujtaba NickaBrazilAsiya Javayant NEW
Jennifer AmigonIndiaAmy Elsner UNQUALIFIED
Ricardo GauchoFranceAnna Fali QUALIFIED
Johnson SergiBrazilAsiya Javayant UNQUALIFIED
Costa DilliardJapanIoni Bowcher QUALIFIED
Julie StensethBrazilIvan Magalhaes QUALIFIED
Adams MorascaItalyIvan Magalhaes RENEWAL
Kaitlin OstroskyArgentinaAmy Elsner RENEWAL
Greenwood BologniaRussiaIoni Bowcher RENEWAL
Mujtaba NickaUnited KingdomIvan Magalhaes NEW
Maisha RulapaughSpainIoni Bowcher UNQUALIFIED

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