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
Julie StensethBrazilElwin Sharvill PROPOSAL
Salvatore StockhamFranceAmy Elsner RENEWAL
Smith GlickBrazilIoni Bowcher QUALIFIED
Mayumi KolmetzAustraliaOnyama Limba UNQUALIFIED
Darci PoquetteBrazilElwin Sharvill NEGOTIATION
Rodrigues CampainAustraliaIoni Bowcher QUALIFIED
Alejandro PerinGermanyIoni Bowcher QUALIFIED
Arvin AlbaresRussiaIoni Bowcher UNQUALIFIED
Smith GlickRussiaAmy Elsner NEW
Antonio CaudyFranceStephen Shaw NEGOTIATION
Arvin AlbaresRussiaAnna Fali UNQUALIFIED
Jefferson SchemmerItalyXuxue Feng NEGOTIATION
Izzy GarufiSpainAmy Elsner QUALIFIED
Cody SaylorsUnited KingdomXuxue Feng NEW
Greenwood BologniaFranceIoni Bowcher QUALIFIED
Maria MarrierItalyIvan Magalhaes QUALIFIED
Jefferson SchemmerUnited KingdomStephen Shaw NEGOTIATION
Francesco ShinkoFranceAsiya Javayant RENEWAL
Leja CaldareraCanadaAmy Elsner NEW
Adams MorascaFranceAnna Fali NEW
Aditya KuskoBrazilBernardo Dominic UNQUALIFIED
Francesco ShinkoSpainStephen Shaw NEGOTIATION
Adams MorascaAustraliaStephen Shaw PROPOSAL
Smith GlickIndiaOnyama Limba QUALIFIED
Isabel BowleyAustraliaOnyama Limba QUALIFIED
Maria MarrierItalyAsiya Javayant NEW
Nicolas IturbideArgentinaIvan Magalhaes UNQUALIFIED
Emily WhobreyAustraliaOnyama Limba UNQUALIFIED
Chavez BriddickIndiaIvan Magalhaes QUALIFIED
Munro FerenczUnited KingdomIvan Magalhaes QUALIFIED
Maria MarrierBrazilBernardo Dominic QUALIFIED
Juan WieserCanadaBernardo Dominic UNQUALIFIED
Kaitlin OstroskyItalyXuxue Feng UNQUALIFIED
Salvatore StockhamGermanyIoni Bowcher UNQUALIFIED
Maisha RulapaughBrazilIvan Magalhaes PROPOSAL
Faith GillianAustraliaXuxue Feng RENEWAL
Antonio CaudyUnited KingdomAnna Fali RENEWAL
Antonio CaudyCanadaXuxue Feng UNQUALIFIED
Tony FollerIndiaOnyama Limba UNQUALIFIED
Ivar PaprockiAustraliaAnna Fali NEGOTIATION
Ricardo GauchoFranceStephen Shaw NEW
Darci PoquetteSpainIoni Bowcher QUALIFIED
Aruna FigeroaArgentinaAnna Fali PROPOSAL
Alejandro PerinFranceXuxue Feng UNQUALIFIED
Cody SaylorsRussiaAmy Elsner RENEWAL
Arvin AlbaresGermanyBernardo Dominic UNQUALIFIED
Nicolas IturbideSpainAnna Fali UNQUALIFIED
Smith GlickBrazilStephen Shaw NEGOTIATION
Antonio CaudyItalyStephen Shaw QUALIFIED
Octavia MaletJapanAmy Elsner RENEWAL
Horizontal
NameCountryRepresentativeStatus
Mayumi KolmetzCanadaBernardo Dominic RENEWAL
Francesco ShinkoItalyXuxue Feng NEW
Maria MarrierUnited KingdomStephen Shaw NEGOTIATION
Maria MarrierIndiaXuxue Feng PROPOSAL
Jeanfrancois VenereRussiaBernardo Dominic NEGOTIATION
Salvatore StockhamUnited KingdomAmy Elsner NEGOTIATION
Darci PoquetteJapanAsiya Javayant UNQUALIFIED
Isabel BowleyGermanyAmy Elsner RENEWAL
Octavia MaletFranceAmy Elsner PROPOSAL
Isabel BowleyGermanyIoni Bowcher NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aditya KuskoArgentina2026-04-26Chanay, Jeffrey A Esq PROPOSAL0Amy Elsner
1001Smith GlickBrazil2026-04-30Feltz Printing Service NEW51Elwin Sharvill
1002Jennifer AmigonSpain2026-04-26Morlong Associates NEGOTIATION45Amy Elsner
1003Isabel BowleyItaly2026-05-24Feiner Bros NEW62Amy Elsner
1004Ashley DoeRussia2026-04-29Benton, John B Jr RENEWAL66Ioni Bowcher
1005Misaki RoysterJapan2026-04-28Rangoni Of Florence NEW27Bernardo Dominic
1006Stacey MacleadSpain2026-05-06Rousseaux, Michael Esq PROPOSAL48Ioni Bowcher
1007Tony FollerBrazil2026-05-12Chemel, James L Cpa UNQUALIFIED1Ioni Bowcher
1008Arvin AlbaresCanada2026-04-26Rousseaux, Michael Esq UNQUALIFIED89Asiya Javayant
1009Misaki RoysterAustralia2026-04-25Feiner Bros PROPOSAL32Ivan Magalhaes
1010Clifford RimUnited Kingdom2026-05-15King, Christopher A Esq PROPOSAL26Asiya Javayant
1011Jefferson SchemmerAustralia2026-05-06Truhlar And Truhlar Attys RENEWAL46Ivan Magalhaes
1012Johnson SergiUnited Kingdom2026-05-02Rousseaux, Michael Esq UNQUALIFIED14Onyama Limba
1013Deepesh ChuiUnited Kingdom2026-05-01Rousseaux, Michael Esq PROPOSAL88Xuxue Feng
1014Aika InouyeGermany2026-05-18Rangoni Of Florence NEGOTIATION72Ioni Bowcher
1015David DarakjyIndia2026-05-09Truhlar And Truhlar Attys PROPOSAL27Anna Fali
1016Sinclair WaycottIndia2026-04-29Benton, John B Jr UNQUALIFIED58Onyama Limba
1017Claire TollnerBrazil2026-05-07Dorl, James J Esq PROPOSAL66Stephen Shaw
1018Jeanfrancois VenereAustralia2026-05-16Chanay, Jeffrey A Esq NEGOTIATION33Amy Elsner
1019Claire TollnerJapan2026-05-11Dorl, James J Esq RENEWAL6Bernardo Dominic
1020Aruna FigeroaItaly2026-05-23Chapman, Ross E Esq QUALIFIED1Asiya Javayant
1021Kadeem FlosiGermany2026-05-03Rangoni Of Florence UNQUALIFIED41Ioni Bowcher
1022Julie StensethBrazil2026-05-24Dorl, James J Esq UNQUALIFIED70Anna Fali
1023Kadeem FlosiCanada2026-04-29Benton, John B Jr PROPOSAL43Ivan Magalhaes
1024Kadeem FlosiGermany2026-05-20Feiner Bros NEGOTIATION56Ioni Bowcher
1025James ButtIndia2026-05-11Dorl, James J Esq NEGOTIATION58Stephen Shaw
1026Salvatore StockhamGermany2026-05-23Dorl, James J Esq NEW74Xuxue Feng
1027Stacey MacleadGermany2026-05-10King, Christopher A Esq QUALIFIED63Xuxue Feng
1028Costa DilliardArgentina2026-05-08Rousseaux, Michael Esq NEGOTIATION29Ivan Magalhaes
1029Kadeem FlosiJapan2026-05-17Chanay, Jeffrey A Esq RENEWAL54Onyama Limba
1030Rodrigues CampainSpain2026-05-11Printing Dimensions QUALIFIED84Onyama Limba
1031Ricardo GauchoRussia2026-05-03Chapman, Ross E Esq NEGOTIATION73Elwin Sharvill
1032Faith GillianIndia2026-05-06Feiner Bros PROPOSAL7Ioni Bowcher
1033Ivar PaprockiRussia2026-05-03Printing Dimensions UNQUALIFIED55Asiya Javayant
1034Ricardo GauchoFrance2026-05-18Benton, John B Jr NEGOTIATION12Anna Fali
1035Darci PoquetteSpain2026-05-11Feiner Bros UNQUALIFIED60Xuxue Feng
1036Johnson SergiUnited Kingdom2026-04-26Chanay, Jeffrey A Esq RENEWAL33Ivan Magalhaes
1037Izzy GarufiArgentina2026-05-09Feiner Bros UNQUALIFIED56Xuxue Feng
1038Aditya KuskoFrance2026-05-09Chanay, Jeffrey A Esq UNQUALIFIED62Ivan Magalhaes
1039Clifford RimIndia2026-04-27Printing Dimensions UNQUALIFIED98Amy Elsner
1040Johnson SergiItaly2026-04-29Rangoni Of Florence NEW5Ivan Magalhaes
1041Jefferson SchemmerCanada2026-05-20Rangoni Of Florence NEW71Ivan Magalhaes
1042Maria MarrierRussia2026-05-22Morlong Associates UNQUALIFIED63Xuxue Feng
1043Sinclair WaycottJapan2026-04-30Morlong Associates NEGOTIATION87Bernardo Dominic
1044Cody SaylorsGermany2026-05-11Benton, John B Jr QUALIFIED89Ioni Bowcher
1045Adams MorascaRussia2026-05-06Commercial Press UNQUALIFIED22Ivan Magalhaes
1046Smith GlickRussia2026-04-30Morlong Associates NEGOTIATION30Stephen Shaw
1047Juan WieserAustralia2026-05-15Feltz Printing Service QUALIFIED45Xuxue Feng
1048Ashley DoeFrance2026-04-27Commercial Press NEW3Amy Elsner
1049Misaki RoysterItaly2026-05-21Feiner Bros PROPOSAL38Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Rodrigues CampainFranceOnyama Limba QUALIFIED
Greenwood BologniaSpainIoni Bowcher NEW
Isabel BowleyUnited KingdomOnyama Limba NEGOTIATION
Julie StensethItalyStephen Shaw RENEWAL
Wickens NestleSpainOnyama Limba NEW
Isabel BowleyBrazilOnyama Limba UNQUALIFIED
Mujtaba NickaUnited KingdomIoni Bowcher PROPOSAL
Juan WieserIndiaIoni Bowcher RENEWAL
Mayumi KolmetzUnited KingdomStephen Shaw QUALIFIED
Darci PoquetteSpainIvan Magalhaes RENEWAL
Mayumi KolmetzIndiaBernardo Dominic PROPOSAL
Alejandro PerinUnited KingdomAnna Fali QUALIFIED
Alejandro PerinSpainAnna Fali UNQUALIFIED
Juan WieserArgentinaStephen Shaw NEW
Leja CaldareraItalyOnyama Limba NEW
James ButtFranceStephen Shaw PROPOSAL
Adams MorascaGermanyElwin Sharvill UNQUALIFIED
Mayumi KolmetzItalyStephen Shaw PROPOSAL
David DarakjyBrazilElwin Sharvill QUALIFIED
Wickens NestleItalyAnna Fali UNQUALIFIED
Wickens NestleRussiaAsiya Javayant NEW
Francesco ShinkoFranceOnyama Limba UNQUALIFIED
Nicolas IturbideJapanIvan Magalhaes NEGOTIATION
Ashley DoeGermanyOnyama Limba PROPOSAL
Darci PoquetteBrazilAmy Elsner UNQUALIFIED
Smith GlickBrazilAmy Elsner QUALIFIED
Aika InouyeArgentinaXuxue Feng PROPOSAL
Ricardo GauchoSpainStephen Shaw PROPOSAL
Silvio SlusarskiCanadaAsiya Javayant PROPOSAL
Mujtaba NickaArgentinaOnyama Limba RENEWAL
Smith GlickUnited KingdomIvan Magalhaes NEW
Chavez BriddickArgentinaXuxue Feng UNQUALIFIED
Ashley DoeJapanIvan Magalhaes NEGOTIATION
Clifford RimArgentinaOnyama Limba NEGOTIATION
Izzy GarufiAustraliaIvan Magalhaes RENEWAL
Ashley DoeUnited KingdomAnna Fali QUALIFIED
Murillo MaletUnited KingdomIvan Magalhaes PROPOSAL
Chavez BriddickIndiaXuxue Feng QUALIFIED
Jones VocelkaSpainAnna Fali NEGOTIATION
Adams MorascaFranceStephen Shaw QUALIFIED
Aditya KuskoCanadaIvan Magalhaes UNQUALIFIED
Tony FollerSpainAmy Elsner NEW
Ricardo GauchoCanadaIoni Bowcher QUALIFIED
Greenwood BologniaSpainAmy Elsner NEGOTIATION
Silvio SlusarskiItalyXuxue Feng NEGOTIATION
Arvin AlbaresIndiaElwin Sharvill UNQUALIFIED
Kaitlin OstroskyArgentinaOnyama Limba NEGOTIATION
Silvio SlusarskiAustraliaBernardo Dominic PROPOSAL
Munro FerenczGermanyAnna Fali RENEWAL
Ashley DoeIndiaAnna Fali UNQUALIFIED
Frozen Columns
Name
Kaitlin Ostrosky
Rodrigues Campain
Maria Marrier
Morrow Ruta
Jeanfrancois Venere
Aditya Kusko
Deepesh Chui
Stacey Maclead
Faith Gillian
Silvio Slusarski
Arvin Albares
Mujtaba Nicka
Aruna Figeroa
Jennifer Amigon
Tony Foller
Wickens Nestle
Cody Saylors
Salvatore Stockham
Silvio Slusarski
Izzy Garufi
Chavez Briddick
Alejandro Perin
Julie Stenseth
Murillo Malet
Izzy Garufi
Clifford Rim
Izzy Garufi
Kadeem Flosi
Smith Glick
Tony Foller
Jeanfrancois Venere
Misaki Royster
Aika Inouye
Juan Wieser
Leja Caldarera
Kadeem Flosi
Tony Foller
Darci Poquette
Darci Poquette
Mujtaba Nicka
Alejandro Perin
Julie Stenseth
David Darakjy
Misaki Royster
Isabel Bowley
Misaki Royster
Johnson Sergi
Greenwood Bolognia
Aditya Kusko
Jones Vocelka
IdCountryDate
1000India2026-05-17
1001India2026-04-30
1002Italy2026-05-20
1003Argentina2026-04-28
1004India2026-05-14
1005Canada2026-04-29
1006Germany2026-04-29
1007Argentina2026-05-05
1008India2026-05-12
1009Canada2026-05-19
1010Germany2026-05-04
1011France2026-05-22
1012Canada2026-05-20
1013India2026-04-29
1014Spain2026-05-03
1015Brazil2026-04-28
1016Spain2026-04-26
1017United Kingdom2026-05-13
1018Spain2026-04-29
1019India2026-05-17
1020India2026-04-25
1021Spain2026-05-22
1022Germany2026-05-14
1023Italy2026-05-11
1024Japan2026-05-09
1025United Kingdom2026-05-11
1026Russia2026-05-15
1027Spain2026-05-14
1028Germany2026-04-26
1029India2026-05-17
1030Canada2026-05-04
1031France2026-05-01
1032India2026-05-06
1033United Kingdom2026-05-01
1034United Kingdom2026-05-20
1035Germany2026-05-03
1036United Kingdom2026-05-15
1037Spain2026-04-30
1038United Kingdom2026-05-15
1039Germany2026-05-22
1040Italy2026-05-08
1041France2026-05-23
1042India2026-05-14
1043Italy2026-05-02
1044Italy2026-05-19
1045Argentina2026-05-04
1046Italy2026-04-25
1047Italy2026-05-21
1048Brazil2026-05-16
1049Brazil2026-05-13

