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
Arvin AlbaresCanadaAmy Elsner QUALIFIED
Jeanfrancois VenereIndiaStephen Shaw QUALIFIED
Kaitlin OstroskyAustraliaStephen Shaw PROPOSAL
Rodrigues CampainBrazilOnyama Limba QUALIFIED
Tony FollerArgentinaAnna Fali PROPOSAL
Octavia MaletIndiaAnna Fali UNQUALIFIED
Deepesh ChuiBrazilAmy Elsner NEGOTIATION
Tony FollerIndiaAsiya Javayant PROPOSAL
Morrow RutaIndiaAnna Fali PROPOSAL
Costa DilliardAustraliaXuxue Feng NEGOTIATION
Greenwood BologniaCanadaAsiya Javayant PROPOSAL
Misaki RoysterRussiaIoni Bowcher NEW
Ivar PaprockiAustraliaIoni Bowcher QUALIFIED
Wickens NestleRussiaStephen Shaw UNQUALIFIED
Julie StensethFranceAmy Elsner NEW
Jennifer AmigonGermanyAsiya Javayant RENEWAL
Isabel BowleyGermanyAsiya Javayant NEW
Isabel BowleyUnited KingdomAmy Elsner UNQUALIFIED
Francesco ShinkoItalyAnna Fali NEW
Silvio SlusarskiUnited KingdomOnyama Limba UNQUALIFIED
Alejandro PerinAustraliaStephen Shaw UNQUALIFIED
Francesco ShinkoItalyIvan Magalhaes PROPOSAL
Octavia MaletRussiaXuxue Feng NEGOTIATION
Jones VocelkaFranceAnna Fali UNQUALIFIED
Salvatore StockhamArgentinaBernardo Dominic QUALIFIED
Maria MarrierAustraliaStephen Shaw UNQUALIFIED
Faith GillianArgentinaOnyama Limba UNQUALIFIED
Johnson SergiBrazilIoni Bowcher RENEWAL
Nicolas IturbideIndiaXuxue Feng RENEWAL
Alejandro PerinRussiaBernardo Dominic NEGOTIATION
Deepesh ChuiBrazilAnna Fali UNQUALIFIED
Tony FollerSpainOnyama Limba NEW
Rodrigues CampainJapanAsiya Javayant QUALIFIED
Emily WhobreyItalyStephen Shaw QUALIFIED
Emily WhobreyRussiaAnna Fali NEW
Wickens NestleArgentinaIvan Magalhaes UNQUALIFIED
Kaitlin OstroskyJapanOnyama Limba NEGOTIATION
Sinclair WaycottGermanyStephen Shaw NEGOTIATION
Kaitlin OstroskyUnited KingdomOnyama Limba RENEWAL
Cody SaylorsRussiaStephen Shaw UNQUALIFIED
Jefferson SchemmerGermanyIvan Magalhaes UNQUALIFIED
Juan WieserCanadaXuxue Feng PROPOSAL
Izzy GarufiItalyAsiya Javayant UNQUALIFIED
Aruna FigeroaRussiaOnyama Limba QUALIFIED
Faith GillianItalyIvan Magalhaes PROPOSAL
Silvio SlusarskiBrazilAsiya Javayant QUALIFIED
Kadeem FlosiAustraliaAsiya Javayant NEGOTIATION
Aika InouyeFranceOnyama Limba UNQUALIFIED
Kadeem FlosiFranceAnna Fali RENEWAL
Greenwood BologniaArgentinaIoni Bowcher RENEWAL
Horizontal
NameCountryRepresentativeStatus
Chavez BriddickItalyOnyama Limba RENEWAL
Munro FerenczRussiaAmy Elsner QUALIFIED
Ashley DoeSpainAnna Fali UNQUALIFIED
Jeanfrancois VenereBrazilAnna Fali RENEWAL
Costa DilliardSpainBernardo Dominic NEGOTIATION
Jennifer AmigonIndiaAsiya Javayant NEW
Izzy GarufiFranceIvan Magalhaes NEW
Faith GillianUnited KingdomAmy Elsner QUALIFIED
Smith GlickAustraliaIvan Magalhaes PROPOSAL
Izzy GarufiAustraliaXuxue Feng QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Isabel BowleySpain2026-05-18Feiner Bros PROPOSAL82Stephen Shaw
1001Leja CaldareraCanada2026-05-15Chanay, Jeffrey A Esq NEGOTIATION13Ivan Magalhaes
1002Emily WhobreyAustralia2026-05-07Truhlar And Truhlar Attys PROPOSAL8Elwin Sharvill
1003Clifford RimBrazil2026-05-27Morlong Associates PROPOSAL99Ioni Bowcher
1004Izzy GarufiSpain2026-05-25Morlong Associates UNQUALIFIED25Ivan Magalhaes
1005Nicolas IturbideFrance2026-05-05Commercial Press QUALIFIED35Ioni Bowcher
1006Jennifer AmigonItaly2026-05-10Chemel, James L Cpa NEW29Elwin Sharvill
1007Jennifer AmigonRussia2026-05-07Buckley Miller Wright QUALIFIED69Ioni Bowcher
1008Cody SaylorsUnited Kingdom2026-05-07Chanay, Jeffrey A Esq NEGOTIATION15Ivan Magalhaes
1009Maisha RulapaughRussia2026-05-07King, Christopher A Esq PROPOSAL96Elwin Sharvill
1010Wickens NestleItaly2026-05-14Dorl, James J Esq QUALIFIED49Asiya Javayant
1011Kaitlin OstroskyArgentina2026-05-19Chapman, Ross E Esq NEGOTIATION17Stephen Shaw
1012Isabel BowleyRussia2026-05-21Buckley Miller Wright RENEWAL46Xuxue Feng
1013Chavez BriddickAustralia2026-05-27Chemel, James L Cpa UNQUALIFIED71Bernardo Dominic
1014Cody SaylorsFrance2026-05-07Chemel, James L Cpa RENEWAL93Bernardo Dominic
1015Antonio CaudyItaly2026-05-08Benton, John B Jr UNQUALIFIED29Anna Fali
1016Juan WieserFrance2026-05-18Chanay, Jeffrey A Esq QUALIFIED76Xuxue Feng
1017Adams MorascaArgentina2026-05-07Chanay, Jeffrey A Esq UNQUALIFIED56Stephen Shaw
1018Aika InouyeArgentina2026-05-14Rousseaux, Michael Esq PROPOSAL16Asiya Javayant
1019Antonio CaudySpain2026-05-27Benton, John B Jr PROPOSAL74Amy Elsner
1020Costa DilliardArgentina2026-05-06Truhlar And Truhlar Attys PROPOSAL73Anna Fali
1021Chavez BriddickAustralia2026-06-01Chapman, Ross E Esq NEGOTIATION74Elwin Sharvill
1022Tony FollerAustralia2026-05-05Chapman, Ross E Esq QUALIFIED33Anna Fali
1023Nicolas IturbideCanada2026-05-23Rangoni Of Florence RENEWAL61Stephen Shaw
1024Alejandro PerinIndia2026-05-20King, Christopher A Esq QUALIFIED50Ivan Magalhaes
1025Mayumi KolmetzAustralia2026-05-11Printing Dimensions NEGOTIATION13Ivan Magalhaes
1026Stacey MacleadIndia2026-05-27Printing Dimensions NEW85Elwin Sharvill
1027Wickens NestleJapan2026-05-09Dorl, James J Esq PROPOSAL9Elwin Sharvill
1028Nicolas IturbideFrance2026-05-23Feiner Bros UNQUALIFIED57Xuxue Feng
1029Tony FollerArgentina2026-05-29Chapman, Ross E Esq NEW78Anna Fali
1030Kaitlin OstroskyArgentina2026-05-23Benton, John B Jr RENEWAL0Bernardo Dominic
1031Julie StensethFrance2026-05-23Buckley Miller Wright RENEWAL19Anna Fali
1032Salvatore StockhamSpain2026-05-24Morlong Associates QUALIFIED79Xuxue Feng
1033Julie StensethIndia2026-06-01Feltz Printing Service NEGOTIATION31Elwin Sharvill
1034Clifford RimItaly2026-05-18Rousseaux, Michael Esq NEGOTIATION60Amy Elsner
1035Faith GillianIndia2026-05-24Feiner Bros RENEWAL86Stephen Shaw
1036Maria MarrierRussia2026-05-09Commercial Press NEGOTIATION85Amy Elsner
1037Jennifer AmigonBrazil2026-05-06Rangoni Of Florence NEW18Elwin Sharvill
1038Salvatore StockhamGermany2026-05-18Dorl, James J Esq RENEWAL86Stephen Shaw
1039Mujtaba NickaUnited Kingdom2026-05-12Chapman, Ross E Esq PROPOSAL85Anna Fali
1040Johnson SergiBrazil2026-05-09Commercial Press QUALIFIED92Onyama Limba
1041Izzy GarufiBrazil2026-05-21Feiner Bros UNQUALIFIED15Onyama Limba
1042Julie StensethArgentina2026-05-26Rousseaux, Michael Esq RENEWAL86Stephen Shaw
1043Sinclair WaycottSpain2026-05-03Feiner Bros QUALIFIED51Elwin Sharvill
1044Silvio SlusarskiGermany2026-05-25Commercial Press RENEWAL66Ioni Bowcher
1045Arvin AlbaresArgentina2026-05-24Printing Dimensions UNQUALIFIED42Amy Elsner
1046Murillo MaletJapan2026-05-24Dorl, James J Esq QUALIFIED66Amy Elsner
1047Chavez BriddickArgentina2026-05-24Morlong Associates NEGOTIATION69Bernardo Dominic
1048Adams MorascaAustralia2026-05-14Feiner Bros UNQUALIFIED72Onyama Limba
1049Johnson SergiRussia2026-05-08Buckley Miller Wright PROPOSAL30Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Kadeem FlosiItalyIvan Magalhaes PROPOSAL
Nicolas IturbideSpainIvan Magalhaes NEGOTIATION
Rodrigues CampainCanadaIvan Magalhaes UNQUALIFIED
Tony FollerIndiaElwin Sharvill PROPOSAL
David DarakjyGermanyStephen Shaw NEGOTIATION
Claire TollnerArgentinaIoni Bowcher NEW
Leon OldroydArgentinaAsiya Javayant PROPOSAL
Aika InouyeArgentinaBernardo Dominic QUALIFIED
Jones VocelkaIndiaXuxue Feng RENEWAL
Claire TollnerBrazilAsiya Javayant NEW
Misaki RoysterBrazilAmy Elsner UNQUALIFIED
Kaitlin OstroskyBrazilBernardo Dominic NEW
Cody SaylorsSpainAnna Fali NEW
Jefferson SchemmerUnited KingdomXuxue Feng QUALIFIED
Juan WieserSpainElwin Sharvill RENEWAL
Antonio CaudyFranceElwin Sharvill NEW
Leon OldroydFranceBernardo Dominic QUALIFIED
Jeanfrancois VenereIndiaAsiya Javayant UNQUALIFIED
Jefferson SchemmerBrazilAnna Fali NEGOTIATION
David DarakjyUnited KingdomXuxue Feng NEGOTIATION
Aditya KuskoSpainIvan Magalhaes PROPOSAL
Isabel BowleyArgentinaStephen Shaw RENEWAL
Cody SaylorsGermanyStephen Shaw NEW
Izzy GarufiIndiaIoni Bowcher NEW
Deepesh ChuiUnited KingdomAnna Fali QUALIFIED
Johnson SergiSpainElwin Sharvill NEW
Clifford RimBrazilXuxue Feng NEW
Murillo MaletItalyIoni Bowcher UNQUALIFIED
Cody SaylorsIndiaElwin Sharvill NEW
Wickens NestleAustraliaAsiya Javayant NEW
Misaki RoysterBrazilXuxue Feng RENEWAL
Cody SaylorsIndiaAnna Fali RENEWAL
Munro FerenczJapanBernardo Dominic QUALIFIED
Jennifer AmigonArgentinaElwin Sharvill RENEWAL
Darci PoquetteRussiaAsiya Javayant RENEWAL
Morrow RutaIndiaElwin Sharvill QUALIFIED
Leja CaldareraSpainAsiya Javayant QUALIFIED
Maisha RulapaughCanadaOnyama Limba NEW
David DarakjyAustraliaXuxue Feng PROPOSAL
Murillo MaletUnited KingdomIoni Bowcher UNQUALIFIED
Maisha RulapaughAustraliaElwin Sharvill UNQUALIFIED
Tony FollerCanadaIvan Magalhaes QUALIFIED
Izzy GarufiSpainIvan Magalhaes NEGOTIATION
Salvatore StockhamArgentinaElwin Sharvill NEW
Izzy GarufiItalyElwin Sharvill PROPOSAL
Chavez BriddickGermanyAnna Fali RENEWAL
Morrow RutaFranceAmy Elsner RENEWAL
Rodrigues CampainGermanyIvan Magalhaes NEW
Greenwood BologniaItalyXuxue Feng PROPOSAL
Nicolas IturbideArgentinaAnna Fali NEW
Frozen Columns
Name
Greenwood Bolognia
Nicolas Iturbide
Cody Saylors
Deepesh Chui
Misaki Royster
Jefferson Schemmer
Faith Gillian
David Darakjy
Sinclair Waycott
Jones Vocelka
Mujtaba Nicka
Misaki Royster
Jefferson Schemmer
Maria Marrier
Arvin Albares
Silvio Slusarski
Morrow Ruta
Juan Wieser
Maisha Rulapaugh
Emily Whobrey
Mujtaba Nicka
Mayumi Kolmetz
Tony Foller
Adams Morasca
Tony Foller
Jeanfrancois Venere
Jeanfrancois Venere
James Butt
Darci Poquette
Leon Oldroyd
Jeanfrancois Venere
Jennifer Amigon
Maria Marrier
Smith Glick
Wickens Nestle
Costa Dilliard
Nicolas Iturbide
Aruna Figeroa
Munro Ferencz
Tony Foller
Francesco Shinko
Isabel Bowley
Ivar Paprocki
James Butt
Leon Oldroyd
Jefferson Schemmer
Leon Oldroyd
Smith Glick
Aika Inouye
Rodrigues Campain
IdCountryDate
1000Argentina2026-05-08
1001Russia2026-05-13
1002Germany2026-05-30
1003Argentina2026-05-14
1004Australia2026-05-30
1005Canada2026-05-12
1006Russia2026-05-10
1007Italy2026-06-01
1008Japan2026-05-17
1009Brazil2026-05-17
1010Brazil2026-05-11
1011Brazil2026-05-28
1012United Kingdom2026-05-12
1013Russia2026-05-18
1014Brazil2026-05-09
1015Argentina2026-05-24
1016United Kingdom2026-05-26
1017Spain2026-05-04
1018Canada2026-05-23
1019Spain2026-05-29
1020Russia2026-05-08
1021Japan2026-05-20
1022Australia2026-05-08
1023Australia2026-05-15
1024France2026-05-13
1025Australia2026-05-09
1026Australia2026-05-28
1027Spain2026-05-08
1028United Kingdom2026-05-19
1029Japan2026-05-26
1030United Kingdom2026-05-25
1031Argentina2026-05-17
1032United Kingdom2026-05-10
1033Australia2026-05-12
1034Germany2026-05-30
1035Spain2026-05-18
1036Italy2026-05-22
1037Canada2026-05-16
1038Russia2026-05-06
1039Australia2026-05-16
1040Italy2026-05-03
1041Italy2026-05-21
1042Australia2026-05-19
1043France2026-05-12
1044Canada2026-05-19
1045Australia2026-05-24
1046Brazil2026-05-23
1047Germany2026-05-28
1048Italy2026-05-12
1049Spain2026-05-19

