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
Johnson SergiAustraliaElwin Sharvill RENEWAL
Leja CaldareraSpainIvan Magalhaes QUALIFIED
Aika InouyeSpainBernardo Dominic NEGOTIATION
Julie StensethAustraliaAnna Fali RENEWAL
Jones VocelkaRussiaAnna Fali UNQUALIFIED
Munro FerenczJapanXuxue Feng RENEWAL
Francesco ShinkoFranceElwin Sharvill PROPOSAL
Darci PoquetteUnited KingdomAnna Fali NEW
Greenwood BologniaBrazilBernardo Dominic QUALIFIED
Morrow RutaGermanyElwin Sharvill QUALIFIED
Smith GlickItalyStephen Shaw PROPOSAL
Misaki RoysterIndiaAsiya Javayant RENEWAL
Ricardo GauchoArgentinaIoni Bowcher NEGOTIATION
Juan WieserCanadaIvan Magalhaes QUALIFIED
Aruna FigeroaAustraliaXuxue Feng NEGOTIATION
Darci PoquetteJapanIvan Magalhaes PROPOSAL
Adams MorascaItalyAnna Fali QUALIFIED
Emily WhobreySpainBernardo Dominic NEW
Emily WhobreyItalyIvan Magalhaes UNQUALIFIED
Cody SaylorsFranceIvan Magalhaes RENEWAL
Aditya KuskoRussiaElwin Sharvill NEGOTIATION
Chavez BriddickFranceBernardo Dominic QUALIFIED
Antonio CaudyJapanAnna Fali NEGOTIATION
Julie StensethIndiaAsiya Javayant RENEWAL
Cody SaylorsGermanyAmy Elsner QUALIFIED
Nicolas IturbideArgentinaIvan Magalhaes NEGOTIATION
Leja CaldareraCanadaAsiya Javayant NEGOTIATION
Maria MarrierFranceAnna Fali PROPOSAL
Greenwood BologniaCanadaOnyama Limba NEGOTIATION
Chavez BriddickRussiaIvan Magalhaes NEW
Mayumi KolmetzAustraliaStephen Shaw RENEWAL
Ivar PaprockiItalyStephen Shaw NEW
Claire TollnerGermanyIoni Bowcher UNQUALIFIED
Aruna FigeroaArgentinaAmy Elsner UNQUALIFIED
Faith GillianJapanAnna Fali UNQUALIFIED
James ButtGermanyBernardo Dominic QUALIFIED
Mujtaba NickaArgentinaIvan Magalhaes QUALIFIED
Rodrigues CampainUnited KingdomAmy Elsner PROPOSAL
Leja CaldareraRussiaBernardo Dominic NEW
James ButtIndiaOnyama Limba PROPOSAL
Tony FollerGermanyOnyama Limba PROPOSAL
Aruna FigeroaIndiaAnna Fali NEGOTIATION
Smith GlickGermanyOnyama Limba QUALIFIED
Morrow RutaFranceAmy Elsner QUALIFIED
Clifford RimCanadaElwin Sharvill NEW
Aditya KuskoBrazilStephen Shaw PROPOSAL
Salvatore StockhamCanadaIoni Bowcher UNQUALIFIED
Darci PoquetteGermanyXuxue Feng NEW
Kaitlin OstroskyBrazilAmy Elsner NEGOTIATION
Stacey MacleadSpainIvan Magalhaes NEW
Horizontal
NameCountryRepresentativeStatus
Wickens NestleGermanyXuxue Feng NEGOTIATION
Jefferson SchemmerAustraliaOnyama Limba PROPOSAL
Johnson SergiAustraliaStephen Shaw NEW
Rodrigues CampainGermanyAnna Fali NEGOTIATION
Johnson SergiCanadaElwin Sharvill PROPOSAL
Silvio SlusarskiItalyOnyama Limba UNQUALIFIED
Johnson SergiGermanyAmy Elsner UNQUALIFIED
Rodrigues CampainCanadaStephen Shaw UNQUALIFIED
Adams MorascaArgentinaElwin Sharvill UNQUALIFIED
Adams MorascaAustraliaBernardo Dominic RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maria MarrierArgentina2026-04-17Dorl, James J Esq RENEWAL71Amy Elsner
1001Juan WieserArgentina2026-04-28Morlong Associates UNQUALIFIED12Anna Fali
1002Leon OldroydBrazil2026-04-03Buckley Miller Wright RENEWAL91Onyama Limba
1003Jefferson SchemmerJapan2026-04-24Rangoni Of Florence PROPOSAL98Elwin Sharvill
1004Jefferson SchemmerItaly2026-04-08Buckley Miller Wright NEGOTIATION77Elwin Sharvill
1005Wickens NestleGermany2026-04-10Chapman, Ross E Esq PROPOSAL87Stephen Shaw
1006Francesco ShinkoJapan2026-04-26King, Christopher A Esq RENEWAL55Elwin Sharvill
1007David DarakjyCanada2026-04-16Feltz Printing Service NEW4Amy Elsner
1008Greenwood BologniaBrazil2026-04-10Feiner Bros PROPOSAL7Ivan Magalhaes
1009Costa DilliardItaly2026-04-25Benton, John B Jr QUALIFIED72Amy Elsner
1010Tony FollerIndia2026-04-10Chanay, Jeffrey A Esq UNQUALIFIED33Asiya Javayant
1011Deepesh ChuiArgentina2026-04-18Chemel, James L Cpa RENEWAL53Elwin Sharvill
1012Arvin AlbaresJapan2026-04-05Feiner Bros RENEWAL30Onyama Limba
1013Faith GillianSpain2026-05-01Rousseaux, Michael Esq RENEWAL10Elwin Sharvill
1014Adams MorascaArgentina2026-04-11Morlong Associates RENEWAL2Xuxue Feng
1015Salvatore StockhamFrance2026-04-19Dorl, James J Esq RENEWAL79Ioni Bowcher
1016Deepesh ChuiFrance2026-04-12Feltz Printing Service UNQUALIFIED59Amy Elsner
1017Alejandro PerinSpain2026-04-07King, Christopher A Esq PROPOSAL23Xuxue Feng
1018Emily WhobreyBrazil2026-04-17Commercial Press PROPOSAL58Amy Elsner
1019Mayumi KolmetzAustralia2026-05-01Chanay, Jeffrey A Esq NEGOTIATION81Xuxue Feng
1020Clifford RimJapan2026-04-30Feltz Printing Service PROPOSAL19Stephen Shaw
1021Murillo MaletRussia2026-04-17Chanay, Jeffrey A Esq NEGOTIATION75Onyama Limba
1022Nicolas IturbideFrance2026-04-26Rousseaux, Michael Esq UNQUALIFIED55Onyama Limba
1023Antonio CaudyUnited Kingdom2026-04-18Buckley Miller Wright NEW26Ioni Bowcher
1024Izzy GarufiFrance2026-04-26Feltz Printing Service RENEWAL30Elwin Sharvill
1025Costa DilliardSpain2026-04-06Truhlar And Truhlar Attys QUALIFIED19Anna Fali
1026Clifford RimUnited Kingdom2026-04-30Truhlar And Truhlar Attys NEGOTIATION43Elwin Sharvill
1027Antonio CaudyAustralia2026-04-12Rousseaux, Michael Esq PROPOSAL90Ivan Magalhaes
1028Adams MorascaArgentina2026-04-03Rousseaux, Michael Esq RENEWAL56Elwin Sharvill
1029Murillo MaletSpain2026-04-14Chapman, Ross E Esq RENEWAL25Xuxue Feng
1030Octavia MaletIndia2026-04-25Truhlar And Truhlar Attys PROPOSAL0Amy Elsner
1031Sinclair WaycottItaly2026-04-16Feiner Bros NEW88Xuxue Feng
1032Rodrigues CampainCanada2026-04-12Feiner Bros RENEWAL9Asiya Javayant
1033Mujtaba NickaItaly2026-04-21Feiner Bros PROPOSAL15Xuxue Feng
1034Tony FollerAustralia2026-04-20Feltz Printing Service QUALIFIED74Ivan Magalhaes
1035Salvatore StockhamGermany2026-04-12Rousseaux, Michael Esq PROPOSAL92Elwin Sharvill
1036Jefferson SchemmerBrazil2026-04-11Chanay, Jeffrey A Esq UNQUALIFIED35Ioni Bowcher
1037Izzy GarufiAustralia2026-04-09Buckley Miller Wright NEW60Ioni Bowcher
1038Munro FerenczCanada2026-04-21Dorl, James J Esq PROPOSAL55Ivan Magalhaes
1039Maria MarrierBrazil2026-04-13Chemel, James L Cpa RENEWAL99Xuxue Feng
1040Greenwood BologniaAustralia2026-04-19Printing Dimensions UNQUALIFIED76Xuxue Feng
1041Maisha RulapaughBrazil2026-04-17Feiner Bros RENEWAL37Ivan Magalhaes
1042Leon OldroydSpain2026-04-13King, Christopher A Esq PROPOSAL91Ivan Magalhaes
1043Munro FerenczCanada2026-04-14Rousseaux, Michael Esq NEGOTIATION30Amy Elsner
1044Jones VocelkaUnited Kingdom2026-04-23Rangoni Of Florence NEGOTIATION41Stephen Shaw
1045Smith GlickArgentina2026-04-20Feltz Printing Service NEGOTIATION84Bernardo Dominic
1046Octavia MaletUnited Kingdom2026-04-29Feiner Bros QUALIFIED83Anna Fali
1047Kadeem FlosiArgentina2026-04-13Morlong Associates NEGOTIATION74Ioni Bowcher
1048Jennifer AmigonAustralia2026-05-01Buckley Miller Wright RENEWAL18Anna Fali
1049Arvin AlbaresJapan2026-04-15Truhlar And Truhlar Attys PROPOSAL41Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Costa DilliardIndiaIoni Bowcher NEGOTIATION
Isabel BowleyArgentinaAmy Elsner UNQUALIFIED
Arvin AlbaresGermanyElwin Sharvill NEW
Greenwood BologniaArgentinaXuxue Feng NEW
Kaitlin OstroskyGermanyAsiya Javayant PROPOSAL
Emily WhobreyArgentinaStephen Shaw QUALIFIED
Deepesh ChuiJapanAmy Elsner QUALIFIED
Costa DilliardItalyAsiya Javayant RENEWAL
Jennifer AmigonIndiaIvan Magalhaes PROPOSAL
Costa DilliardIndiaElwin Sharvill NEGOTIATION
Stacey MacleadArgentinaIoni Bowcher UNQUALIFIED
Kadeem FlosiFranceIvan Magalhaes RENEWAL
Aditya KuskoAustraliaBernardo Dominic UNQUALIFIED
Claire TollnerCanadaStephen Shaw NEGOTIATION
Darci PoquetteUnited KingdomXuxue Feng UNQUALIFIED
Juan WieserItalyIoni Bowcher PROPOSAL
Jefferson SchemmerGermanyAnna Fali NEGOTIATION
Maria MarrierFranceElwin Sharvill NEGOTIATION
Stacey MacleadFranceAnna Fali NEW
Johnson SergiItalyBernardo Dominic NEGOTIATION
Ivar PaprockiGermanyBernardo Dominic RENEWAL
Wickens NestleRussiaAmy Elsner UNQUALIFIED
David DarakjyBrazilBernardo Dominic PROPOSAL
Izzy GarufiBrazilIvan Magalhaes PROPOSAL
Maria MarrierItalyIvan Magalhaes RENEWAL
Julie StensethJapanElwin Sharvill QUALIFIED
Jefferson SchemmerAustraliaXuxue Feng PROPOSAL
Sinclair WaycottJapanAmy Elsner RENEWAL
Greenwood BologniaUnited KingdomStephen Shaw UNQUALIFIED
Darci PoquetteJapanStephen Shaw PROPOSAL
Munro FerenczFranceAmy Elsner NEGOTIATION
Tony FollerSpainAsiya Javayant NEGOTIATION
Arvin AlbaresGermanyAmy Elsner NEW
Emily WhobreyBrazilIoni Bowcher UNQUALIFIED
Kadeem FlosiBrazilStephen Shaw QUALIFIED
Claire TollnerGermanyIvan Magalhaes PROPOSAL
Rodrigues CampainAustraliaElwin Sharvill NEW
Darci PoquetteArgentinaElwin Sharvill NEGOTIATION
Rodrigues CampainArgentinaIoni Bowcher RENEWAL
Mujtaba NickaAustraliaIoni Bowcher QUALIFIED
Tony FollerAustraliaAmy Elsner UNQUALIFIED
Sinclair WaycottFranceAmy Elsner RENEWAL
Stacey MacleadItalyOnyama Limba NEGOTIATION
Kaitlin OstroskyUnited KingdomIoni Bowcher PROPOSAL
Mujtaba NickaCanadaBernardo Dominic NEW
Ivar PaprockiArgentinaAnna Fali QUALIFIED
Jefferson SchemmerFranceAmy Elsner NEGOTIATION
Julie StensethArgentinaBernardo Dominic RENEWAL
Izzy GarufiCanadaXuxue Feng RENEWAL
Adams MorascaCanadaBernardo Dominic NEW
Frozen Columns
Name
Francesco Shinko
Octavia Malet
Francesco Shinko
Leon Oldroyd
Deepesh Chui
Chavez Briddick
Kadeem Flosi
Kadeem Flosi
Izzy Garufi
Isabel Bowley
Jeanfrancois Venere
Kaitlin Ostrosky
Salvatore Stockham
Murillo Malet
Mayumi Kolmetz
Emily Whobrey
Emily Whobrey
Murillo Malet
Juan Wieser
Aruna Figeroa
Ricardo Gaucho
Isabel Bowley
Munro Ferencz
Tony Foller
Julie Stenseth
Tony Foller
Isabel Bowley
Misaki Royster
Jennifer Amigon
Johnson Sergi
Chavez Briddick
Chavez Briddick
Jones Vocelka
Cody Saylors
Silvio Slusarski
Wickens Nestle
Johnson Sergi
Stacey Maclead
Isabel Bowley
Rodrigues Campain
Maria Marrier
James Butt
Murillo Malet
Munro Ferencz
Cody Saylors
Murillo Malet
Alejandro Perin
Ashley Doe
Adams Morasca
Jennifer Amigon
IdCountryDate
1000Brazil2026-04-26
1001Australia2026-04-15
1002Canada2026-04-18
1003France2026-04-05
1004Germany2026-04-08
1005Russia2026-04-27
1006Japan2026-04-21
1007Canada2026-04-18
1008Brazil2026-04-14
1009Japan2026-04-21
1010Australia2026-04-12
1011Brazil2026-04-02
1012Italy2026-04-28
1013Russia2026-04-25
1014Australia2026-04-11
1015Germany2026-04-02
1016Australia2026-04-22
1017Canada2026-04-20
1018Germany2026-04-09
1019Russia2026-04-03
1020Spain2026-04-20
1021United Kingdom2026-04-10
1022Russia2026-04-29
1023Spain2026-04-19
1024Spain2026-04-12
1025Russia2026-04-16
1026Russia2026-04-13
1027France2026-04-27
1028Australia2026-04-04
1029India2026-04-08
1030Italy2026-04-19
1031United Kingdom2026-04-11
1032Brazil2026-04-30
1033Spain2026-04-10
1034United Kingdom2026-04-24
1035United Kingdom2026-04-26
1036Argentina2026-04-26
1037Germany2026-04-12
1038Brazil2026-04-09
1039Spain2026-04-30
1040Australia2026-04-29
1041France2026-04-17
1042Germany2026-04-09
1043Russia2026-04-28
1044Spain2026-04-09
1045India2026-04-12
1046Germany2026-04-10
1047Australia2026-04-14
1048United Kingdom2026-04-10
1049Spain2026-04-22

