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
Murillo MaletCanadaIoni Bowcher RENEWAL
Antonio CaudyIndiaAnna Fali QUALIFIED
Greenwood BologniaArgentinaAmy Elsner NEW
Jones VocelkaSpainIoni Bowcher NEGOTIATION
Kaitlin OstroskyCanadaIvan Magalhaes PROPOSAL
Isabel BowleyIndiaIoni Bowcher UNQUALIFIED
Antonio CaudyBrazilIoni Bowcher QUALIFIED
Maria MarrierArgentinaBernardo Dominic NEGOTIATION
Darci PoquetteCanadaIvan Magalhaes QUALIFIED
Ricardo GauchoUnited KingdomXuxue Feng NEGOTIATION
Aruna FigeroaIndiaIvan Magalhaes RENEWAL
Maria MarrierBrazilIoni Bowcher NEGOTIATION
Faith GillianBrazilStephen Shaw QUALIFIED
Morrow RutaAustraliaBernardo Dominic NEW
Leja CaldareraIndiaAsiya Javayant RENEWAL
Rodrigues CampainIndiaStephen Shaw UNQUALIFIED
Tony FollerAustraliaOnyama Limba UNQUALIFIED
Claire TollnerSpainAnna Fali QUALIFIED
Claire TollnerArgentinaIvan Magalhaes PROPOSAL
Ivar PaprockiSpainXuxue Feng RENEWAL
Stacey MacleadArgentinaAnna Fali NEW
Rodrigues CampainItalyIvan Magalhaes NEGOTIATION
Sinclair WaycottUnited KingdomOnyama Limba NEW
Mujtaba NickaBrazilElwin Sharvill UNQUALIFIED
Deepesh ChuiSpainIvan Magalhaes PROPOSAL
Morrow RutaItalyOnyama Limba NEW
Jones VocelkaItalyIvan Magalhaes UNQUALIFIED
Morrow RutaIndiaAsiya Javayant NEGOTIATION
Jones VocelkaJapanXuxue Feng NEGOTIATION
Salvatore StockhamGermanyAsiya Javayant QUALIFIED
Munro FerenczArgentinaIvan Magalhaes PROPOSAL
Mayumi KolmetzBrazilIoni Bowcher UNQUALIFIED
Tony FollerFranceBernardo Dominic NEW
Greenwood BologniaIndiaAsiya Javayant NEW
Antonio CaudyBrazilAmy Elsner RENEWAL
Arvin AlbaresFranceAmy Elsner NEGOTIATION
Octavia MaletAustraliaAmy Elsner NEW
Ricardo GauchoUnited KingdomBernardo Dominic UNQUALIFIED
Ricardo GauchoCanadaBernardo Dominic RENEWAL
Emily WhobreyItalyElwin Sharvill NEW
Tony FollerIndiaAsiya Javayant PROPOSAL
Emily WhobreyAustraliaOnyama Limba QUALIFIED
Greenwood BologniaRussiaAmy Elsner RENEWAL
Arvin AlbaresUnited KingdomAsiya Javayant QUALIFIED
Darci PoquetteFranceIoni Bowcher PROPOSAL
Clifford RimBrazilAmy Elsner UNQUALIFIED
Emily WhobreyJapanIvan Magalhaes UNQUALIFIED
Deepesh ChuiRussiaAmy Elsner UNQUALIFIED
Ivar PaprockiSpainBernardo Dominic NEGOTIATION
Clifford RimIndiaIvan Magalhaes RENEWAL
Horizontal
NameCountryRepresentativeStatus
Jones VocelkaSpainIvan Magalhaes NEGOTIATION
Aika InouyeBrazilStephen Shaw NEW
Leon OldroydFranceAmy Elsner RENEWAL
Ashley DoeCanadaAnna Fali NEGOTIATION
Nicolas IturbideGermanyStephen Shaw NEW
Francesco ShinkoAustraliaOnyama Limba RENEWAL
Silvio SlusarskiCanadaAmy Elsner NEW
Ivar PaprockiSpainIoni Bowcher RENEWAL
Chavez BriddickGermanyAsiya Javayant QUALIFIED
Smith GlickCanadaXuxue Feng UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Morrow RutaRussia2026-05-30Benton, John B Jr PROPOSAL91Stephen Shaw
1001Maria MarrierArgentina2026-06-17Feltz Printing Service PROPOSAL72Amy Elsner
1002Leja CaldareraJapan2026-05-26Chemel, James L Cpa NEW58Bernardo Dominic
1003Claire TollnerRussia2026-06-15Printing Dimensions UNQUALIFIED77Stephen Shaw
1004Tony FollerCanada2026-06-16Feltz Printing Service UNQUALIFIED55Asiya Javayant
1005Jefferson SchemmerSpain2026-06-15Truhlar And Truhlar Attys NEW62Onyama Limba
1006Maisha RulapaughGermany2026-05-28Dorl, James J Esq UNQUALIFIED84Bernardo Dominic
1007Isabel BowleyAustralia2026-06-16Buckley Miller Wright NEGOTIATION51Ioni Bowcher
1008Antonio CaudyGermany2026-05-28Rangoni Of Florence UNQUALIFIED41Anna Fali
1009Deepesh ChuiGermany2026-06-14Benton, John B Jr UNQUALIFIED15Stephen Shaw
1010Juan WieserGermany2026-06-16Truhlar And Truhlar Attys RENEWAL72Amy Elsner
1011Silvio SlusarskiBrazil2026-06-11Feltz Printing Service NEGOTIATION25Elwin Sharvill
1012Jennifer AmigonIndia2026-06-11Chapman, Ross E Esq QUALIFIED72Bernardo Dominic
1013Izzy GarufiCanada2026-06-17Commercial Press UNQUALIFIED98Ivan Magalhaes
1014Aruna FigeroaSpain2026-05-27Chanay, Jeffrey A Esq PROPOSAL16Stephen Shaw
1015Aditya KuskoBrazil2026-06-08King, Christopher A Esq NEW46Stephen Shaw
1016Faith GillianArgentina2026-06-21Benton, John B Jr RENEWAL72Xuxue Feng
1017Ricardo GauchoUnited Kingdom2026-06-09Chapman, Ross E Esq QUALIFIED63Asiya Javayant
1018Costa DilliardRussia2026-06-16Dorl, James J Esq PROPOSAL56Anna Fali
1019Arvin AlbaresCanada2026-05-28Feiner Bros NEW79Bernardo Dominic
1020Mayumi KolmetzAustralia2026-05-31Buckley Miller Wright NEGOTIATION91Stephen Shaw
1021Aditya KuskoCanada2026-06-12Benton, John B Jr RENEWAL92Ioni Bowcher
1022Tony FollerBrazil2026-06-07Rangoni Of Florence QUALIFIED48Xuxue Feng
1023Jennifer AmigonJapan2026-06-18Chapman, Ross E Esq QUALIFIED82Onyama Limba
1024Leja CaldareraGermany2026-05-26King, Christopher A Esq NEW1Anna Fali
1025Arvin AlbaresItaly2026-06-14King, Christopher A Esq RENEWAL28Anna Fali
1026Wickens NestleUnited Kingdom2026-06-19Rangoni Of Florence NEW41Stephen Shaw
1027Chavez BriddickItaly2026-06-09Printing Dimensions NEW44Asiya Javayant
1028Munro FerenczFrance2026-05-30Chanay, Jeffrey A Esq NEW78Stephen Shaw
1029Izzy GarufiIndia2026-06-10Printing Dimensions UNQUALIFIED19Anna Fali
1030Jefferson SchemmerCanada2026-05-27King, Christopher A Esq QUALIFIED94Elwin Sharvill
1031Arvin AlbaresIndia2026-05-24Buckley Miller Wright NEGOTIATION19Xuxue Feng
1032Rodrigues CampainUnited Kingdom2026-06-11King, Christopher A Esq NEW36Elwin Sharvill
1033Emily WhobreyItaly2026-05-30Morlong Associates NEGOTIATION91Onyama Limba
1034Kadeem FlosiRussia2026-05-31Benton, John B Jr NEGOTIATION93Xuxue Feng
1035Mujtaba NickaJapan2026-06-17Benton, John B Jr RENEWAL48Asiya Javayant
1036Mayumi KolmetzUnited Kingdom2026-06-14Rousseaux, Michael Esq RENEWAL88Asiya Javayant
1037Leon OldroydJapan2026-06-08King, Christopher A Esq PROPOSAL71Xuxue Feng
1038Salvatore StockhamIndia2026-06-18King, Christopher A Esq RENEWAL70Stephen Shaw
1039Mujtaba NickaSpain2026-06-03Truhlar And Truhlar Attys QUALIFIED79Asiya Javayant
1040Sinclair WaycottAustralia2026-06-04Feltz Printing Service NEGOTIATION81Elwin Sharvill
1041Misaki RoysterRussia2026-05-23Printing Dimensions UNQUALIFIED84Xuxue Feng
1042Clifford RimArgentina2026-06-18Buckley Miller Wright UNQUALIFIED81Ivan Magalhaes
1043Jefferson SchemmerIndia2026-05-30Rousseaux, Michael Esq PROPOSAL52Amy Elsner
1044Faith GillianFrance2026-06-17Buckley Miller Wright QUALIFIED75Stephen Shaw
1045Deepesh ChuiItaly2026-06-11Truhlar And Truhlar Attys PROPOSAL37Anna Fali
1046Murillo MaletIndia2026-06-13Benton, John B Jr RENEWAL2Asiya Javayant
1047Wickens NestleBrazil2026-06-20Feiner Bros RENEWAL48Bernardo Dominic
1048Aika InouyeJapan2026-06-06Chemel, James L Cpa UNQUALIFIED82Elwin Sharvill
1049Wickens NestleSpain2026-06-06Chanay, Jeffrey A Esq PROPOSAL28Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Claire TollnerRussiaBernardo Dominic UNQUALIFIED
Ashley DoeCanadaIvan Magalhaes NEGOTIATION
Emily WhobreyItalyStephen Shaw NEW
Antonio CaudyAustraliaBernardo Dominic QUALIFIED
Adams MorascaArgentinaAmy Elsner QUALIFIED
Jefferson SchemmerAustraliaStephen Shaw UNQUALIFIED
Cody SaylorsRussiaAmy Elsner QUALIFIED
Morrow RutaCanadaIoni Bowcher NEGOTIATION
Ricardo GauchoCanadaOnyama Limba NEW
David DarakjyRussiaBernardo Dominic QUALIFIED
Leja CaldareraItalyAsiya Javayant NEGOTIATION
Misaki RoysterUnited KingdomXuxue Feng UNQUALIFIED
Leja CaldareraIndiaXuxue Feng UNQUALIFIED
Maria MarrierUnited KingdomElwin Sharvill RENEWAL
Isabel BowleyJapanAnna Fali QUALIFIED
Ricardo GauchoRussiaAnna Fali PROPOSAL
Maria MarrierSpainAsiya Javayant RENEWAL
Antonio CaudyIndiaElwin Sharvill PROPOSAL
Octavia MaletIndiaBernardo Dominic NEW
Ivar PaprockiGermanyBernardo Dominic PROPOSAL
Smith GlickAustraliaBernardo Dominic PROPOSAL
Sinclair WaycottGermanyAsiya Javayant UNQUALIFIED
Kadeem FlosiBrazilAmy Elsner QUALIFIED
Isabel BowleyArgentinaAsiya Javayant QUALIFIED
Misaki RoysterBrazilAnna Fali PROPOSAL
Aditya KuskoRussiaAsiya Javayant NEGOTIATION
Faith GillianGermanyElwin Sharvill RENEWAL
Antonio CaudyGermanyAnna Fali NEGOTIATION
Tony FollerBrazilAsiya Javayant NEGOTIATION
Maisha RulapaughFranceOnyama Limba PROPOSAL
Jennifer AmigonJapanElwin Sharvill PROPOSAL
Costa DilliardFranceOnyama Limba RENEWAL
James ButtCanadaIvan Magalhaes RENEWAL
Izzy GarufiRussiaXuxue Feng NEGOTIATION
Ivar PaprockiArgentinaElwin Sharvill PROPOSAL
Ashley DoeArgentinaXuxue Feng UNQUALIFIED
Aruna FigeroaRussiaAmy Elsner NEW
Greenwood BologniaSpainXuxue Feng QUALIFIED
Ricardo GauchoArgentinaAnna Fali UNQUALIFIED
Silvio SlusarskiCanadaIvan Magalhaes NEGOTIATION
Sinclair WaycottCanadaIvan Magalhaes NEGOTIATION
Adams MorascaArgentinaElwin Sharvill PROPOSAL
James ButtBrazilAnna Fali UNQUALIFIED
Greenwood BologniaSpainAnna Fali NEW
Emily WhobreyGermanyIvan Magalhaes NEGOTIATION
Nicolas IturbideJapanBernardo Dominic UNQUALIFIED
Ivar PaprockiBrazilAnna Fali RENEWAL
Kadeem FlosiBrazilAsiya Javayant NEW
Costa DilliardSpainIoni Bowcher RENEWAL
James ButtBrazilIoni Bowcher NEW
Frozen Columns
Name
Adams Morasca
Maisha Rulapaugh
Darci Poquette
Smith Glick
Emily Whobrey
Isabel Bowley
Darci Poquette
Emily Whobrey
Julie Stenseth
Cody Saylors
Misaki Royster
Misaki Royster
Sinclair Waycott
Antonio Caudy
Julie Stenseth
Isabel Bowley
Juan Wieser
Maria Marrier
Deepesh Chui
Munro Ferencz
Francesco Shinko
Misaki Royster
James Butt
Munro Ferencz
Izzy Garufi
Murillo Malet
Leon Oldroyd
Deepesh Chui
David Darakjy
Jones Vocelka
Jeanfrancois Venere
Salvatore Stockham
Jennifer Amigon
Wickens Nestle
Costa Dilliard
Emily Whobrey
Darci Poquette
Aditya Kusko
Stacey Maclead
Silvio Slusarski
Jefferson Schemmer
Maisha Rulapaugh
Costa Dilliard
Murillo Malet
Mayumi Kolmetz
Kaitlin Ostrosky
Munro Ferencz
Izzy Garufi
James Butt
Mujtaba Nicka
IdCountryDate
1000Russia2026-06-19
1001Germany2026-06-02
1002Japan2026-06-03
1003Germany2026-05-31
1004United Kingdom2026-05-30
1005Argentina2026-05-27
1006Canada2026-06-02
1007Canada2026-05-27
1008Japan2026-05-25
1009France2026-05-31
1010Argentina2026-06-18
1011Japan2026-06-06
1012India2026-06-16
1013India2026-05-31
1014Canada2026-06-06
1015Japan2026-06-07
1016Spain2026-06-04
1017France2026-06-13
1018Brazil2026-06-14
1019Spain2026-05-28
1020Spain2026-05-26
1021United Kingdom2026-06-08
1022Spain2026-06-18
1023Italy2026-06-08
1024Spain2026-06-13
1025Canada2026-05-28
1026Canada2026-06-10
1027United Kingdom2026-06-11
1028Japan2026-06-12
1029Brazil2026-06-13
1030Australia2026-06-18
1031Spain2026-06-18
1032France2026-06-08
1033Germany2026-06-02
1034Canada2026-06-12
1035France2026-06-01
1036Italy2026-06-21
1037Canada2026-06-11
1038United Kingdom2026-06-12
1039Australia2026-06-10
1040United Kingdom2026-06-04
1041United Kingdom2026-06-01
1042Australia2026-05-26
1043Russia2026-06-12
1044Canada2026-06-03
1045Italy2026-06-20
1046United Kingdom2026-06-11
1047Argentina2026-06-10
1048Brazil2026-06-15
1049Canada2026-06-10