On-Demand Data

NameIdCountryDate
Rodrigues Campain1000Brazil2026-05-26
Clifford Rim1001France2026-05-19
Rodrigues Campain1002Spain2026-05-27
Ivar Paprocki1003Italy2026-05-24
Stacey Maclead1004Australia2026-05-07
Chavez Briddick1005France2026-05-11
Juan Wieser1006Australia2026-05-09
Claire Tollner1007Brazil2026-05-07
Clifford Rim1008Japan2026-05-31
Jefferson Schemmer1009Japan2026-05-13
Emily Whobrey1010Argentina2026-05-30
Wickens Nestle1011Argentina2026-05-18
Adams Morasca1012Italy2026-05-07
Nicolas Iturbide1013United Kingdom2026-05-27
Silvio Slusarski1014Australia2026-05-25
Maisha Rulapaugh1015Germany2026-05-21
Ricardo Gaucho1016Argentina2026-05-31
Darci Poquette1017India2026-05-09
Murillo Malet1018Canada2026-05-10
Deepesh Chui1019Canada2026-05-11
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ricardo GauchoGermanyElwin Sharvill NEGOTIATION
Silvio SlusarskiIndiaStephen Shaw UNQUALIFIED
Julie StensethRussiaBernardo Dominic RENEWAL
Octavia MaletJapanAnna Fali QUALIFIED
Claire TollnerBrazilOnyama Limba UNQUALIFIED
Kadeem FlosiAustraliaBernardo Dominic UNQUALIFIED
Ashley DoeGermanyAnna Fali QUALIFIED
Clifford RimIndiaAnna Fali NEW
Octavia MaletArgentinaElwin Sharvill UNQUALIFIED
Mujtaba NickaArgentinaIoni Bowcher NEGOTIATION
Ricardo GauchoGermanyElwin Sharvill PROPOSAL
Chavez BriddickAustraliaOnyama Limba NEW
Rodrigues CampainRussiaBernardo Dominic UNQUALIFIED
Adams MorascaBrazilAmy Elsner NEW
Maria MarrierGermanyElwin Sharvill NEGOTIATION
Chavez BriddickSpainElwin Sharvill UNQUALIFIED
David DarakjyJapanIoni Bowcher UNQUALIFIED
Nicolas IturbideSpainXuxue Feng UNQUALIFIED
Aika InouyeIndiaAnna Fali UNQUALIFIED
Munro FerenczJapanAnna Fali RENEWAL
Mayumi KolmetzItalyAsiya Javayant RENEWAL
Silvio SlusarskiAustraliaBernardo Dominic NEW
Juan WieserJapanBernardo Dominic NEGOTIATION
Rodrigues CampainAustraliaAmy Elsner NEGOTIATION
Maisha RulapaughIndiaIoni Bowcher NEGOTIATION
Francesco ShinkoFranceIoni Bowcher NEGOTIATION
Izzy GarufiBrazilAmy Elsner NEW
Kaitlin OstroskyFranceIoni Bowcher QUALIFIED
Julie StensethRussiaIvan Magalhaes QUALIFIED
Morrow RutaIndiaIoni Bowcher NEGOTIATION
Aruna FigeroaSpainIoni Bowcher UNQUALIFIED
Octavia MaletGermanyIoni Bowcher NEW
Morrow RutaItalyStephen Shaw UNQUALIFIED
Wickens NestleArgentinaOnyama Limba NEGOTIATION
Maisha RulapaughFranceIvan Magalhaes QUALIFIED
Aditya KuskoBrazilAmy Elsner PROPOSAL
Misaki RoysterItalyBernardo Dominic NEW
Kaitlin OstroskyGermanyOnyama Limba RENEWAL
Nicolas IturbideBrazilAmy Elsner RENEWAL
Costa DilliardIndiaOnyama Limba 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>