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
Leja CaldareraSpainAmy Elsner UNQUALIFIED
Faith GillianBrazilAmy Elsner UNQUALIFIED
Maisha RulapaughJapanIoni Bowcher QUALIFIED
Ivar PaprockiAustraliaOnyama Limba UNQUALIFIED
Isabel BowleyCanadaIoni Bowcher PROPOSAL
Aika InouyeIndiaOnyama Limba UNQUALIFIED
Kadeem FlosiCanadaIvan Magalhaes QUALIFIED
Misaki RoysterArgentinaAnna Fali PROPOSAL
Kadeem FlosiArgentinaElwin Sharvill NEGOTIATION
Francesco ShinkoIndiaXuxue Feng NEGOTIATION
Smith GlickGermanyAmy Elsner NEW
Emily WhobreyRussiaIoni Bowcher RENEWAL
Aruna FigeroaFranceAmy Elsner NEGOTIATION
Rodrigues CampainUnited KingdomAsiya Javayant PROPOSAL
Aika InouyeIndiaBernardo Dominic QUALIFIED
Leon OldroydUnited KingdomIvan Magalhaes PROPOSAL
Greenwood BologniaBrazilIoni Bowcher UNQUALIFIED
Misaki RoysterBrazilXuxue Feng NEGOTIATION
Stacey MacleadGermanyAsiya Javayant NEW
Wickens NestleIndiaXuxue Feng PROPOSAL
Ashley DoeAustraliaAnna Fali QUALIFIED
Faith GillianIndiaStephen Shaw PROPOSAL
Maisha RulapaughUnited KingdomAsiya Javayant QUALIFIED
Leja CaldareraBrazilBernardo Dominic NEW
Emily WhobreyUnited KingdomXuxue Feng UNQUALIFIED
Izzy GarufiJapanIoni Bowcher QUALIFIED
Deepesh ChuiFranceIoni Bowcher QUALIFIED
Greenwood BologniaUnited KingdomOnyama Limba UNQUALIFIED
Adams MorascaRussiaStephen Shaw NEGOTIATION
Ricardo GauchoAustraliaIvan Magalhaes RENEWAL
Juan WieserGermanyAmy Elsner NEGOTIATION
Maisha RulapaughRussiaIvan Magalhaes UNQUALIFIED
Isabel BowleyCanadaStephen Shaw QUALIFIED
Leja CaldareraItalyXuxue Feng RENEWAL
Darci PoquetteItalyAmy Elsner UNQUALIFIED
Rodrigues CampainIndiaOnyama Limba NEGOTIATION
Greenwood BologniaSpainIvan Magalhaes NEGOTIATION
Mayumi KolmetzItalyAnna Fali NEW
Cody SaylorsGermanyAsiya Javayant RENEWAL
Smith GlickBrazilAmy Elsner NEW
Alejandro PerinArgentinaBernardo Dominic NEGOTIATION
Murillo MaletUnited KingdomBernardo Dominic RENEWAL
Johnson SergiRussiaAmy Elsner RENEWAL
Ivar PaprockiIndiaAmy Elsner NEGOTIATION
Maisha RulapaughItalyAsiya Javayant QUALIFIED
Leon OldroydCanadaXuxue Feng RENEWAL
Francesco ShinkoArgentinaAnna Fali QUALIFIED
Octavia MaletUnited KingdomIoni Bowcher UNQUALIFIED
Leon OldroydUnited KingdomIoni Bowcher UNQUALIFIED
Kadeem FlosiRussiaAmy Elsner NEW
Horizontal
NameCountryRepresentativeStatus
Aika InouyeAustraliaIoni Bowcher PROPOSAL
Leon OldroydRussiaOnyama Limba PROPOSAL
Nicolas IturbideIndiaBernardo Dominic UNQUALIFIED
Morrow RutaUnited KingdomXuxue Feng QUALIFIED
Faith GillianCanadaElwin Sharvill PROPOSAL
Octavia MaletArgentinaAmy Elsner PROPOSAL
Mujtaba NickaAustraliaElwin Sharvill RENEWAL
Nicolas IturbideItalyStephen Shaw QUALIFIED
Ashley DoeArgentinaOnyama Limba NEW
Darci PoquetteAustraliaBernardo Dominic NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Murillo MaletJapan2026-04-21Chanay, Jeffrey A Esq RENEWAL67Xuxue Feng
1001James ButtRussia2026-04-10Dorl, James J Esq PROPOSAL21Bernardo Dominic
1002Tony FollerItaly2026-04-20Rousseaux, Michael Esq QUALIFIED83Amy Elsner
1003Deepesh ChuiBrazil2026-04-14Chapman, Ross E Esq RENEWAL10Stephen Shaw
1004Maria MarrierSpain2026-03-25Feiner Bros NEGOTIATION79Onyama Limba
1005Jefferson SchemmerFrance2026-04-12Buckley Miller Wright QUALIFIED30Asiya Javayant
1006Maisha RulapaughFrance2026-04-14Feltz Printing Service NEW47Asiya Javayant
1007James ButtSpain2026-04-13Chemel, James L Cpa QUALIFIED26Asiya Javayant
1008Jennifer AmigonUnited Kingdom2026-04-03Rousseaux, Michael Esq NEGOTIATION95Bernardo Dominic
1009Ashley DoeBrazil2026-03-26King, Christopher A Esq QUALIFIED46Ivan Magalhaes
1010Johnson SergiJapan2026-04-13Buckley Miller Wright NEW32Ioni Bowcher
1011Alejandro PerinArgentina2026-04-14Feiner Bros NEGOTIATION27Onyama Limba
1012Johnson SergiFrance2026-04-18Rousseaux, Michael Esq NEGOTIATION66Onyama Limba
1013Antonio CaudySpain2026-04-16Commercial Press PROPOSAL96Anna Fali
1014Antonio CaudyAustralia2026-04-14Benton, John B Jr NEW97Elwin Sharvill
1015Chavez BriddickFrance2026-04-09Rousseaux, Michael Esq QUALIFIED92Anna Fali
1016Darci PoquetteUnited Kingdom2026-04-03Commercial Press QUALIFIED60Bernardo Dominic
1017Arvin AlbaresIndia2026-03-25Rangoni Of Florence NEGOTIATION35Ivan Magalhaes
1018Greenwood BologniaRussia2026-03-26Dorl, James J Esq UNQUALIFIED64Asiya Javayant
1019Darci PoquetteSpain2026-04-10Morlong Associates QUALIFIED37Amy Elsner
1020Tony FollerRussia2026-03-26Feltz Printing Service NEW87Xuxue Feng
1021Johnson SergiRussia2026-04-05Dorl, James J Esq RENEWAL71Xuxue Feng
1022Ashley DoeSpain2026-04-07Morlong Associates NEGOTIATION30Anna Fali
1023Aditya KuskoIndia2026-04-06Commercial Press UNQUALIFIED28Stephen Shaw
1024Munro FerenczSpain2026-04-07Truhlar And Truhlar Attys UNQUALIFIED69Amy Elsner
1025Ricardo GauchoGermany2026-04-18Dorl, James J Esq RENEWAL73Asiya Javayant
1026Aditya KuskoBrazil2026-03-31King, Christopher A Esq RENEWAL34Ivan Magalhaes
1027Ivar PaprockiIndia2026-04-13Commercial Press UNQUALIFIED28Onyama Limba
1028Isabel BowleyAustralia2026-04-13Chanay, Jeffrey A Esq NEW25Ivan Magalhaes
1029Nicolas IturbideFrance2026-04-10Truhlar And Truhlar Attys NEGOTIATION74Onyama Limba
1030Mujtaba NickaAustralia2026-04-23King, Christopher A Esq NEW16Ioni Bowcher
1031Jones VocelkaIndia2026-03-28King, Christopher A Esq NEW51Xuxue Feng
1032Octavia MaletCanada2026-04-14King, Christopher A Esq NEGOTIATION11Bernardo Dominic
1033Jennifer AmigonBrazil2026-03-25Dorl, James J Esq NEW41Elwin Sharvill
1034Costa DilliardBrazil2026-04-19King, Christopher A Esq UNQUALIFIED2Elwin Sharvill
1035Rodrigues CampainRussia2026-04-08Printing Dimensions RENEWAL31Stephen Shaw
1036Leja CaldareraJapan2026-04-11Morlong Associates NEGOTIATION98Ioni Bowcher
1037Mujtaba NickaAustralia2026-04-10Rangoni Of Florence NEW87Onyama Limba
1038Stacey MacleadBrazil2026-03-28Feltz Printing Service UNQUALIFIED89Anna Fali
1039Aditya KuskoCanada2026-03-26King, Christopher A Esq UNQUALIFIED4Asiya Javayant
1040Deepesh ChuiFrance2026-04-08Morlong Associates UNQUALIFIED64Ivan Magalhaes
1041Isabel BowleyGermany2026-04-15Feltz Printing Service PROPOSAL45Stephen Shaw
1042Mayumi KolmetzJapan2026-04-21King, Christopher A Esq PROPOSAL50Anna Fali
1043David DarakjySpain2026-03-29Feltz Printing Service UNQUALIFIED28Elwin Sharvill
1044Cody SaylorsBrazil2026-04-08Truhlar And Truhlar Attys PROPOSAL47Asiya Javayant
1045Mujtaba NickaBrazil2026-03-29Feltz Printing Service PROPOSAL9Elwin Sharvill
1046Rodrigues CampainCanada2026-03-27Rangoni Of Florence NEW24Onyama Limba
1047Sinclair WaycottCanada2026-04-22King, Christopher A Esq NEGOTIATION53Ioni Bowcher
1048Chavez BriddickUnited Kingdom2026-04-05Buckley Miller Wright RENEWAL49Bernardo Dominic
1049Faith GillianIndia2026-04-14Benton, John B Jr RENEWAL76Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Francesco ShinkoFranceAsiya Javayant NEW
Jefferson SchemmerUnited KingdomAmy Elsner RENEWAL
Adams MorascaBrazilBernardo Dominic RENEWAL
Misaki RoysterUnited KingdomElwin Sharvill QUALIFIED
Isabel BowleyGermanyElwin Sharvill RENEWAL
Maria MarrierItalyElwin Sharvill RENEWAL
Tony FollerCanadaXuxue Feng QUALIFIED
Kadeem FlosiBrazilAmy Elsner NEGOTIATION
Jeanfrancois VenereJapanAsiya Javayant QUALIFIED
Misaki RoysterJapanAnna Fali RENEWAL
Smith GlickArgentinaXuxue Feng UNQUALIFIED
Alejandro PerinArgentinaIvan Magalhaes UNQUALIFIED
Wickens NestleFranceElwin Sharvill RENEWAL
Ashley DoeBrazilIvan Magalhaes QUALIFIED
Isabel BowleyUnited KingdomBernardo Dominic NEGOTIATION
Octavia MaletIndiaBernardo Dominic NEGOTIATION
Kaitlin OstroskyItalyIvan Magalhaes QUALIFIED
Octavia MaletUnited KingdomXuxue Feng PROPOSAL
Wickens NestleJapanAnna Fali QUALIFIED
Jeanfrancois VenereItalyAnna Fali NEW
Wickens NestleBrazilAsiya Javayant UNQUALIFIED
Antonio CaudyItalyAsiya Javayant NEGOTIATION
Maisha RulapaughIndiaIvan Magalhaes PROPOSAL
Wickens NestleAustraliaAsiya Javayant PROPOSAL
Sinclair WaycottSpainElwin Sharvill PROPOSAL
Greenwood BologniaSpainBernardo Dominic QUALIFIED
Mujtaba NickaRussiaAnna Fali NEGOTIATION
Murillo MaletGermanyElwin Sharvill RENEWAL
Faith GillianIndiaAsiya Javayant UNQUALIFIED
Mayumi KolmetzAustraliaAmy Elsner RENEWAL
Maria MarrierUnited KingdomAsiya Javayant PROPOSAL
Jefferson SchemmerRussiaIoni Bowcher NEW
Izzy GarufiBrazilIoni Bowcher RENEWAL
Isabel BowleyAustraliaAnna Fali PROPOSAL
Nicolas IturbideArgentinaAmy Elsner UNQUALIFIED
Izzy GarufiArgentinaIoni Bowcher UNQUALIFIED
Greenwood BologniaGermanyXuxue Feng PROPOSAL
Leja CaldareraSpainXuxue Feng RENEWAL
Emily WhobreyGermanyBernardo Dominic NEGOTIATION
Sinclair WaycottFranceAnna Fali QUALIFIED
Morrow RutaBrazilOnyama Limba NEW
Alejandro PerinArgentinaBernardo Dominic NEW
Nicolas IturbideArgentinaXuxue Feng PROPOSAL
Emily WhobreyCanadaAnna Fali NEGOTIATION
Maria MarrierArgentinaIoni Bowcher UNQUALIFIED
Emily WhobreyArgentinaBernardo Dominic PROPOSAL
Ricardo GauchoRussiaXuxue Feng PROPOSAL
Isabel BowleyItalyBernardo Dominic RENEWAL
Kadeem FlosiSpainXuxue Feng QUALIFIED
Aika InouyeItalyXuxue Feng PROPOSAL
Frozen Columns
Name
Jennifer Amigon
Morrow Ruta
Izzy Garufi
Darci Poquette
Stacey Maclead
Juan Wieser
Jefferson Schemmer
Misaki Royster
Jeanfrancois Venere
Chavez Briddick
Cody Saylors
Morrow Ruta
Silvio Slusarski
Izzy Garufi
Ricardo Gaucho
Faith Gillian
Faith Gillian
Ashley Doe
Maisha Rulapaugh
Leja Caldarera
Leon Oldroyd
Julie Stenseth
Rodrigues Campain
Darci Poquette
Darci Poquette
Johnson Sergi
Morrow Ruta
Antonio Caudy
Salvatore Stockham
Octavia Malet
Octavia Malet
Aika Inouye
Sinclair Waycott
Jefferson Schemmer
Salvatore Stockham
Leon Oldroyd
Izzy Garufi
Greenwood Bolognia
Aika Inouye
Morrow Ruta
Maria Marrier
Munro Ferencz
Aruna Figeroa
Aruna Figeroa
Leja Caldarera
Adams Morasca
Ashley Doe
Ricardo Gaucho
Misaki Royster
Arvin Albares
IdCountryDate
1000Brazil2026-04-12
1001Russia2026-04-23
1002Japan2026-04-11
1003United Kingdom2026-04-15
1004India2026-04-23
1005United Kingdom2026-03-29
1006Germany2026-04-18
1007Brazil2026-04-04
1008United Kingdom2026-03-27
1009Canada2026-04-18
1010Italy2026-04-20
1011United Kingdom2026-04-13
1012France2026-04-15
1013Canada2026-04-20
1014Argentina2026-04-03
1015Brazil2026-04-02
1016Canada2026-04-21
1017France2026-04-03
1018Brazil2026-04-22
1019Germany2026-04-13
1020Australia2026-04-21
1021France2026-04-06
1022Brazil2026-04-17
1023Russia2026-04-02
1024United Kingdom2026-04-10
1025Brazil2026-04-13
1026United Kingdom2026-04-02
1027Japan2026-04-18
1028Germany2026-04-08
1029France2026-04-03
1030Canada2026-03-31
1031Germany2026-04-21
1032Japan2026-04-20
1033France2026-03-29
1034Japan2026-04-13
1035Spain2026-04-21
1036Argentina2026-04-18
1037Italy2026-03-30
1038Brazil2026-04-14
1039Japan2026-04-11
1040Japan2026-03-25
1041United Kingdom2026-04-14
1042Brazil2026-03-30
1043United Kingdom2026-04-10
1044Australia2026-04-14
1045Canada2026-04-16
1046Japan2026-04-19
1047United Kingdom2026-04-14
1048United Kingdom2026-04-20
1049India2026-04-23