On-Demand Data

NameIdCountryDate
Aruna Figeroa1000Italy2026-05-05
Leja Caldarera1001Australia2026-05-07
Emily Whobrey1002Russia2026-05-05
Wickens Nestle1003Italy2026-05-05
Julie Stenseth1004India2026-05-12
Deepesh Chui1005Germany2026-05-21
Munro Ferencz1006Canada2026-05-07
Julie Stenseth1007Brazil2026-05-05
Claire Tollner1008Canada2026-05-23
David Darakjy1009Spain2026-05-02
Chavez Briddick1010Russia2026-05-01
Aruna Figeroa1011Argentina2026-05-02
Izzy Garufi1012United Kingdom2026-05-09
Smith Glick1013Brazil2026-05-07
Nicolas Iturbide1014Germany2026-05-16
Ricardo Gaucho1015Spain2026-05-04
Rodrigues Campain1016Russia2026-05-16
Silvio Slusarski1017Russia2026-05-23
Jeanfrancois Venere1018Russia2026-05-24
Kadeem Flosi1019Germany2026-05-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maisha RulapaughRussiaAmy Elsner RENEWAL
Tony FollerItalyAmy Elsner RENEWAL
Aruna FigeroaArgentinaXuxue Feng NEW
Jones VocelkaUnited KingdomAsiya Javayant PROPOSAL
Silvio SlusarskiJapanElwin Sharvill UNQUALIFIED
Stacey MacleadFranceXuxue Feng UNQUALIFIED
Jones VocelkaRussiaXuxue Feng QUALIFIED
Nicolas IturbideJapanIvan Magalhaes PROPOSAL
Murillo MaletCanadaXuxue Feng UNQUALIFIED
Juan WieserRussiaElwin Sharvill RENEWAL
Darci PoquetteRussiaAmy Elsner QUALIFIED
Antonio CaudyUnited KingdomAnna Fali NEGOTIATION
Jennifer AmigonIndiaIvan Magalhaes NEGOTIATION
Jennifer AmigonBrazilBernardo Dominic NEW
Ashley DoeRussiaAnna Fali NEW
Ivar PaprockiIndiaBernardo Dominic RENEWAL
Ricardo GauchoSpainAmy Elsner UNQUALIFIED
Faith GillianAustraliaOnyama Limba NEGOTIATION
Jennifer AmigonCanadaAnna Fali NEW
Mujtaba NickaIndiaBernardo Dominic PROPOSAL
Wickens NestleArgentinaAnna Fali RENEWAL
Misaki RoysterUnited KingdomAmy Elsner NEW
Jeanfrancois VenereArgentinaBernardo Dominic UNQUALIFIED
Rodrigues CampainUnited KingdomIoni Bowcher UNQUALIFIED
Jennifer AmigonRussiaIvan Magalhaes PROPOSAL
Adams MorascaSpainAmy Elsner QUALIFIED
Jefferson SchemmerGermanyXuxue Feng NEGOTIATION
Isabel BowleyBrazilIvan Magalhaes NEW
James ButtJapanIvan Magalhaes RENEWAL
Ricardo GauchoSpainElwin Sharvill NEW
Ashley DoeBrazilXuxue Feng UNQUALIFIED
Maria MarrierFranceIvan Magalhaes QUALIFIED
Chavez BriddickItalyIvan Magalhaes NEW
Emily WhobreyUnited KingdomBernardo Dominic UNQUALIFIED
Francesco ShinkoBrazilXuxue Feng UNQUALIFIED
Silvio SlusarskiSpainAmy Elsner UNQUALIFIED
Jefferson SchemmerAustraliaBernardo Dominic PROPOSAL
Francesco ShinkoSpainXuxue Feng PROPOSAL
Alejandro PerinFranceAmy Elsner QUALIFIED
Mayumi KolmetzItalyElwin Sharvill 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>