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
Jones VocelkaGermanyStephen Shaw UNQUALIFIED
Emily WhobreyFranceBernardo Dominic PROPOSAL
Kadeem FlosiIndiaXuxue Feng UNQUALIFIED
Maisha RulapaughGermanyXuxue Feng UNQUALIFIED
Ricardo GauchoFranceIoni Bowcher RENEWAL
Emily WhobreyGermanyStephen Shaw RENEWAL
Maisha RulapaughIndiaOnyama Limba PROPOSAL
Greenwood BologniaIndiaAmy Elsner NEW
Julie StensethCanadaIvan Magalhaes NEW
Smith GlickCanadaAmy Elsner QUALIFIED
Smith GlickUnited KingdomOnyama Limba UNQUALIFIED
Leja CaldareraAustraliaOnyama Limba NEGOTIATION
Maisha RulapaughUnited KingdomIoni Bowcher PROPOSAL
Jennifer AmigonArgentinaIvan Magalhaes NEW
Murillo MaletJapanAsiya Javayant RENEWAL
Ricardo GauchoSpainAmy Elsner NEGOTIATION
Tony FollerIndiaAsiya Javayant UNQUALIFIED
Aditya KuskoBrazilAnna Fali UNQUALIFIED
Leon OldroydFranceIvan Magalhaes RENEWAL
Silvio SlusarskiItalyAnna Fali NEW
Murillo MaletFranceOnyama Limba NEW
Silvio SlusarskiBrazilIoni Bowcher UNQUALIFIED
Antonio CaudyAustraliaIoni Bowcher NEGOTIATION
Emily WhobreyIndiaBernardo Dominic PROPOSAL
Misaki RoysterGermanyIoni Bowcher RENEWAL
Faith GillianRussiaBernardo Dominic UNQUALIFIED
Izzy GarufiCanadaIoni Bowcher PROPOSAL
Maisha RulapaughRussiaAnna Fali QUALIFIED
Aika InouyeSpainIoni Bowcher QUALIFIED
Morrow RutaBrazilElwin Sharvill NEGOTIATION
Juan WieserArgentinaAsiya Javayant QUALIFIED
Munro FerenczIndiaXuxue Feng UNQUALIFIED
Isabel BowleyAustraliaBernardo Dominic RENEWAL
Wickens NestleUnited KingdomIoni Bowcher PROPOSAL
Jennifer AmigonIndiaAnna Fali UNQUALIFIED
Sinclair WaycottJapanAmy Elsner NEGOTIATION
Wickens NestleBrazilStephen Shaw UNQUALIFIED
Jefferson SchemmerJapanElwin Sharvill QUALIFIED
Morrow RutaUnited KingdomIoni Bowcher NEW
Ivar PaprockiIndiaIvan Magalhaes NEW
Clifford RimUnited KingdomAmy Elsner NEW
Jeanfrancois VenereJapanAmy Elsner QUALIFIED
Munro FerenczItalyElwin Sharvill NEW
Juan WieserBrazilBernardo Dominic UNQUALIFIED
Johnson SergiFranceElwin Sharvill QUALIFIED
Leon OldroydUnited KingdomIoni Bowcher RENEWAL
Ashley DoeJapanAnna Fali PROPOSAL
Rodrigues CampainIndiaElwin Sharvill UNQUALIFIED
Aditya KuskoItalyBernardo Dominic UNQUALIFIED
Mujtaba NickaSpainAmy Elsner PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Arvin AlbaresUnited KingdomStephen Shaw UNQUALIFIED
Ivar PaprockiJapanXuxue Feng UNQUALIFIED
Sinclair WaycottSpainAmy Elsner NEW
Claire TollnerItalyBernardo Dominic UNQUALIFIED
Rodrigues CampainJapanAmy Elsner UNQUALIFIED
Sinclair WaycottRussiaAnna Fali NEW
Ivar PaprockiRussiaIvan Magalhaes NEW
Aditya KuskoRussiaAnna Fali UNQUALIFIED
Nicolas IturbideAustraliaBernardo Dominic NEW
James ButtSpainXuxue Feng QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jennifer AmigonIndia2026-06-15Truhlar And Truhlar Attys QUALIFIED53Elwin Sharvill
1001Ashley DoeArgentina2026-06-13Dorl, James J Esq RENEWAL79Asiya Javayant
1002Johnson SergiSpain2026-05-27Rangoni Of Florence NEGOTIATION90Onyama Limba
1003Darci PoquetteRussia2026-05-26Printing Dimensions PROPOSAL38Xuxue Feng
1004Costa DilliardUnited Kingdom2026-06-11Rangoni Of Florence PROPOSAL49Amy Elsner
1005Jennifer AmigonFrance2026-05-20King, Christopher A Esq QUALIFIED73Stephen Shaw
1006Ricardo GauchoAustralia2026-05-21Truhlar And Truhlar Attys QUALIFIED16Asiya Javayant
1007Ricardo GauchoFrance2026-05-28Benton, John B Jr UNQUALIFIED17Onyama Limba
1008Rodrigues CampainSpain2026-06-08Feltz Printing Service NEGOTIATION47Asiya Javayant
1009Rodrigues CampainJapan2026-06-06Rousseaux, Michael Esq RENEWAL85Anna Fali
1010Mayumi KolmetzUnited Kingdom2026-05-20Morlong Associates NEGOTIATION45Ivan Magalhaes
1011Munro FerenczIndia2026-05-23Rangoni Of Florence NEGOTIATION71Asiya Javayant
1012Leon OldroydJapan2026-06-10Feltz Printing Service NEGOTIATION84Ivan Magalhaes
1013Izzy GarufiArgentina2026-05-23Commercial Press UNQUALIFIED23Onyama Limba
1014Silvio SlusarskiFrance2026-05-23Chemel, James L Cpa QUALIFIED44Amy Elsner
1015Adams MorascaCanada2026-05-28Chapman, Ross E Esq NEGOTIATION67Onyama Limba
1016Izzy GarufiGermany2026-06-14Morlong Associates QUALIFIED43Onyama Limba
1017Leja CaldareraItaly2026-05-19Morlong Associates PROPOSAL9Ioni Bowcher
1018Clifford RimItaly2026-05-26Chapman, Ross E Esq UNQUALIFIED22Stephen Shaw
1019Ivar PaprockiGermany2026-05-20Commercial Press QUALIFIED85Amy Elsner
1020Ricardo GauchoJapan2026-06-06Chapman, Ross E Esq UNQUALIFIED94Asiya Javayant
1021Kaitlin OstroskyRussia2026-05-24Dorl, James J Esq PROPOSAL73Ivan Magalhaes
1022Ricardo GauchoGermany2026-06-17Printing Dimensions PROPOSAL53Anna Fali
1023Cody SaylorsBrazil2026-06-04Chanay, Jeffrey A Esq PROPOSAL16Ivan Magalhaes
1024Leon OldroydFrance2026-06-14Rangoni Of Florence NEW86Stephen Shaw
1025Greenwood BologniaRussia2026-05-31Dorl, James J Esq RENEWAL89Xuxue Feng
1026Jefferson SchemmerCanada2026-06-14Rangoni Of Florence QUALIFIED65Stephen Shaw
1027Sinclair WaycottIndia2026-05-31Dorl, James J Esq RENEWAL58Onyama Limba
1028Maisha RulapaughBrazil2026-06-10Benton, John B Jr NEGOTIATION42Ioni Bowcher
1029Wickens NestleAustralia2026-06-06Commercial Press QUALIFIED64Xuxue Feng
1030Octavia MaletFrance2026-05-27Chapman, Ross E Esq RENEWAL9Xuxue Feng
1031Chavez BriddickGermany2026-05-26Morlong Associates RENEWAL86Anna Fali
1032Leon OldroydIndia2026-05-31Buckley Miller Wright UNQUALIFIED99Onyama Limba
1033Jennifer AmigonFrance2026-05-27Feiner Bros NEGOTIATION86Ivan Magalhaes
1034Emily WhobreyIndia2026-05-31Truhlar And Truhlar Attys NEW50Anna Fali
1035Kadeem FlosiRussia2026-06-05Chapman, Ross E Esq UNQUALIFIED86Elwin Sharvill
1036Murillo MaletRussia2026-05-29Buckley Miller Wright RENEWAL21Onyama Limba
1037Jefferson SchemmerArgentina2026-05-19Feltz Printing Service RENEWAL32Stephen Shaw
1038Jeanfrancois VenereGermany2026-05-25Printing Dimensions NEW21Ioni Bowcher
1039Chavez BriddickRussia2026-05-22Feltz Printing Service RENEWAL16Ivan Magalhaes
1040Tony FollerUnited Kingdom2026-05-20Rangoni Of Florence NEW95Bernardo Dominic
1041Alejandro PerinRussia2026-05-27Rousseaux, Michael Esq NEGOTIATION74Onyama Limba
1042Julie StensethGermany2026-06-16Chanay, Jeffrey A Esq RENEWAL52Amy Elsner
1043Jeanfrancois VenereUnited Kingdom2026-06-09Dorl, James J Esq UNQUALIFIED22Asiya Javayant
1044Ivar PaprockiRussia2026-05-24Truhlar And Truhlar Attys PROPOSAL37Elwin Sharvill
1045Jones VocelkaJapan2026-06-03Buckley Miller Wright NEW81Onyama Limba
1046Clifford RimSpain2026-05-28Chemel, James L Cpa PROPOSAL76Bernardo Dominic
1047Emily WhobreyIndia2026-06-17Printing Dimensions QUALIFIED82Amy Elsner
1048Adams MorascaUnited Kingdom2026-06-08King, Christopher A Esq NEGOTIATION98Elwin Sharvill
1049Ashley DoeArgentina2026-06-10Printing Dimensions UNQUALIFIED10Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Morrow RutaSpainAmy Elsner PROPOSAL
Aditya KuskoFranceAsiya Javayant NEW
Leon OldroydJapanAmy Elsner NEGOTIATION
David DarakjyUnited KingdomAmy Elsner NEW
Wickens NestleAustraliaAmy Elsner NEGOTIATION
Smith GlickJapanIvan Magalhaes NEW
Silvio SlusarskiSpainXuxue Feng NEW
Aditya KuskoBrazilAsiya Javayant QUALIFIED
David DarakjyRussiaStephen Shaw NEGOTIATION
Misaki RoysterUnited KingdomAnna Fali QUALIFIED
Aruna FigeroaFranceAmy Elsner PROPOSAL
Julie StensethAustraliaOnyama Limba QUALIFIED
Tony FollerBrazilAnna Fali QUALIFIED
Mujtaba NickaBrazilStephen Shaw NEGOTIATION
Arvin AlbaresArgentinaAnna Fali RENEWAL
Arvin AlbaresUnited KingdomXuxue Feng QUALIFIED
Misaki RoysterItalyOnyama Limba NEW
Rodrigues CampainUnited KingdomIoni Bowcher NEW
Murillo MaletCanadaStephen Shaw UNQUALIFIED
Rodrigues CampainCanadaAmy Elsner QUALIFIED
Emily WhobreyIndiaAnna Fali NEW
Salvatore StockhamGermanyAsiya Javayant RENEWAL
Izzy GarufiCanadaXuxue Feng RENEWAL
Murillo MaletJapanIoni Bowcher NEW
Misaki RoysterJapanXuxue Feng QUALIFIED
Adams MorascaUnited KingdomAsiya Javayant QUALIFIED
Alejandro PerinSpainIvan Magalhaes QUALIFIED
Izzy GarufiUnited KingdomAmy Elsner NEGOTIATION
Juan WieserGermanyBernardo Dominic QUALIFIED
Costa DilliardArgentinaAmy Elsner PROPOSAL
Aika InouyeAustraliaBernardo Dominic UNQUALIFIED
Adams MorascaRussiaAsiya Javayant QUALIFIED
Izzy GarufiRussiaIoni Bowcher QUALIFIED
Leon OldroydSpainAnna Fali PROPOSAL
Deepesh ChuiSpainAmy Elsner UNQUALIFIED
Leja CaldareraBrazilOnyama Limba QUALIFIED
Ivar PaprockiJapanAsiya Javayant QUALIFIED
Tony FollerAustraliaStephen Shaw RENEWAL
David DarakjyArgentinaAnna Fali NEW
Deepesh ChuiAustraliaStephen Shaw NEW
Munro FerenczSpainOnyama Limba QUALIFIED
Kadeem FlosiUnited KingdomBernardo Dominic NEGOTIATION
Mujtaba NickaUnited KingdomElwin Sharvill RENEWAL
Nicolas IturbideRussiaAnna Fali NEW
Adams MorascaItalyStephen Shaw RENEWAL
Ashley DoeAustraliaIoni Bowcher QUALIFIED
Adams MorascaIndiaXuxue Feng RENEWAL
Greenwood BologniaJapanStephen Shaw PROPOSAL
Morrow RutaUnited KingdomXuxue Feng NEW
Misaki RoysterFranceStephen Shaw UNQUALIFIED
Frozen Columns
Name
Salvatore Stockham
Clifford Rim
Aditya Kusko
Ashley Doe
Kadeem Flosi
Aruna Figeroa
Chavez Briddick
Jennifer Amigon
Costa Dilliard
Mujtaba Nicka
Clifford Rim
Ashley Doe
Aruna Figeroa
Mayumi Kolmetz
Silvio Slusarski
Deepesh Chui
James Butt
Mayumi Kolmetz
Aditya Kusko
Jeanfrancois Venere
Rodrigues Campain
Francesco Shinko
Clifford Rim
David Darakjy
Faith Gillian
David Darakjy
Darci Poquette
Kadeem Flosi
Nicolas Iturbide
Adams Morasca
Isabel Bowley
Morrow Ruta
Johnson Sergi
Ashley Doe
Jeanfrancois Venere
Juan Wieser
Johnson Sergi
Isabel Bowley
Kaitlin Ostrosky
Julie Stenseth
Costa Dilliard
Jefferson Schemmer
Leja Caldarera
Maisha Rulapaugh
Chavez Briddick
Ivar Paprocki
Kadeem Flosi
Greenwood Bolognia
Stacey Maclead
Kadeem Flosi
IdCountryDate
1000Japan2026-06-07
1001Canada2026-05-25
1002Germany2026-05-30
1003Argentina2026-06-01
1004Argentina2026-06-14
1005Brazil2026-06-17
1006United Kingdom2026-05-24
1007Brazil2026-05-30
1008Japan2026-05-23
1009Australia2026-05-20
1010Canada2026-06-16
1011France2026-06-05
1012Argentina2026-05-30
1013Canada2026-05-27
1014Spain2026-06-09
1015Germany2026-06-04
1016Germany2026-06-09
1017India2026-05-26
1018United Kingdom2026-05-22
1019Australia2026-05-20
1020Argentina2026-05-23
1021Japan2026-05-30
1022Argentina2026-06-16
1023France2026-06-02
1024Argentina2026-05-27
1025Canada2026-06-15
1026Japan2026-05-26
1027Canada2026-05-23
1028France2026-05-20
1029Argentina2026-05-27
1030Argentina2026-06-17
1031United Kingdom2026-06-04
1032India2026-06-17
1033Australia2026-06-11
1034Russia2026-05-31
1035Russia2026-06-01
1036Spain2026-05-29
1037Japan2026-05-27
1038Brazil2026-05-24
1039Spain2026-06-15
1040Canada2026-06-11
1041Russia2026-06-06
1042Spain2026-06-11
1043Brazil2026-06-08
1044United Kingdom2026-06-04
1045Spain2026-06-15
1046Russia2026-06-05
1047Germany2026-06-12
1048Canada2026-06-01
1049Italy2026-06-06