On-Demand Data

NameIdCountryDate
Adams Morasca1000Canada2026-04-02
Julie Stenseth1001Russia2026-04-26
Claire Tollner1002Russia2026-05-01
Morrow Ruta1003Australia2026-05-01
Ashley Doe1004Russia2026-04-11
Cody Saylors1005Canada2026-04-12
Juan Wieser1006France2026-04-10
Silvio Slusarski1007Canada2026-04-04
Morrow Ruta1008India2026-04-12
Salvatore Stockham1009Canada2026-04-30
James Butt1010Japan2026-04-03
Johnson Sergi1011Spain2026-04-24
Jefferson Schemmer1012Italy2026-04-05
Kaitlin Ostrosky1013Brazil2026-04-18
Aditya Kusko1014Australia2026-04-08
Morrow Ruta1015France2026-04-25
Julie Stenseth1016Spain2026-04-18
Nicolas Iturbide1017United Kingdom2026-04-14
Leon Oldroyd1018United Kingdom2026-04-24
Sinclair Waycott1019Spain2026-04-25
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Silvio SlusarskiArgentinaBernardo Dominic QUALIFIED
Costa DilliardIndiaOnyama Limba NEGOTIATION
Jones VocelkaGermanyAsiya Javayant NEGOTIATION
David DarakjyGermanyXuxue Feng QUALIFIED
Smith GlickArgentinaStephen Shaw NEW
Kadeem FlosiGermanyOnyama Limba NEGOTIATION
Kaitlin OstroskyIndiaIvan Magalhaes QUALIFIED
Costa DilliardAustraliaAsiya Javayant NEW
Jefferson SchemmerCanadaIvan Magalhaes NEW
Ivar PaprockiBrazilIvan Magalhaes PROPOSAL
Ricardo GauchoUnited KingdomAnna Fali NEW
Deepesh ChuiArgentinaAsiya Javayant PROPOSAL
Sinclair WaycottAustraliaElwin Sharvill RENEWAL
Antonio CaudyJapanAmy Elsner PROPOSAL
David DarakjyCanadaIvan Magalhaes PROPOSAL
James ButtUnited KingdomAmy Elsner UNQUALIFIED
Alejandro PerinRussiaXuxue Feng NEW
Arvin AlbaresSpainAnna Fali NEW
Octavia MaletCanadaOnyama Limba UNQUALIFIED
Misaki RoysterIndiaElwin Sharvill RENEWAL
Maisha RulapaughBrazilOnyama Limba RENEWAL
Ivar PaprockiSpainIoni Bowcher RENEWAL
Silvio SlusarskiArgentinaAmy Elsner PROPOSAL
Julie StensethUnited KingdomXuxue Feng NEGOTIATION
Morrow RutaFranceAmy Elsner NEW
Kadeem FlosiFranceIoni Bowcher PROPOSAL
Johnson SergiGermanyIvan Magalhaes QUALIFIED
Sinclair WaycottJapanOnyama Limba QUALIFIED
Kaitlin OstroskyJapanBernardo Dominic NEGOTIATION
Smith GlickAustraliaBernardo Dominic RENEWAL
Stacey MacleadAustraliaStephen Shaw UNQUALIFIED
Jefferson SchemmerJapanStephen Shaw NEGOTIATION
Izzy GarufiCanadaIoni Bowcher RENEWAL
Izzy GarufiSpainIvan Magalhaes PROPOSAL
Clifford RimArgentinaStephen Shaw PROPOSAL
Ricardo GauchoUnited KingdomXuxue Feng UNQUALIFIED
Jeanfrancois VenereJapanXuxue Feng UNQUALIFIED
Alejandro PerinGermanyAnna Fali UNQUALIFIED
Chavez BriddickRussiaElwin Sharvill RENEWAL
Ivar PaprockiFranceIoni Bowcher 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>