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
Isabel BowleyItalyAsiya Javayant PROPOSAL
Tony FollerArgentinaOnyama Limba NEW
Mujtaba NickaUnited KingdomIvan Magalhaes UNQUALIFIED
Jones VocelkaBrazilIvan Magalhaes PROPOSAL
Silvio SlusarskiRussiaStephen Shaw RENEWAL
Smith GlickSpainIvan Magalhaes UNQUALIFIED
James ButtArgentinaBernardo Dominic RENEWAL
Julie StensethGermanyBernardo Dominic PROPOSAL
Jeanfrancois VenereArgentinaIvan Magalhaes QUALIFIED
Leon OldroydAustraliaIoni Bowcher NEGOTIATION
Antonio CaudyGermanyElwin Sharvill UNQUALIFIED
Adams MorascaJapanAmy Elsner RENEWAL
Nicolas IturbideRussiaXuxue Feng QUALIFIED
Mujtaba NickaCanadaOnyama Limba RENEWAL
Antonio CaudySpainStephen Shaw PROPOSAL
Francesco ShinkoArgentinaIoni Bowcher NEW
Isabel BowleySpainIvan Magalhaes NEGOTIATION
Aruna FigeroaBrazilIoni Bowcher RENEWAL
Leon OldroydArgentinaIvan Magalhaes PROPOSAL
Kaitlin OstroskyUnited KingdomIvan Magalhaes PROPOSAL
Maisha RulapaughItalyAnna Fali RENEWAL
Kaitlin OstroskyBrazilStephen Shaw RENEWAL
Chavez BriddickRussiaOnyama Limba PROPOSAL
Alejandro PerinCanadaXuxue Feng PROPOSAL
Murillo MaletSpainStephen Shaw UNQUALIFIED
Octavia MaletGermanyIoni Bowcher RENEWAL
Wickens NestleRussiaAsiya Javayant NEGOTIATION
Morrow RutaUnited KingdomAnna Fali NEW
Rodrigues CampainGermanyAsiya Javayant UNQUALIFIED
Alejandro PerinSpainXuxue Feng QUALIFIED
Alejandro PerinBrazilElwin Sharvill NEW
Morrow RutaUnited KingdomBernardo Dominic RENEWAL
Darci PoquetteRussiaElwin Sharvill QUALIFIED
Maisha RulapaughItalyIvan Magalhaes RENEWAL
David DarakjyArgentinaBernardo Dominic PROPOSAL
Deepesh ChuiBrazilBernardo Dominic NEW
Smith GlickRussiaAmy Elsner NEW
Clifford RimRussiaAmy Elsner NEW
Greenwood BologniaCanadaAmy Elsner NEW
Faith GillianItalyAnna Fali RENEWAL
Kadeem FlosiJapanAsiya Javayant UNQUALIFIED
Antonio CaudyIndiaAnna Fali RENEWAL
James ButtItalyBernardo Dominic NEGOTIATION
David DarakjyJapanAsiya Javayant QUALIFIED
Leon OldroydBrazilAmy Elsner RENEWAL
Mayumi KolmetzItalyIoni Bowcher NEGOTIATION
Munro FerenczBrazilAsiya Javayant NEGOTIATION
Johnson SergiAustraliaBernardo Dominic RENEWAL
Morrow RutaUnited KingdomBernardo Dominic QUALIFIED
Smith GlickBrazilAsiya Javayant NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Jefferson SchemmerUnited KingdomAmy Elsner NEGOTIATION
Tony FollerRussiaElwin Sharvill UNQUALIFIED
Adams MorascaJapanXuxue Feng UNQUALIFIED
Francesco ShinkoArgentinaXuxue Feng NEW
Jones VocelkaJapanIvan Magalhaes NEW
Silvio SlusarskiRussiaAmy Elsner UNQUALIFIED
Maria MarrierIndiaElwin Sharvill PROPOSAL
Stacey MacleadIndiaAmy Elsner RENEWAL
Chavez BriddickJapanIvan Magalhaes QUALIFIED
Mujtaba NickaJapanElwin Sharvill QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Morrow RutaFrance2026-05-23Truhlar And Truhlar Attys QUALIFIED51Xuxue Feng
1001Costa DilliardItaly2026-05-05Dorl, James J Esq PROPOSAL67Anna Fali
1002Munro FerenczItaly2026-05-26Feiner Bros PROPOSAL29Anna Fali
1003Darci PoquetteAustralia2026-05-18Printing Dimensions PROPOSAL40Anna Fali
1004Maisha RulapaughArgentina2026-05-06Rangoni Of Florence PROPOSAL75Xuxue Feng
1005Ricardo GauchoIndia2026-05-22Chanay, Jeffrey A Esq NEGOTIATION15Elwin Sharvill
1006Salvatore StockhamAustralia2026-05-04Chapman, Ross E Esq QUALIFIED20Anna Fali
1007Johnson SergiFrance2026-06-02Commercial Press PROPOSAL90Amy Elsner
1008Juan WieserIndia2026-05-29Dorl, James J Esq UNQUALIFIED63Elwin Sharvill
1009Leja CaldareraAustralia2026-05-31Dorl, James J Esq PROPOSAL33Asiya Javayant
1010Sinclair WaycottJapan2026-05-25Rousseaux, Michael Esq RENEWAL43Ivan Magalhaes
1011Antonio CaudySpain2026-05-15King, Christopher A Esq QUALIFIED7Ivan Magalhaes
1012Mujtaba NickaItaly2026-05-14Chapman, Ross E Esq NEW1Amy Elsner
1013Smith GlickArgentina2026-05-31Feltz Printing Service RENEWAL78Asiya Javayant
1014Nicolas IturbideItaly2026-05-25Chemel, James L Cpa NEGOTIATION27Amy Elsner
1015Jeanfrancois VenereJapan2026-05-21Commercial Press NEGOTIATION46Ioni Bowcher
1016Ricardo GauchoItaly2026-05-15Rangoni Of Florence PROPOSAL98Ivan Magalhaes
1017Arvin AlbaresIndia2026-05-05Feltz Printing Service QUALIFIED99Elwin Sharvill
1018Stacey MacleadAustralia2026-05-31King, Christopher A Esq UNQUALIFIED6Elwin Sharvill
1019Chavez BriddickArgentina2026-05-13Buckley Miller Wright QUALIFIED16Asiya Javayant
1020Aditya KuskoAustralia2026-05-20Dorl, James J Esq UNQUALIFIED91Anna Fali
1021Octavia MaletItaly2026-06-01Rousseaux, Michael Esq NEW57Xuxue Feng
1022Darci PoquetteFrance2026-05-14Commercial Press PROPOSAL22Asiya Javayant
1023Ricardo GauchoBrazil2026-05-25Feltz Printing Service NEGOTIATION96Bernardo Dominic
1024Tony FollerAustralia2026-05-29Benton, John B Jr RENEWAL75Asiya Javayant
1025Francesco ShinkoAustralia2026-05-24Chemel, James L Cpa PROPOSAL91Anna Fali
1026Claire TollnerRussia2026-05-12Rangoni Of Florence UNQUALIFIED80Elwin Sharvill
1027Smith GlickIndia2026-05-19Chemel, James L Cpa NEW50Amy Elsner
1028Morrow RutaCanada2026-05-17Commercial Press UNQUALIFIED20Ivan Magalhaes
1029Chavez BriddickIndia2026-05-06Dorl, James J Esq NEGOTIATION58Bernardo Dominic
1030Antonio CaudyBrazil2026-05-04Commercial Press RENEWAL49Ioni Bowcher
1031Francesco ShinkoBrazil2026-05-24King, Christopher A Esq RENEWAL9Ivan Magalhaes
1032Ivar PaprockiAustralia2026-05-18Printing Dimensions PROPOSAL4Ioni Bowcher
1033Adams MorascaUnited Kingdom2026-05-10Commercial Press PROPOSAL49Elwin Sharvill
1034Leon OldroydFrance2026-05-14Dorl, James J Esq NEGOTIATION44Amy Elsner
1035Cody SaylorsIndia2026-05-04Feltz Printing Service RENEWAL74Ivan Magalhaes
1036Morrow RutaFrance2026-05-20Feltz Printing Service NEW75Ivan Magalhaes
1037Tony FollerFrance2026-05-18Dorl, James J Esq QUALIFIED27Ivan Magalhaes
1038Ivar PaprockiBrazil2026-05-06Commercial Press RENEWAL30Stephen Shaw
1039Arvin AlbaresBrazil2026-05-23Chanay, Jeffrey A Esq PROPOSAL93Anna Fali
1040Sinclair WaycottBrazil2026-05-13Rousseaux, Michael Esq NEGOTIATION83Elwin Sharvill
1041Chavez BriddickGermany2026-06-01Commercial Press UNQUALIFIED18Asiya Javayant
1042Ivar PaprockiRussia2026-05-05Truhlar And Truhlar Attys QUALIFIED7Onyama Limba
1043Morrow RutaFrance2026-05-17Rangoni Of Florence NEGOTIATION5Ivan Magalhaes
1044Costa DilliardUnited Kingdom2026-06-02Buckley Miller Wright QUALIFIED78Bernardo Dominic
1045Morrow RutaAustralia2026-05-28Feiner Bros UNQUALIFIED48Stephen Shaw
1046Adams MorascaIndia2026-05-22Dorl, James J Esq NEGOTIATION84Onyama Limba
1047Johnson SergiItaly2026-05-07Morlong Associates QUALIFIED66Bernardo Dominic
1048Silvio SlusarskiBrazil2026-05-22Commercial Press NEW12Anna Fali
1049Morrow RutaSpain2026-05-23Dorl, James J Esq UNQUALIFIED4Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Jennifer AmigonUnited KingdomXuxue Feng UNQUALIFIED
Jefferson SchemmerCanadaAmy Elsner NEGOTIATION
Mujtaba NickaGermanyAmy Elsner QUALIFIED
Isabel BowleyGermanyAsiya Javayant UNQUALIFIED
Kadeem FlosiArgentinaAnna Fali NEGOTIATION
Maria MarrierArgentinaIvan Magalhaes PROPOSAL
Isabel BowleyBrazilIoni Bowcher NEW
Rodrigues CampainItalyElwin Sharvill PROPOSAL
Salvatore StockhamJapanOnyama Limba QUALIFIED
Cody SaylorsUnited KingdomBernardo Dominic UNQUALIFIED
Claire TollnerAustraliaAnna Fali NEW
Ricardo GauchoGermanyStephen Shaw UNQUALIFIED
Francesco ShinkoAustraliaStephen Shaw NEW
Jeanfrancois VenereIndiaIvan Magalhaes NEW
Adams MorascaJapanAsiya Javayant QUALIFIED
Jefferson SchemmerCanadaElwin Sharvill UNQUALIFIED
Stacey MacleadFranceElwin Sharvill PROPOSAL
Aditya KuskoJapanElwin Sharvill RENEWAL
Kadeem FlosiRussiaXuxue Feng UNQUALIFIED
Ricardo GauchoFranceAsiya Javayant NEGOTIATION
Isabel BowleySpainAmy Elsner NEW
Silvio SlusarskiGermanyAsiya Javayant RENEWAL
Nicolas IturbideFranceAsiya Javayant QUALIFIED
Greenwood BologniaAustraliaAsiya Javayant UNQUALIFIED
Chavez BriddickRussiaAmy Elsner NEGOTIATION
Kadeem FlosiCanadaStephen Shaw NEGOTIATION
Antonio CaudyFranceAsiya Javayant UNQUALIFIED
David DarakjyBrazilAmy Elsner NEW
Silvio SlusarskiCanadaOnyama Limba RENEWAL
Rodrigues CampainUnited KingdomIvan Magalhaes NEGOTIATION
Cody SaylorsGermanyAnna Fali NEW
Costa DilliardArgentinaOnyama Limba NEGOTIATION
Ivar PaprockiSpainBernardo Dominic NEGOTIATION
Francesco ShinkoSpainAsiya Javayant QUALIFIED
Sinclair WaycottArgentinaXuxue Feng RENEWAL
Murillo MaletGermanyStephen Shaw NEGOTIATION
Francesco ShinkoCanadaElwin Sharvill UNQUALIFIED
Octavia MaletGermanyOnyama Limba QUALIFIED
Costa DilliardAustraliaXuxue Feng RENEWAL
Jennifer AmigonCanadaIoni Bowcher NEGOTIATION
Rodrigues CampainItalyElwin Sharvill NEW
Jeanfrancois VenereJapanElwin Sharvill RENEWAL
James ButtCanadaIoni Bowcher PROPOSAL
Jeanfrancois VenereIndiaAmy Elsner RENEWAL
Tony FollerItalyOnyama Limba RENEWAL
Jeanfrancois VenereIndiaAsiya Javayant NEW
Mujtaba NickaUnited KingdomStephen Shaw QUALIFIED
Costa DilliardJapanXuxue Feng RENEWAL
Salvatore StockhamSpainStephen Shaw RENEWAL
Jennifer AmigonGermanyXuxue Feng QUALIFIED
Frozen Columns
Name
Chavez Briddick
Emily Whobrey
Chavez Briddick
Alejandro Perin
Emily Whobrey
Misaki Royster
Ivar Paprocki
David Darakjy
Chavez Briddick
Mayumi Kolmetz
Kaitlin Ostrosky
Juan Wieser
Sinclair Waycott
Nicolas Iturbide
Claire Tollner
Faith Gillian
Greenwood Bolognia
Cody Saylors
Ivar Paprocki
Faith Gillian
Juan Wieser
Maisha Rulapaugh
Antonio Caudy
Antonio Caudy
Smith Glick
Mujtaba Nicka
Arvin Albares
Mayumi Kolmetz
Leja Caldarera
Darci Poquette
Francesco Shinko
Morrow Ruta
Jefferson Schemmer
Salvatore Stockham
Maria Marrier
Jones Vocelka
Mayumi Kolmetz
Murillo Malet
Cody Saylors
Rodrigues Campain
Isabel Bowley
Arvin Albares
Smith Glick
Johnson Sergi
Johnson Sergi
Aika Inouye
Darci Poquette
Isabel Bowley
Juan Wieser
Francesco Shinko
IdCountryDate
1000Argentina2026-05-13
1001Canada2026-05-10
1002Japan2026-05-17
1003India2026-05-09
1004Germany2026-05-09
1005Spain2026-05-16
1006Russia2026-05-25
1007Australia2026-05-13
1008Italy2026-06-02
1009United Kingdom2026-05-23
1010Spain2026-05-11
1011Canada2026-05-04
1012Italy2026-05-23
1013Russia2026-05-29
1014Germany2026-05-27
1015Australia2026-06-02
1016India2026-05-08
1017Spain2026-05-16
1018France2026-05-07
1019Italy2026-05-17
1020Argentina2026-05-27
1021Germany2026-06-01
1022Germany2026-05-27
1023Argentina2026-05-08
1024Australia2026-05-25
1025Italy2026-05-04
1026Canada2026-05-14
1027Japan2026-05-05
1028Australia2026-06-01
1029Italy2026-05-06
1030France2026-06-02
1031India2026-05-25
1032France2026-05-21
1033Canada2026-05-13
1034Italy2026-05-31
1035Australia2026-05-10
1036Russia2026-05-22
1037Russia2026-05-05
1038Russia2026-05-11
1039Italy2026-05-18
1040Germany2026-05-16
1041Germany2026-05-19
1042France2026-05-31
1043Russia2026-05-07
1044Japan2026-06-02
1045Canada2026-05-06
1046Russia2026-06-01
1047Spain2026-05-21
1048France2026-05-07
1049France2026-05-22

