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
Aika InouyeFranceAmy Elsner QUALIFIED
Julie StensethBrazilAnna Fali UNQUALIFIED
Ricardo GauchoIndiaAsiya Javayant PROPOSAL
Mayumi KolmetzItalyXuxue Feng PROPOSAL
Jefferson SchemmerSpainBernardo Dominic QUALIFIED
Aditya KuskoAustraliaBernardo Dominic QUALIFIED
Ricardo GauchoSpainAsiya Javayant PROPOSAL
Ricardo GauchoAustraliaAnna Fali QUALIFIED
Jones VocelkaFranceElwin Sharvill PROPOSAL
Aruna FigeroaRussiaBernardo Dominic UNQUALIFIED
Cody SaylorsAustraliaIvan Magalhaes NEGOTIATION
Jefferson SchemmerCanadaAnna Fali NEW
Ricardo GauchoIndiaElwin Sharvill QUALIFIED
Kaitlin OstroskyCanadaOnyama Limba NEGOTIATION
Isabel BowleyRussiaStephen Shaw UNQUALIFIED
Adams MorascaBrazilAmy Elsner NEGOTIATION
Murillo MaletIndiaOnyama Limba PROPOSAL
Leja CaldareraIndiaIoni Bowcher UNQUALIFIED
Nicolas IturbideSpainAmy Elsner NEGOTIATION
Darci PoquetteCanadaIvan Magalhaes PROPOSAL
Octavia MaletJapanIoni Bowcher PROPOSAL
Murillo MaletItalyAsiya Javayant QUALIFIED
Emily WhobreyAustraliaAsiya Javayant PROPOSAL
Jones VocelkaArgentinaBernardo Dominic NEW
Munro FerenczIndiaAmy Elsner UNQUALIFIED
Octavia MaletCanadaAmy Elsner NEGOTIATION
Faith GillianAustraliaAsiya Javayant UNQUALIFIED
Aditya KuskoGermanyOnyama Limba NEW
Munro FerenczIndiaAnna Fali NEW
Ivar PaprockiRussiaAmy Elsner RENEWAL
Cody SaylorsBrazilAsiya Javayant RENEWAL
Greenwood BologniaUnited KingdomIoni Bowcher NEGOTIATION
Sinclair WaycottRussiaIvan Magalhaes PROPOSAL
Cody SaylorsRussiaAsiya Javayant QUALIFIED
Deepesh ChuiUnited KingdomElwin Sharvill NEGOTIATION
Smith GlickFranceOnyama Limba UNQUALIFIED
Ashley DoeAustraliaAsiya Javayant QUALIFIED
Maria MarrierUnited KingdomAsiya Javayant NEW
Adams MorascaFranceIoni Bowcher NEGOTIATION
Sinclair WaycottCanadaStephen Shaw PROPOSAL
Greenwood BologniaGermanyIvan Magalhaes UNQUALIFIED
Silvio SlusarskiArgentinaStephen Shaw NEGOTIATION
Misaki RoysterIndiaElwin Sharvill PROPOSAL
Aditya KuskoItalyIvan Magalhaes QUALIFIED
Izzy GarufiGermanyAnna Fali PROPOSAL
Rodrigues CampainRussiaAsiya Javayant QUALIFIED
Leon OldroydArgentinaElwin Sharvill NEGOTIATION
Antonio CaudyArgentinaStephen Shaw NEGOTIATION
Silvio SlusarskiRussiaOnyama Limba NEW
Ashley DoeSpainElwin Sharvill RENEWAL
Horizontal
NameCountryRepresentativeStatus
Juan WieserFranceXuxue Feng PROPOSAL
Stacey MacleadItalyXuxue Feng NEW
Antonio CaudySpainIoni Bowcher PROPOSAL
Mujtaba NickaItalyAmy Elsner RENEWAL
Chavez BriddickSpainIvan Magalhaes UNQUALIFIED
Faith GillianJapanAnna Fali QUALIFIED
Sinclair WaycottGermanyOnyama Limba PROPOSAL
Aditya KuskoSpainAmy Elsner NEW
Munro FerenczCanadaStephen Shaw PROPOSAL
Munro FerenczGermanyAsiya Javayant PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Kaitlin OstroskyGermany2026-04-15Dorl, James J Esq UNQUALIFIED50Elwin Sharvill
1001Rodrigues CampainBrazil2026-04-30Morlong Associates NEW29Xuxue Feng
1002Octavia MaletCanada2026-04-11Dorl, James J Esq NEW57Elwin Sharvill
1003Ivar PaprockiIndia2026-04-10Rangoni Of Florence RENEWAL21Ivan Magalhaes
1004Aika InouyeSpain2026-05-08Commercial Press RENEWAL91Elwin Sharvill
1005Tony FollerBrazil2026-04-17Rangoni Of Florence NEW73Xuxue Feng
1006Isabel BowleyIndia2026-05-02Chapman, Ross E Esq RENEWAL55Elwin Sharvill
1007Ivar PaprockiAustralia2026-04-29Feiner Bros UNQUALIFIED87Bernardo Dominic
1008Misaki RoysterGermany2026-04-11Chanay, Jeffrey A Esq QUALIFIED30Elwin Sharvill
1009Francesco ShinkoUnited Kingdom2026-05-04Feiner Bros NEGOTIATION64Amy Elsner
1010Aika InouyeUnited Kingdom2026-04-14Benton, John B Jr UNQUALIFIED54Onyama Limba
1011Izzy GarufiCanada2026-04-19King, Christopher A Esq NEGOTIATION26Ivan Magalhaes
1012Mujtaba NickaJapan2026-05-05Morlong Associates PROPOSAL95Elwin Sharvill
1013Ashley DoeItaly2026-04-15Morlong Associates PROPOSAL37Stephen Shaw
1014Aditya KuskoIndia2026-04-12Chanay, Jeffrey A Esq QUALIFIED23Asiya Javayant
1015Kadeem FlosiUnited Kingdom2026-04-12Chanay, Jeffrey A Esq PROPOSAL4Bernardo Dominic
1016Misaki RoysterJapan2026-04-29Rousseaux, Michael Esq UNQUALIFIED34Bernardo Dominic
1017Emily WhobreyFrance2026-05-08Printing Dimensions UNQUALIFIED85Xuxue Feng
1018Octavia MaletSpain2026-04-25Truhlar And Truhlar Attys QUALIFIED35Bernardo Dominic
1019Silvio SlusarskiItaly2026-04-14Chapman, Ross E Esq PROPOSAL37Ivan Magalhaes
1020Cody SaylorsFrance2026-04-22Dorl, James J Esq UNQUALIFIED12Anna Fali
1021Jefferson SchemmerItaly2026-04-29Morlong Associates NEW3Asiya Javayant
1022James ButtJapan2026-04-11Feltz Printing Service UNQUALIFIED20Elwin Sharvill
1023Morrow RutaFrance2026-04-11Feltz Printing Service QUALIFIED77Elwin Sharvill
1024Leon OldroydItaly2026-05-02Morlong Associates NEGOTIATION12Stephen Shaw
1025Nicolas IturbideArgentina2026-04-12Rousseaux, Michael Esq RENEWAL97Bernardo Dominic
1026Izzy GarufiItaly2026-05-05Feltz Printing Service PROPOSAL20Amy Elsner
1027Sinclair WaycottGermany2026-05-01Feltz Printing Service NEGOTIATION19Asiya Javayant
1028Octavia MaletAustralia2026-05-03Dorl, James J Esq UNQUALIFIED63Elwin Sharvill
1029Mayumi KolmetzFrance2026-04-30King, Christopher A Esq RENEWAL18Amy Elsner
1030Octavia MaletJapan2026-04-23Commercial Press RENEWAL44Anna Fali
1031Costa DilliardFrance2026-04-25Rangoni Of Florence QUALIFIED5Stephen Shaw
1032Ricardo GauchoJapan2026-04-27Buckley Miller Wright NEGOTIATION80Ioni Bowcher
1033Wickens NestleJapan2026-04-26Buckley Miller Wright NEW13Bernardo Dominic
1034Darci PoquetteCanada2026-04-20Feiner Bros QUALIFIED85Ioni Bowcher
1035Salvatore StockhamRussia2026-05-04Chanay, Jeffrey A Esq NEGOTIATION85Xuxue Feng
1036Cody SaylorsArgentina2026-04-14Benton, John B Jr PROPOSAL40Asiya Javayant
1037Octavia MaletRussia2026-05-05Chanay, Jeffrey A Esq QUALIFIED21Anna Fali
1038Murillo MaletIndia2026-04-23Rousseaux, Michael Esq NEGOTIATION28Amy Elsner
1039Mayumi KolmetzArgentina2026-04-22Truhlar And Truhlar Attys NEW70Ivan Magalhaes
1040Misaki RoysterCanada2026-05-08Dorl, James J Esq NEW22Ioni Bowcher
1041Rodrigues CampainUnited Kingdom2026-04-27Chapman, Ross E Esq UNQUALIFIED28Bernardo Dominic
1042Johnson SergiItaly2026-04-16Buckley Miller Wright QUALIFIED16Stephen Shaw
1043Jones VocelkaAustralia2026-05-03King, Christopher A Esq NEW3Xuxue Feng
1044Greenwood BologniaFrance2026-05-08Buckley Miller Wright RENEWAL37Xuxue Feng
1045Johnson SergiFrance2026-04-27Rousseaux, Michael Esq UNQUALIFIED98Anna Fali
1046Aika InouyeIndia2026-04-16Buckley Miller Wright UNQUALIFIED85Onyama Limba
1047Greenwood BologniaAustralia2026-04-25Feiner Bros PROPOSAL84Amy Elsner
1048Ashley DoeArgentina2026-05-01Chapman, Ross E Esq UNQUALIFIED68Asiya Javayant
1049Clifford RimGermany2026-05-04Rangoni Of Florence NEGOTIATION12Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Wickens NestleArgentinaBernardo Dominic PROPOSAL
Maria MarrierCanadaElwin Sharvill QUALIFIED
Juan WieserCanadaXuxue Feng RENEWAL
Maisha RulapaughGermanyAsiya Javayant RENEWAL
Adams MorascaRussiaIoni Bowcher PROPOSAL
Mujtaba NickaAustraliaStephen Shaw RENEWAL
Murillo MaletSpainAmy Elsner QUALIFIED
Izzy GarufiAustraliaAsiya Javayant RENEWAL
Clifford RimRussiaAnna Fali RENEWAL
Francesco ShinkoJapanIvan Magalhaes PROPOSAL
David DarakjyGermanyStephen Shaw RENEWAL
Rodrigues CampainSpainStephen Shaw NEW
Maisha RulapaughJapanOnyama Limba PROPOSAL
Greenwood BologniaUnited KingdomBernardo Dominic NEGOTIATION
Stacey MacleadItalyAmy Elsner UNQUALIFIED
Emily WhobreyItalyAnna Fali RENEWAL
Kadeem FlosiIndiaStephen Shaw NEW
James ButtJapanAmy Elsner RENEWAL
Ricardo GauchoRussiaAsiya Javayant NEW
Darci PoquetteSpainAsiya Javayant QUALIFIED
Ricardo GauchoBrazilAnna Fali RENEWAL
Juan WieserSpainBernardo Dominic RENEWAL
Stacey MacleadUnited KingdomXuxue Feng NEGOTIATION
Stacey MacleadGermanyXuxue Feng UNQUALIFIED
Leja CaldareraSpainIoni Bowcher RENEWAL
Leja CaldareraArgentinaIvan Magalhaes PROPOSAL
Mayumi KolmetzGermanyAsiya Javayant UNQUALIFIED
Isabel BowleyArgentinaIvan Magalhaes QUALIFIED
Julie StensethCanadaOnyama Limba NEGOTIATION
Antonio CaudyFranceAmy Elsner PROPOSAL
Costa DilliardIndiaStephen Shaw UNQUALIFIED
Aruna FigeroaItalyOnyama Limba NEGOTIATION
Mayumi KolmetzRussiaAsiya Javayant NEGOTIATION
Smith GlickItalyOnyama Limba PROPOSAL
Jennifer AmigonIndiaAnna Fali RENEWAL
Chavez BriddickSpainOnyama Limba QUALIFIED
Kadeem FlosiRussiaStephen Shaw PROPOSAL
Morrow RutaGermanyBernardo Dominic PROPOSAL
Leja CaldareraArgentinaAsiya Javayant QUALIFIED
Kadeem FlosiIndiaIvan Magalhaes PROPOSAL
Arvin AlbaresFranceXuxue Feng NEGOTIATION
Deepesh ChuiAustraliaIvan Magalhaes UNQUALIFIED
Ricardo GauchoItalyXuxue Feng PROPOSAL
Costa DilliardAustraliaIvan Magalhaes UNQUALIFIED
Izzy GarufiAustraliaElwin Sharvill PROPOSAL
Alejandro PerinGermanyBernardo Dominic UNQUALIFIED
Rodrigues CampainSpainBernardo Dominic NEW
Darci PoquetteUnited KingdomBernardo Dominic NEGOTIATION
Kadeem FlosiFranceAsiya Javayant QUALIFIED
Stacey MacleadUnited KingdomAnna Fali RENEWAL
Frozen Columns
Name
Chavez Briddick
Clifford Rim
Leja Caldarera
Mayumi Kolmetz
Octavia Malet
Cody Saylors
Rodrigues Campain
Silvio Slusarski
Leon Oldroyd
Ricardo Gaucho
Munro Ferencz
Tony Foller
Sinclair Waycott
Mayumi Kolmetz
Aika Inouye
Claire Tollner
Kaitlin Ostrosky
Jeanfrancois Venere
Antonio Caudy
Salvatore Stockham
Aditya Kusko
Jefferson Schemmer
Munro Ferencz
Alejandro Perin
David Darakjy
Stacey Maclead
Smith Glick
Stacey Maclead
Sinclair Waycott
David Darakjy
Octavia Malet
Antonio Caudy
Maria Marrier
Aditya Kusko
Jones Vocelka
Deepesh Chui
Cody Saylors
Kaitlin Ostrosky
Mayumi Kolmetz
Kaitlin Ostrosky
Leon Oldroyd
David Darakjy
Morrow Ruta
Leja Caldarera
Tony Foller
Claire Tollner
Chavez Briddick
Costa Dilliard
Salvatore Stockham
Tony Foller
IdCountryDate
1000India2026-04-25
1001India2026-04-17
1002Japan2026-04-19
1003Brazil2026-04-24
1004Japan2026-04-29
1005Japan2026-04-24
1006Spain2026-04-14
1007Argentina2026-05-08
1008Spain2026-04-24
1009Italy2026-04-16
1010Canada2026-04-24
1011Canada2026-04-29
1012Australia2026-04-25
1013United Kingdom2026-04-15
1014Russia2026-04-12
1015France2026-04-13
1016Brazil2026-05-02
1017United Kingdom2026-05-08
1018Argentina2026-04-11
1019Spain2026-04-13
1020Japan2026-05-09
1021India2026-04-16
1022France2026-05-03
1023France2026-04-12
1024Spain2026-05-08
1025Russia2026-05-03
1026France2026-05-04
1027Spain2026-04-15
1028Brazil2026-05-03
1029Spain2026-04-24
1030Russia2026-04-25
1031Spain2026-04-25
1032Argentina2026-04-18
1033Brazil2026-04-24
1034Australia2026-04-19
1035United Kingdom2026-05-07
1036India2026-04-23
1037Italy2026-05-04
1038Argentina2026-04-12
1039Russia2026-04-10
1040Canada2026-04-16
1041Russia2026-04-24
1042Brazil2026-05-07
1043Canada2026-04-21
1044Germany2026-04-21
1045Spain2026-04-26
1046India2026-04-19
1047Spain2026-04-17
1048France2026-04-10
1049Brazil2026-04-24