On-Demand Data

NameIdCountryDate
Sinclair Waycott1000Italy2026-04-15
Munro Ferencz1001Brazil2026-04-10
Francesco Shinko1002Brazil2026-04-04
Costa Dilliard1003Argentina2026-04-02
Emily Whobrey1004Japan2026-04-04
Antonio Caudy1005Russia2026-03-27
Rodrigues Campain1006Brazil2026-03-31
Izzy Garufi1007Australia2026-04-22
James Butt1008Canada2026-04-08
Jones Vocelka1009Spain2026-04-12
Mayumi Kolmetz1010Canada2026-04-14
Izzy Garufi1011Russia2026-04-04
Stacey Maclead1012Australia2026-03-27
Rodrigues Campain1013France2026-04-19
Cody Saylors1014Australia2026-04-17
Murillo Malet1015Russia2026-04-18
James Butt1016Brazil2026-04-15
Cody Saylors1017France2026-04-13
Aruna Figeroa1018Spain2026-04-09
Octavia Malet1019India2026-04-08
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maria MarrierCanadaAmy Elsner PROPOSAL
Mayumi KolmetzAustraliaBernardo Dominic NEW
Leon OldroydCanadaAmy Elsner PROPOSAL
Darci PoquetteUnited KingdomStephen Shaw RENEWAL
Cody SaylorsBrazilXuxue Feng RENEWAL
Mujtaba NickaArgentinaXuxue Feng UNQUALIFIED
Jeanfrancois VenereArgentinaXuxue Feng QUALIFIED
Mujtaba NickaGermanyAmy Elsner UNQUALIFIED
Rodrigues CampainCanadaStephen Shaw UNQUALIFIED
Tony FollerGermanyStephen Shaw NEW
Nicolas IturbideIndiaIoni Bowcher NEW
Stacey MacleadJapanAnna Fali QUALIFIED
Jefferson SchemmerJapanStephen Shaw NEW
Faith GillianJapanAnna Fali RENEWAL
Salvatore StockhamJapanElwin Sharvill NEGOTIATION
Deepesh ChuiAustraliaIoni Bowcher RENEWAL
Jennifer AmigonAustraliaXuxue Feng UNQUALIFIED
Alejandro PerinFranceStephen Shaw RENEWAL
Jennifer AmigonRussiaStephen Shaw RENEWAL
Mayumi KolmetzRussiaOnyama Limba NEW
Deepesh ChuiGermanyStephen Shaw QUALIFIED
Clifford RimUnited KingdomXuxue Feng NEGOTIATION
David DarakjyIndiaIoni Bowcher UNQUALIFIED
Alejandro PerinGermanyAnna Fali UNQUALIFIED
David DarakjyUnited KingdomAsiya Javayant PROPOSAL
Deepesh ChuiIndiaIoni Bowcher PROPOSAL
Arvin AlbaresRussiaAnna Fali QUALIFIED
Mayumi KolmetzCanadaBernardo Dominic RENEWAL
Jennifer AmigonFranceIoni Bowcher PROPOSAL
Izzy GarufiBrazilXuxue Feng NEGOTIATION
Isabel BowleyUnited KingdomIoni Bowcher PROPOSAL
Wickens NestleUnited KingdomAsiya Javayant QUALIFIED
Octavia MaletAustraliaIvan Magalhaes NEW
Isabel BowleyBrazilIoni Bowcher QUALIFIED
Jennifer AmigonJapanIoni Bowcher RENEWAL
Leja CaldareraGermanyIvan Magalhaes NEW
Rodrigues CampainSpainIoni Bowcher NEW
Murillo MaletRussiaElwin Sharvill RENEWAL
Stacey MacleadIndiaAsiya Javayant QUALIFIED
Deepesh ChuiSpainIoni Bowcher UNQUALIFIED

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