On-Demand Data

NameIdCountryDate
Murillo Malet1000France2026-05-24
Aruna Figeroa1001Spain2026-05-23
Johnson Sergi1002Canada2026-05-22
David Darakjy1003United Kingdom2026-05-15
Sinclair Waycott1004Brazil2026-05-26
Misaki Royster1005Germany2026-05-16
Kaitlin Ostrosky1006Russia2026-06-01
Leon Oldroyd1007Italy2026-05-09
Leja Caldarera1008India2026-05-13
Kadeem Flosi1009Germany2026-05-09
Faith Gillian1010Australia2026-05-25
Aruna Figeroa1011Germany2026-05-23
Rodrigues Campain1012Italy2026-05-19
Julie Stenseth1013Argentina2026-05-29
Rodrigues Campain1014Germany2026-05-07
Aika Inouye1015Italy2026-05-10
Claire Tollner1016India2026-05-11
Maria Marrier1017Brazil2026-05-24
Aditya Kusko1018Russia2026-05-23
Adams Morasca1019Canada2026-05-21
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maisha RulapaughFranceStephen Shaw NEGOTIATION
Aika InouyeSpainOnyama Limba RENEWAL
Stacey MacleadCanadaAmy Elsner UNQUALIFIED
Leja CaldareraUnited KingdomElwin Sharvill PROPOSAL
Kaitlin OstroskyItalyAmy Elsner UNQUALIFIED
James ButtArgentinaAsiya Javayant QUALIFIED
Jefferson SchemmerAustraliaBernardo Dominic RENEWAL
Ricardo GauchoUnited KingdomXuxue Feng QUALIFIED
Jennifer AmigonBrazilIvan Magalhaes NEW
Silvio SlusarskiIndiaAsiya Javayant QUALIFIED
James ButtAustraliaOnyama Limba PROPOSAL
Deepesh ChuiCanadaStephen Shaw NEGOTIATION
Kadeem FlosiFranceBernardo Dominic RENEWAL
Johnson SergiBrazilAmy Elsner RENEWAL
Maria MarrierBrazilAnna Fali RENEWAL
Murillo MaletIndiaStephen Shaw UNQUALIFIED
Tony FollerCanadaAmy Elsner QUALIFIED
Mayumi KolmetzIndiaIoni Bowcher UNQUALIFIED
Deepesh ChuiArgentinaAnna Fali PROPOSAL
Ivar PaprockiSpainStephen Shaw QUALIFIED
Ricardo GauchoArgentinaIoni Bowcher PROPOSAL
Deepesh ChuiAustraliaAmy Elsner NEW
Salvatore StockhamItalyAnna Fali NEW
Silvio SlusarskiAustraliaStephen Shaw NEGOTIATION
Jefferson SchemmerUnited KingdomXuxue Feng NEGOTIATION
Ricardo GauchoCanadaBernardo Dominic UNQUALIFIED
Aditya KuskoCanadaIvan Magalhaes UNQUALIFIED
Ricardo GauchoJapanStephen Shaw UNQUALIFIED
Juan WieserSpainIoni Bowcher QUALIFIED
Leja CaldareraSpainStephen Shaw QUALIFIED
Salvatore StockhamIndiaElwin Sharvill RENEWAL
Clifford RimCanadaBernardo Dominic PROPOSAL
Octavia MaletItalyBernardo Dominic UNQUALIFIED
Jefferson SchemmerSpainXuxue Feng UNQUALIFIED
Jeanfrancois VenereGermanyXuxue Feng PROPOSAL
Nicolas IturbideAustraliaXuxue Feng UNQUALIFIED
Francesco ShinkoGermanyXuxue Feng NEGOTIATION
Aika InouyeUnited KingdomElwin Sharvill RENEWAL
Jeanfrancois VenereItalyIoni Bowcher NEW
James ButtCanadaIoni Bowcher 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>