On-Demand Data

NameIdCountryDate
Chavez Briddick1000Argentina2026-04-24
Faith Gillian1001Italy2026-05-06
Stacey Maclead1002Spain2026-04-16
Aika Inouye1003India2026-04-16
Adams Morasca1004Japan2026-05-02
Francesco Shinko1005Brazil2026-04-20
Salvatore Stockham1006France2026-05-03
Cody Saylors1007Russia2026-04-25
Mujtaba Nicka1008Italy2026-04-23
Wickens Nestle1009India2026-04-29
Mujtaba Nicka1010United Kingdom2026-04-24
Francesco Shinko1011India2026-04-17
Smith Glick1012Japan2026-04-14
Aditya Kusko1013Russia2026-05-04
Cody Saylors1014Russia2026-04-18
Greenwood Bolognia1015Italy2026-05-01
Rodrigues Campain1016Canada2026-04-12
Izzy Garufi1017Argentina2026-04-28
Isabel Bowley1018Brazil2026-05-04
Sinclair Waycott1019India2026-05-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jefferson SchemmerArgentinaAnna Fali NEGOTIATION
Johnson SergiUnited KingdomXuxue Feng NEW
Faith GillianFranceIvan Magalhaes NEGOTIATION
Tony FollerUnited KingdomBernardo Dominic QUALIFIED
Stacey MacleadFranceXuxue Feng QUALIFIED
Jennifer AmigonIndiaIoni Bowcher PROPOSAL
Aditya KuskoBrazilAmy Elsner NEW
Stacey MacleadCanadaStephen Shaw NEW
Jeanfrancois VenereFranceBernardo Dominic QUALIFIED
Aruna FigeroaAustraliaBernardo Dominic UNQUALIFIED
Chavez BriddickJapanIoni Bowcher UNQUALIFIED
Francesco ShinkoFranceAnna Fali NEGOTIATION
Emily WhobreyFranceAmy Elsner PROPOSAL
Salvatore StockhamUnited KingdomElwin Sharvill RENEWAL
Francesco ShinkoArgentinaBernardo Dominic RENEWAL
Sinclair WaycottArgentinaElwin Sharvill UNQUALIFIED
Leja CaldareraArgentinaIvan Magalhaes NEGOTIATION
Maisha RulapaughArgentinaAnna Fali UNQUALIFIED
Stacey MacleadRussiaAsiya Javayant RENEWAL
David DarakjySpainAsiya Javayant NEW
Octavia MaletJapanOnyama Limba NEGOTIATION
Kadeem FlosiSpainOnyama Limba UNQUALIFIED
Rodrigues CampainFranceBernardo Dominic NEGOTIATION
Kaitlin OstroskyArgentinaIvan Magalhaes UNQUALIFIED
Greenwood BologniaBrazilAmy Elsner QUALIFIED
Chavez BriddickBrazilElwin Sharvill PROPOSAL
Rodrigues CampainUnited KingdomIoni Bowcher NEW
Jones VocelkaBrazilIoni Bowcher NEW
Nicolas IturbideFranceElwin Sharvill QUALIFIED
Faith GillianSpainElwin Sharvill NEW
Chavez BriddickJapanIoni Bowcher UNQUALIFIED
Maisha RulapaughCanadaElwin Sharvill PROPOSAL
Alejandro PerinUnited KingdomIoni Bowcher NEW
Adams MorascaJapanOnyama Limba NEGOTIATION
Stacey MacleadUnited KingdomStephen Shaw PROPOSAL
Aditya KuskoFranceStephen Shaw UNQUALIFIED
Costa DilliardFranceXuxue Feng NEGOTIATION
Jennifer AmigonItalyElwin Sharvill UNQUALIFIED
Deepesh ChuiBrazilIoni Bowcher NEGOTIATION
Octavia MaletBrazilBernardo Dominic NEGOTIATION

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