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
Ashley DoeRussiaXuxue Feng NEW
James ButtCanadaAsiya Javayant UNQUALIFIED
Izzy GarufiIndiaStephen Shaw NEGOTIATION
Izzy GarufiItalyElwin Sharvill NEGOTIATION
Deepesh ChuiGermanyAmy Elsner NEW
Murillo MaletUnited KingdomIoni Bowcher QUALIFIED
Kadeem FlosiJapanElwin Sharvill RENEWAL
Aruna FigeroaFranceXuxue Feng PROPOSAL
Johnson SergiFranceAmy Elsner NEGOTIATION
Jennifer AmigonCanadaElwin Sharvill NEW
James ButtSpainOnyama Limba NEGOTIATION
Aruna FigeroaJapanStephen Shaw UNQUALIFIED
Juan WieserCanadaElwin Sharvill UNQUALIFIED
Ashley DoeArgentinaAmy Elsner NEW
James ButtCanadaAmy Elsner UNQUALIFIED
Alejandro PerinRussiaElwin Sharvill RENEWAL
Nicolas IturbideIndiaBernardo Dominic UNQUALIFIED
Alejandro PerinGermanyAsiya Javayant NEGOTIATION
Francesco ShinkoRussiaXuxue Feng NEGOTIATION
Maisha RulapaughRussiaStephen Shaw UNQUALIFIED
Ivar PaprockiBrazilOnyama Limba RENEWAL
Jones VocelkaBrazilAmy Elsner UNQUALIFIED
Rodrigues CampainUnited KingdomBernardo Dominic NEGOTIATION
Costa DilliardJapanElwin Sharvill UNQUALIFIED
Isabel BowleyGermanyIoni Bowcher NEGOTIATION
Salvatore StockhamArgentinaAsiya Javayant NEGOTIATION
Antonio CaudyRussiaStephen Shaw NEW
Sinclair WaycottFranceStephen Shaw NEW
Greenwood BologniaUnited KingdomIvan Magalhaes NEGOTIATION
Leon OldroydCanadaElwin Sharvill RENEWAL
Salvatore StockhamGermanyIoni Bowcher PROPOSAL
Claire TollnerCanadaAnna Fali NEW
Faith GillianCanadaAnna Fali NEW
Jefferson SchemmerJapanAmy Elsner NEGOTIATION
Isabel BowleyRussiaStephen Shaw RENEWAL
Aika InouyeBrazilIvan Magalhaes UNQUALIFIED
Ricardo GauchoAustraliaElwin Sharvill RENEWAL
Kadeem FlosiArgentinaIvan Magalhaes UNQUALIFIED
Isabel BowleyItalyIoni Bowcher UNQUALIFIED
Maisha RulapaughBrazilAsiya Javayant PROPOSAL
Costa DilliardUnited KingdomBernardo Dominic UNQUALIFIED
Alejandro PerinJapanOnyama Limba PROPOSAL
Stacey MacleadSpainIoni Bowcher UNQUALIFIED
Aruna FigeroaGermanyElwin Sharvill UNQUALIFIED
Emily WhobreyJapanIoni Bowcher QUALIFIED
Octavia MaletAustraliaIoni Bowcher NEGOTIATION
Ivar PaprockiFranceAsiya Javayant QUALIFIED
Nicolas IturbideItalyAmy Elsner NEW
Johnson SergiUnited KingdomAsiya Javayant UNQUALIFIED
James ButtGermanyOnyama Limba QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Johnson SergiItalyAnna Fali NEGOTIATION
Clifford RimAustraliaElwin Sharvill PROPOSAL
Sinclair WaycottFranceOnyama Limba NEW
Morrow RutaAustraliaIoni Bowcher PROPOSAL
Cody SaylorsIndiaAsiya Javayant NEGOTIATION
Maisha RulapaughGermanyXuxue Feng UNQUALIFIED
Chavez BriddickBrazilXuxue Feng QUALIFIED
James ButtIndiaElwin Sharvill RENEWAL
Claire TollnerBrazilAmy Elsner RENEWAL
James ButtFranceBernardo Dominic UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Smith GlickCanada2026-05-27Rousseaux, Michael Esq NEGOTIATION69Onyama Limba
1001Kaitlin OstroskyItaly2026-05-04Rangoni Of Florence PROPOSAL94Elwin Sharvill
1002Jones VocelkaAustralia2026-05-21Rangoni Of Florence NEGOTIATION1Elwin Sharvill
1003Maria MarrierCanada2026-05-11Feiner Bros PROPOSAL93Amy Elsner
1004Smith GlickRussia2026-05-20Chapman, Ross E Esq PROPOSAL45Ivan Magalhaes
1005Tony FollerRussia2026-05-17Benton, John B Jr QUALIFIED79Elwin Sharvill
1006Leon OldroydFrance2026-05-28Dorl, James J Esq PROPOSAL29Xuxue Feng
1007Alejandro PerinAustralia2026-05-20Benton, John B Jr RENEWAL63Ivan Magalhaes
1008Chavez BriddickItaly2026-05-30Feiner Bros NEGOTIATION83Asiya Javayant
1009Emily WhobreyArgentina2026-05-24Commercial Press UNQUALIFIED56Anna Fali
1010Nicolas IturbideArgentina2026-05-14Chemel, James L Cpa QUALIFIED20Asiya Javayant
1011Jeanfrancois VenereArgentina2026-05-30Dorl, James J Esq PROPOSAL47Elwin Sharvill
1012Faith GillianItaly2026-05-14Feltz Printing Service NEW53Stephen Shaw
1013Johnson SergiJapan2026-05-27Dorl, James J Esq RENEWAL7Anna Fali
1014Sinclair WaycottUnited Kingdom2026-05-28King, Christopher A Esq NEW63Anna Fali
1015Jones VocelkaUnited Kingdom2026-05-02Dorl, James J Esq PROPOSAL71Onyama Limba
1016Leja CaldareraAustralia2026-05-05Truhlar And Truhlar Attys UNQUALIFIED26Bernardo Dominic
1017Chavez BriddickBrazil2026-05-16Morlong Associates NEGOTIATION52Xuxue Feng
1018Mujtaba NickaUnited Kingdom2026-05-21Chemel, James L Cpa NEGOTIATION94Asiya Javayant
1019Leon OldroydRussia2026-05-13Commercial Press NEGOTIATION11Stephen Shaw
1020Octavia MaletFrance2026-05-20Commercial Press PROPOSAL8Ivan Magalhaes
1021Maisha RulapaughBrazil2026-05-11Feiner Bros PROPOSAL85Asiya Javayant
1022Ivar PaprockiItaly2026-05-30Truhlar And Truhlar Attys RENEWAL74Anna Fali
1023Aditya KuskoIndia2026-05-28Rangoni Of Florence NEW17Stephen Shaw
1024Izzy GarufiUnited Kingdom2026-05-21Morlong Associates UNQUALIFIED6Elwin Sharvill
1025Johnson SergiBrazil2026-05-22Feltz Printing Service PROPOSAL46Ioni Bowcher
1026Murillo MaletJapan2026-05-07Chemel, James L Cpa NEGOTIATION50Stephen Shaw
1027Emily WhobreyCanada2026-05-09Rangoni Of Florence NEGOTIATION70Asiya Javayant
1028Leja CaldareraAustralia2026-05-15Commercial Press QUALIFIED37Anna Fali
1029Octavia MaletRussia2026-05-18Chanay, Jeffrey A Esq PROPOSAL75Onyama Limba
1030Leja CaldareraArgentina2026-05-24Buckley Miller Wright UNQUALIFIED9Anna Fali
1031Tony FollerAustralia2026-05-25Rangoni Of Florence UNQUALIFIED31Bernardo Dominic
1032Izzy GarufiItaly2026-05-05Chemel, James L Cpa UNQUALIFIED53Bernardo Dominic
1033Leon OldroydJapan2026-05-18King, Christopher A Esq UNQUALIFIED15Onyama Limba
1034Munro FerenczItaly2026-05-26Chemel, James L Cpa PROPOSAL45Onyama Limba
1035Adams MorascaIndia2026-05-24King, Christopher A Esq UNQUALIFIED65Elwin Sharvill
1036Smith GlickItaly2026-05-03Feiner Bros UNQUALIFIED33Asiya Javayant
1037Tony FollerUnited Kingdom2026-05-04Printing Dimensions NEW20Xuxue Feng
1038Antonio CaudyGermany2026-05-17Truhlar And Truhlar Attys RENEWAL20Amy Elsner
1039Aruna FigeroaBrazil2026-05-13Buckley Miller Wright UNQUALIFIED69Ivan Magalhaes
1040Munro FerenczSpain2026-05-13Rangoni Of Florence QUALIFIED65Elwin Sharvill
1041Francesco ShinkoIndia2026-05-18Rousseaux, Michael Esq RENEWAL26Onyama Limba
1042Maisha RulapaughFrance2026-05-16Chanay, Jeffrey A Esq NEW18Bernardo Dominic
1043Jefferson SchemmerSpain2026-05-25Truhlar And Truhlar Attys UNQUALIFIED20Amy Elsner
1044Kaitlin OstroskyIndia2026-05-08Buckley Miller Wright QUALIFIED33Xuxue Feng
1045Aika InouyeItaly2026-05-14Chemel, James L Cpa RENEWAL79Bernardo Dominic
1046Arvin AlbaresAustralia2026-05-17Dorl, James J Esq QUALIFIED55Ivan Magalhaes
1047Salvatore StockhamArgentina2026-05-05Rangoni Of Florence NEGOTIATION80Asiya Javayant
1048Julie StensethArgentina2026-05-07Rangoni Of Florence NEW87Ivan Magalhaes
1049Morrow RutaGermany2026-05-30Benton, John B Jr NEGOTIATION82Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Jones VocelkaBrazilBernardo Dominic PROPOSAL
Rodrigues CampainAustraliaStephen Shaw PROPOSAL
Cody SaylorsIndiaIoni Bowcher UNQUALIFIED
Aditya KuskoAustraliaElwin Sharvill UNQUALIFIED
Jefferson SchemmerSpainOnyama Limba UNQUALIFIED
Kadeem FlosiFranceIvan Magalhaes NEW
Cody SaylorsGermanyElwin Sharvill QUALIFIED
Nicolas IturbideIndiaIvan Magalhaes RENEWAL
Antonio CaudyItalyElwin Sharvill PROPOSAL
Stacey MacleadAustraliaIoni Bowcher QUALIFIED
Ivar PaprockiGermanyAmy Elsner UNQUALIFIED
Silvio SlusarskiRussiaOnyama Limba QUALIFIED
Maria MarrierFranceElwin Sharvill NEW
Cody SaylorsAustraliaOnyama Limba RENEWAL
Arvin AlbaresCanadaAnna Fali UNQUALIFIED
Mujtaba NickaAustraliaOnyama Limba UNQUALIFIED
Rodrigues CampainGermanyStephen Shaw PROPOSAL
Murillo MaletAustraliaAsiya Javayant QUALIFIED
Leja CaldareraBrazilOnyama Limba PROPOSAL
Octavia MaletAustraliaAsiya Javayant RENEWAL
Costa DilliardArgentinaAsiya Javayant UNQUALIFIED
Leon OldroydItalyOnyama Limba QUALIFIED
Juan WieserRussiaXuxue Feng UNQUALIFIED
Maisha RulapaughFranceStephen Shaw RENEWAL
Izzy GarufiUnited KingdomStephen Shaw PROPOSAL
Faith GillianIndiaAsiya Javayant RENEWAL
Ashley DoeUnited KingdomIvan Magalhaes NEW
Tony FollerGermanyIoni Bowcher RENEWAL
Rodrigues CampainJapanIoni Bowcher NEW
Ashley DoeCanadaAnna Fali UNQUALIFIED
Costa DilliardSpainXuxue Feng QUALIFIED
Costa DilliardUnited KingdomAmy Elsner PROPOSAL
Maisha RulapaughCanadaOnyama Limba QUALIFIED
Silvio SlusarskiAustraliaIvan Magalhaes RENEWAL
Isabel BowleyRussiaAnna Fali RENEWAL
Maria MarrierRussiaBernardo Dominic PROPOSAL
James ButtFranceAsiya Javayant NEW
Clifford RimJapanAnna Fali UNQUALIFIED
Costa DilliardAustraliaIoni Bowcher PROPOSAL
Deepesh ChuiCanadaStephen Shaw RENEWAL
Ivar PaprockiIndiaAmy Elsner NEGOTIATION
Ivar PaprockiIndiaAsiya Javayant UNQUALIFIED
Murillo MaletIndiaAmy Elsner NEGOTIATION
Chavez BriddickRussiaAsiya Javayant RENEWAL
Smith GlickGermanyAnna Fali PROPOSAL
Ivar PaprockiAustraliaAsiya Javayant UNQUALIFIED
Ivar PaprockiBrazilStephen Shaw RENEWAL
Leon OldroydJapanAsiya Javayant QUALIFIED
Kadeem FlosiRussiaOnyama Limba QUALIFIED
Chavez BriddickUnited KingdomOnyama Limba UNQUALIFIED
Frozen Columns
Name
Deepesh Chui
Kaitlin Ostrosky
Silvio Slusarski
Ricardo Gaucho
Claire Tollner
Wickens Nestle
Claire Tollner
Leja Caldarera
Clifford Rim
Emily Whobrey
Kaitlin Ostrosky
Smith Glick
Aruna Figeroa
Leja Caldarera
Munro Ferencz
Costa Dilliard
Ashley Doe
Murillo Malet
Aruna Figeroa
Claire Tollner
Smith Glick
Arvin Albares
Faith Gillian
Kaitlin Ostrosky
Chavez Briddick
Jones Vocelka
Sinclair Waycott
Adams Morasca
Jones Vocelka
Mayumi Kolmetz
Adams Morasca
Deepesh Chui
Maria Marrier
Johnson Sergi
Jefferson Schemmer
Darci Poquette
Jones Vocelka
Darci Poquette
Antonio Caudy
Tony Foller
Rodrigues Campain
Maisha Rulapaugh
James Butt
Deepesh Chui
Silvio Slusarski
Stacey Maclead
Clifford Rim
Kadeem Flosi
Leja Caldarera
Antonio Caudy
IdCountryDate
1000Germany2026-05-27
1001Russia2026-05-14
1002Italy2026-05-10
1003Spain2026-05-05
1004Spain2026-05-19
1005Argentina2026-05-25
1006Russia2026-05-15
1007Spain2026-05-21
1008France2026-05-24
1009Argentina2026-05-25
1010Russia2026-05-09
1011Italy2026-05-25
1012United Kingdom2026-05-03
1013India2026-05-29
1014Canada2026-05-02
1015Spain2026-05-07
1016Spain2026-05-18
1017Italy2026-05-13
1018Japan2026-05-14
1019India2026-05-19
1020Spain2026-05-23
1021Germany2026-05-23
1022Italy2026-05-24
1023Spain2026-05-11
1024Germany2026-05-08
1025Italy2026-05-11
1026Italy2026-05-12
1027Brazil2026-05-15
1028Russia2026-05-28
1029Germany2026-05-03
1030Brazil2026-05-10
1031Spain2026-05-04
1032Canada2026-05-22
1033Russia2026-05-09
1034United Kingdom2026-05-25
1035Russia2026-05-27
1036Spain2026-05-18
1037Russia2026-05-14
1038Australia2026-05-15
1039Canada2026-05-20
1040Canada2026-05-15
1041Germany2026-05-12
1042India2026-05-07
1043Brazil2026-05-17
1044United Kingdom2026-05-11
1045France2026-05-13
1046France2026-05-07
1047Argentina2026-05-04
1048Japan2026-05-05
1049Spain2026-05-07