On-Demand Data

NameIdCountryDate
Cody Saylors1000Brazil2026-06-11
Maria Marrier1001United Kingdom2026-06-15
Alejandro Perin1002Russia2026-05-21
Ashley Doe1003Germany2026-05-20
Darci Poquette1004Canada2026-05-21
Emily Whobrey1005Australia2026-05-28
Salvatore Stockham1006United Kingdom2026-05-24
Ivar Paprocki1007Argentina2026-05-24
Sinclair Waycott1008Japan2026-06-12
Stacey Maclead1009United Kingdom2026-06-02
Maria Marrier1010Australia2026-05-21
Salvatore Stockham1011Brazil2026-06-13
Clifford Rim1012Australia2026-06-01
Leon Oldroyd1013Germany2026-05-29
Leon Oldroyd1014India2026-06-01
Alejandro Perin1015Japan2026-05-22
Mayumi Kolmetz1016Spain2026-05-20
Sinclair Waycott1017Canada2026-05-22
Munro Ferencz1018United Kingdom2026-06-10
Jefferson Schemmer1019India2026-05-24
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Adams MorascaItalyStephen Shaw NEW
Ivar PaprockiFranceXuxue Feng RENEWAL
David DarakjyCanadaAsiya Javayant UNQUALIFIED
Maisha RulapaughJapanOnyama Limba NEGOTIATION
Ricardo GauchoFranceXuxue Feng NEW
Stacey MacleadIndiaAsiya Javayant NEW
Johnson SergiFranceElwin Sharvill UNQUALIFIED
Arvin AlbaresItalyElwin Sharvill QUALIFIED
Smith GlickIndiaOnyama Limba NEGOTIATION
Tony FollerRussiaAmy Elsner NEW
David DarakjyFranceAmy Elsner RENEWAL
Adams MorascaRussiaXuxue Feng NEW
Nicolas IturbideFranceIoni Bowcher NEW
Leon OldroydFranceElwin Sharvill UNQUALIFIED
Emily WhobreyJapanIvan Magalhaes PROPOSAL
Nicolas IturbideSpainIoni Bowcher UNQUALIFIED
Jeanfrancois VenereItalyIoni Bowcher PROPOSAL
Faith GillianSpainOnyama Limba NEW
Octavia MaletSpainElwin Sharvill NEGOTIATION
Ricardo GauchoAustraliaElwin Sharvill NEW
Ashley DoeJapanAsiya Javayant PROPOSAL
Izzy GarufiUnited KingdomIoni Bowcher RENEWAL
Jefferson SchemmerItalyIvan Magalhaes UNQUALIFIED
Juan WieserUnited KingdomAmy Elsner RENEWAL
Aika InouyeArgentinaOnyama Limba QUALIFIED
Antonio CaudyGermanyIoni Bowcher QUALIFIED
Silvio SlusarskiItalyAnna Fali NEW
Darci PoquetteIndiaOnyama Limba QUALIFIED
Alejandro PerinAustraliaIvan Magalhaes PROPOSAL
Emily WhobreyUnited KingdomAsiya Javayant UNQUALIFIED
Jeanfrancois VenereArgentinaAsiya Javayant UNQUALIFIED
Ashley DoeUnited KingdomOnyama Limba RENEWAL
Leja CaldareraGermanyAsiya Javayant RENEWAL
Jeanfrancois VenereItalyIvan Magalhaes UNQUALIFIED
Faith GillianArgentinaAnna Fali PROPOSAL
Kadeem FlosiArgentinaIvan Magalhaes PROPOSAL
Mujtaba NickaJapanBernardo Dominic NEGOTIATION
Maria MarrierGermanyIvan Magalhaes QUALIFIED
Rodrigues CampainUnited KingdomAsiya Javayant RENEWAL
Leja CaldareraAustraliaIvan Magalhaes NEW

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