On-Demand Data

NameIdCountryDate
Izzy Garufi1000Russia2026-06-03
Mayumi Kolmetz1001France2026-05-23
Rodrigues Campain1002India2026-05-25
Ivar Paprocki1003Italy2026-05-25
David Darakjy1004India2026-06-13
Cody Saylors1005France2026-05-28
Stacey Maclead1006Spain2026-06-10
Clifford Rim1007Italy2026-06-09
Johnson Sergi1008Spain2026-06-10
Ashley Doe1009Italy2026-05-28
Emily Whobrey1010India2026-05-26
Mujtaba Nicka1011Italy2026-06-08
Smith Glick1012Spain2026-06-18
Adams Morasca1013Australia2026-06-13
Claire Tollner1014United Kingdom2026-06-14
Aika Inouye1015Spain2026-06-07
Juan Wieser1016India2026-05-31
Cody Saylors1017Spain2026-05-26
Mujtaba Nicka1018Argentina2026-06-13
Murillo Malet1019Italy2026-06-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Rodrigues CampainJapanAmy Elsner NEW
Johnson SergiRussiaElwin Sharvill UNQUALIFIED
Ricardo GauchoBrazilBernardo Dominic PROPOSAL
Wickens NestleArgentinaElwin Sharvill QUALIFIED
Alejandro PerinArgentinaIoni Bowcher NEGOTIATION
Aditya KuskoItalyOnyama Limba QUALIFIED
Maria MarrierRussiaBernardo Dominic QUALIFIED
Mayumi KolmetzIndiaElwin Sharvill NEW
Sinclair WaycottUnited KingdomIvan Magalhaes PROPOSAL
Deepesh ChuiItalyIoni Bowcher NEW
Murillo MaletBrazilXuxue Feng PROPOSAL
Clifford RimSpainIoni Bowcher NEW
Cody SaylorsArgentinaIvan Magalhaes RENEWAL
Kaitlin OstroskyAustraliaStephen Shaw NEW
Arvin AlbaresSpainStephen Shaw UNQUALIFIED
Morrow RutaGermanyIvan Magalhaes QUALIFIED
Salvatore StockhamRussiaXuxue Feng QUALIFIED
Faith GillianCanadaXuxue Feng NEW
Arvin AlbaresSpainAsiya Javayant QUALIFIED
Munro FerenczBrazilAsiya Javayant NEGOTIATION
Jennifer AmigonArgentinaXuxue Feng QUALIFIED
Isabel BowleyJapanOnyama Limba NEGOTIATION
James ButtRussiaAmy Elsner QUALIFIED
Antonio CaudyItalyAnna Fali NEGOTIATION
Kadeem FlosiUnited KingdomAmy Elsner NEGOTIATION
Salvatore StockhamJapanAsiya Javayant UNQUALIFIED
Jeanfrancois VenereSpainOnyama Limba PROPOSAL
Smith GlickUnited KingdomElwin Sharvill QUALIFIED
Jennifer AmigonBrazilBernardo Dominic UNQUALIFIED
Emily WhobreyRussiaAmy Elsner PROPOSAL
Emily WhobreyJapanAsiya Javayant QUALIFIED
Julie StensethFranceStephen Shaw QUALIFIED
Deepesh ChuiAustraliaStephen Shaw NEGOTIATION
Aika InouyeSpainXuxue Feng UNQUALIFIED
Tony FollerBrazilOnyama Limba NEGOTIATION
Kadeem FlosiRussiaStephen Shaw NEW
Jefferson SchemmerAustraliaStephen Shaw RENEWAL
Kadeem FlosiGermanyElwin Sharvill UNQUALIFIED
Wickens NestleCanadaIoni Bowcher NEW
Munro FerenczItalyAsiya Javayant 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>