On-Demand Data

NameIdCountryDate
Sinclair Waycott1000Russia2026-05-14
Stacey Maclead1001Germany2026-05-02
Antonio Caudy1002Canada2026-05-16
Costa Dilliard1003Spain2026-05-09
Maria Marrier1004United Kingdom2026-05-06
Leon Oldroyd1005Italy2026-05-09
Clifford Rim1006Italy2026-05-11
Claire Tollner1007Canada2026-05-02
Nicolas Iturbide1008Russia2026-05-06
Emily Whobrey1009Brazil2026-05-14
Arvin Albares1010Germany2026-05-25
Emily Whobrey1011Brazil2026-05-04
Costa Dilliard1012Australia2026-05-15
Aruna Figeroa1013United Kingdom2026-05-31
James Butt1014Italy2026-05-29
Mujtaba Nicka1015United Kingdom2026-05-22
Antonio Caudy1016India2026-05-26
Jennifer Amigon1017Canada2026-05-09
Francesco Shinko1018Italy2026-05-26
Alejandro Perin1019Russia2026-05-24
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aruna FigeroaRussiaStephen Shaw NEGOTIATION
Isabel BowleyAustraliaXuxue Feng PROPOSAL
Murillo MaletAustraliaBernardo Dominic NEGOTIATION
James ButtRussiaAsiya Javayant RENEWAL
Greenwood BologniaGermanyAsiya Javayant QUALIFIED
Isabel BowleyIndiaBernardo Dominic QUALIFIED
Juan WieserBrazilIoni Bowcher NEW
Smith GlickBrazilAnna Fali NEW
Julie StensethCanadaAnna Fali PROPOSAL
Jeanfrancois VenereAustraliaAmy Elsner PROPOSAL
Mujtaba NickaUnited KingdomIvan Magalhaes UNQUALIFIED
Chavez BriddickIndiaAmy Elsner PROPOSAL
Wickens NestleBrazilAsiya Javayant RENEWAL
Isabel BowleyIndiaAnna Fali NEGOTIATION
Juan WieserCanadaStephen Shaw PROPOSAL
Mayumi KolmetzItalyStephen Shaw PROPOSAL
Stacey MacleadUnited KingdomXuxue Feng QUALIFIED
Jeanfrancois VenereUnited KingdomXuxue Feng NEW
Leja CaldareraGermanyAnna Fali QUALIFIED
Silvio SlusarskiBrazilStephen Shaw QUALIFIED
Leja CaldareraGermanyAnna Fali NEGOTIATION
James ButtRussiaStephen Shaw NEW
Maria MarrierArgentinaOnyama Limba PROPOSAL
Wickens NestleIndiaXuxue Feng RENEWAL
Kadeem FlosiJapanAmy Elsner NEW
Jefferson SchemmerAustraliaAnna Fali PROPOSAL
Leja CaldareraAustraliaAmy Elsner RENEWAL
Sinclair WaycottArgentinaStephen Shaw NEW
Deepesh ChuiSpainIoni Bowcher PROPOSAL
Jennifer AmigonFranceAmy Elsner RENEWAL
Aika InouyeUnited KingdomXuxue Feng UNQUALIFIED
Maria MarrierJapanAmy Elsner PROPOSAL
Isabel BowleyItalyAmy Elsner RENEWAL
Misaki RoysterRussiaAsiya Javayant QUALIFIED
Darci PoquetteFranceOnyama Limba UNQUALIFIED
Izzy GarufiCanadaStephen Shaw UNQUALIFIED
Leon OldroydUnited KingdomStephen Shaw NEW
Maria MarrierUnited KingdomElwin Sharvill NEGOTIATION
Jeanfrancois VenereArgentinaAnna Fali UNQUALIFIED
Costa DilliardJapanAmy Elsner 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>