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
Wickens NestleCanadaIvan Magalhaes UNQUALIFIED
Ricardo GauchoRussiaOnyama Limba PROPOSAL
Tony FollerRussiaElwin Sharvill QUALIFIED
Aika InouyeRussiaOnyama Limba NEW
Greenwood BologniaIndiaAmy Elsner NEGOTIATION
Jeanfrancois VenereArgentinaAsiya Javayant PROPOSAL
Silvio SlusarskiJapanAsiya Javayant UNQUALIFIED
Kadeem FlosiUnited KingdomIvan Magalhaes PROPOSAL
Claire TollnerGermanyElwin Sharvill NEW
Julie StensethSpainAsiya Javayant RENEWAL
Ashley DoeFranceStephen Shaw RENEWAL
Francesco ShinkoFranceOnyama Limba PROPOSAL
Jones VocelkaRussiaAnna Fali RENEWAL
Aditya KuskoAustraliaStephen Shaw NEW
Greenwood BologniaItalyElwin Sharvill UNQUALIFIED
Maria MarrierUnited KingdomElwin Sharvill QUALIFIED
Emily WhobreyCanadaIoni Bowcher UNQUALIFIED
Mayumi KolmetzIndiaIvan Magalhaes PROPOSAL
Ricardo GauchoItalyBernardo Dominic QUALIFIED
David DarakjySpainOnyama Limba UNQUALIFIED
Jefferson SchemmerBrazilXuxue Feng UNQUALIFIED
Salvatore StockhamSpainIvan Magalhaes NEW
Aika InouyeRussiaStephen Shaw RENEWAL
Cody SaylorsBrazilIoni Bowcher RENEWAL
Jones VocelkaJapanIvan Magalhaes UNQUALIFIED
Juan WieserCanadaOnyama Limba RENEWAL
Rodrigues CampainAustraliaXuxue Feng PROPOSAL
Costa DilliardGermanyStephen Shaw PROPOSAL
Costa DilliardUnited KingdomBernardo Dominic QUALIFIED
Deepesh ChuiUnited KingdomIoni Bowcher UNQUALIFIED
David DarakjyFranceBernardo Dominic PROPOSAL
Mayumi KolmetzIndiaAnna Fali UNQUALIFIED
Morrow RutaCanadaAmy Elsner PROPOSAL
Jones VocelkaArgentinaAmy Elsner UNQUALIFIED
Faith GillianItalyAsiya Javayant PROPOSAL
Ivar PaprockiJapanBernardo Dominic PROPOSAL
Kadeem FlosiBrazilStephen Shaw NEGOTIATION
Emily WhobreyJapanAmy Elsner PROPOSAL
Tony FollerFranceIoni Bowcher QUALIFIED
Julie StensethSpainStephen Shaw QUALIFIED
David DarakjyRussiaAsiya Javayant NEGOTIATION
Morrow RutaSpainIoni Bowcher NEGOTIATION
Maisha RulapaughBrazilXuxue Feng RENEWAL
Aruna FigeroaItalyOnyama Limba RENEWAL
Izzy GarufiGermanyXuxue Feng UNQUALIFIED
Deepesh ChuiUnited KingdomIoni Bowcher PROPOSAL
Alejandro PerinRussiaAnna Fali PROPOSAL
Ashley DoeAustraliaXuxue Feng NEGOTIATION
Maisha RulapaughIndiaElwin Sharvill NEW
Leon OldroydFranceAmy Elsner RENEWAL
Horizontal
NameCountryRepresentativeStatus
Munro FerenczFranceAnna Fali QUALIFIED
Mayumi KolmetzArgentinaBernardo Dominic PROPOSAL
Mayumi KolmetzFranceIvan Magalhaes UNQUALIFIED
Mujtaba NickaIndiaAnna Fali NEW
Maria MarrierAustraliaIoni Bowcher NEGOTIATION
Leja CaldareraUnited KingdomXuxue Feng RENEWAL
Jefferson SchemmerUnited KingdomAnna Fali RENEWAL
Rodrigues CampainIndiaAnna Fali NEGOTIATION
Ashley DoeBrazilXuxue Feng RENEWAL
Darci PoquetteUnited KingdomBernardo Dominic NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maisha RulapaughSpain2026-06-07Rangoni Of Florence RENEWAL69Bernardo Dominic
1001Francesco ShinkoFrance2026-05-19Truhlar And Truhlar Attys PROPOSAL30Ivan Magalhaes
1002Wickens NestleIndia2026-06-01Feltz Printing Service UNQUALIFIED15Anna Fali
1003Arvin AlbaresAustralia2026-06-08Feltz Printing Service NEW32Anna Fali
1004Faith GillianItaly2026-06-12Truhlar And Truhlar Attys QUALIFIED86Onyama Limba
1005Ivar PaprockiJapan2026-05-15Printing Dimensions QUALIFIED88Onyama Limba
1006Maria MarrierJapan2026-06-11Buckley Miller Wright PROPOSAL70Onyama Limba
1007Adams MorascaRussia2026-06-07Benton, John B Jr NEW83Onyama Limba
1008Faith GillianIndia2026-05-30Commercial Press PROPOSAL25Asiya Javayant
1009Ivar PaprockiJapan2026-05-23Chemel, James L Cpa NEGOTIATION6Ioni Bowcher
1010Smith GlickUnited Kingdom2026-05-22Printing Dimensions UNQUALIFIED64Onyama Limba
1011Darci PoquetteSpain2026-05-23Printing Dimensions RENEWAL54Stephen Shaw
1012Stacey MacleadItaly2026-05-27Chemel, James L Cpa RENEWAL32Xuxue Feng
1013Rodrigues CampainFrance2026-05-26Chanay, Jeffrey A Esq RENEWAL16Amy Elsner
1014Isabel BowleyBrazil2026-06-03Chanay, Jeffrey A Esq NEGOTIATION83Ivan Magalhaes
1015Izzy GarufiItaly2026-05-22King, Christopher A Esq PROPOSAL66Elwin Sharvill
1016Jefferson SchemmerArgentina2026-06-09Feiner Bros UNQUALIFIED31Elwin Sharvill
1017Leja CaldareraItaly2026-06-07Benton, John B Jr QUALIFIED69Bernardo Dominic
1018Aruna FigeroaItaly2026-05-14Buckley Miller Wright RENEWAL47Ivan Magalhaes
1019Nicolas IturbideUnited Kingdom2026-05-18Dorl, James J Esq NEGOTIATION38Elwin Sharvill
1020Munro FerenczGermany2026-05-18Feltz Printing Service PROPOSAL47Bernardo Dominic
1021Ivar PaprockiJapan2026-05-17Dorl, James J Esq QUALIFIED29Stephen Shaw
1022Johnson SergiArgentina2026-06-02Chanay, Jeffrey A Esq PROPOSAL42Xuxue Feng
1023Emily WhobreyJapan2026-05-19Rousseaux, Michael Esq UNQUALIFIED94Ioni Bowcher
1024Cody SaylorsArgentina2026-06-02Printing Dimensions PROPOSAL41Ioni Bowcher
1025Morrow RutaAustralia2026-05-31Printing Dimensions QUALIFIED45Anna Fali
1026Smith GlickIndia2026-06-08Truhlar And Truhlar Attys RENEWAL33Ivan Magalhaes
1027Mujtaba NickaCanada2026-06-11Rousseaux, Michael Esq NEW71Ioni Bowcher
1028Deepesh ChuiRussia2026-05-21Rangoni Of Florence RENEWAL90Stephen Shaw
1029Leja CaldareraItaly2026-05-27Benton, John B Jr NEW91Xuxue Feng
1030Arvin AlbaresSpain2026-05-27Rousseaux, Michael Esq UNQUALIFIED21Amy Elsner
1031Leja CaldareraGermany2026-05-16Printing Dimensions NEW72Anna Fali
1032Aruna FigeroaArgentina2026-05-25Chanay, Jeffrey A Esq QUALIFIED60Onyama Limba
1033Morrow RutaItaly2026-05-31Buckley Miller Wright PROPOSAL69Ivan Magalhaes
1034Greenwood BologniaSpain2026-05-27King, Christopher A Esq PROPOSAL40Onyama Limba
1035Emily WhobreyIndia2026-05-24Rousseaux, Michael Esq UNQUALIFIED89Bernardo Dominic
1036Johnson SergiCanada2026-05-29Morlong Associates NEGOTIATION71Bernardo Dominic
1037Ricardo GauchoFrance2026-05-19Printing Dimensions RENEWAL44Elwin Sharvill
1038Maisha RulapaughSpain2026-06-09Rousseaux, Michael Esq UNQUALIFIED61Xuxue Feng
1039Sinclair WaycottItaly2026-05-30Chapman, Ross E Esq PROPOSAL28Bernardo Dominic
1040Mayumi KolmetzGermany2026-06-07Buckley Miller Wright RENEWAL37Elwin Sharvill
1041Wickens NestleGermany2026-06-03King, Christopher A Esq PROPOSAL99Xuxue Feng
1042Greenwood BologniaFrance2026-05-26Rangoni Of Florence RENEWAL68Asiya Javayant
1043Francesco ShinkoIndia2026-05-30Commercial Press QUALIFIED37Xuxue Feng
1044Silvio SlusarskiCanada2026-05-21Chemel, James L Cpa PROPOSAL79Asiya Javayant
1045Tony FollerUnited Kingdom2026-06-08Buckley Miller Wright NEW90Amy Elsner
1046Octavia MaletIndia2026-05-29Morlong Associates RENEWAL93Stephen Shaw
1047Jefferson SchemmerAustralia2026-06-03Feiner Bros NEW19Xuxue Feng
1048Mujtaba NickaAustralia2026-06-03Buckley Miller Wright QUALIFIED39Ivan Magalhaes
1049Jennifer AmigonAustralia2026-06-11Benton, John B Jr NEGOTIATION68Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Stacey MacleadFranceXuxue Feng UNQUALIFIED
Maria MarrierUnited KingdomElwin Sharvill UNQUALIFIED
Smith GlickUnited KingdomBernardo Dominic UNQUALIFIED
Claire TollnerItalyStephen Shaw NEW
Aika InouyeArgentinaStephen Shaw PROPOSAL
Ricardo GauchoAustraliaOnyama Limba PROPOSAL
Jeanfrancois VenereAustraliaIoni Bowcher PROPOSAL
Antonio CaudyIndiaStephen Shaw NEGOTIATION
Clifford RimUnited KingdomElwin Sharvill PROPOSAL
Julie StensethCanadaStephen Shaw UNQUALIFIED
Deepesh ChuiCanadaXuxue Feng PROPOSAL
Adams MorascaFranceStephen Shaw UNQUALIFIED
Johnson SergiJapanIoni Bowcher NEW
Aruna FigeroaUnited KingdomStephen Shaw UNQUALIFIED
Deepesh ChuiItalyAsiya Javayant NEW
Johnson SergiJapanAsiya Javayant NEGOTIATION
Tony FollerGermanyAnna Fali UNQUALIFIED
Jefferson SchemmerFranceStephen Shaw NEGOTIATION
Mayumi KolmetzRussiaStephen Shaw PROPOSAL
Darci PoquetteItalyOnyama Limba NEGOTIATION
Silvio SlusarskiFranceAsiya Javayant RENEWAL
Adams MorascaArgentinaIvan Magalhaes NEW
Jones VocelkaItalyBernardo Dominic NEGOTIATION
Smith GlickAustraliaIoni Bowcher NEGOTIATION
Jennifer AmigonBrazilIvan Magalhaes QUALIFIED
Morrow RutaIndiaAnna Fali UNQUALIFIED
Misaki RoysterUnited KingdomIoni Bowcher RENEWAL
Johnson SergiItalyIvan Magalhaes PROPOSAL
Izzy GarufiRussiaElwin Sharvill NEW
Jefferson SchemmerUnited KingdomAsiya Javayant NEGOTIATION
David DarakjyFranceOnyama Limba NEW
Costa DilliardIndiaStephen Shaw NEGOTIATION
Juan WieserRussiaBernardo Dominic PROPOSAL
Alejandro PerinCanadaIvan Magalhaes NEGOTIATION
Chavez BriddickIndiaAmy Elsner RENEWAL
Izzy GarufiFranceIoni Bowcher QUALIFIED
Kadeem FlosiJapanElwin Sharvill PROPOSAL
Izzy GarufiRussiaIvan Magalhaes NEGOTIATION
Aruna FigeroaCanadaIvan Magalhaes NEW
Morrow RutaCanadaOnyama Limba UNQUALIFIED
Mujtaba NickaGermanyOnyama Limba NEGOTIATION
Munro FerenczArgentinaXuxue Feng UNQUALIFIED
Isabel BowleyGermanyAsiya Javayant QUALIFIED
Arvin AlbaresSpainIoni Bowcher QUALIFIED
Aditya KuskoArgentinaElwin Sharvill NEGOTIATION
Munro FerenczRussiaElwin Sharvill RENEWAL
Rodrigues CampainBrazilIoni Bowcher QUALIFIED
Murillo MaletGermanyAsiya Javayant RENEWAL
Rodrigues CampainSpainIvan Magalhaes NEW
Jeanfrancois VenereJapanAnna Fali NEW
Frozen Columns
Name
Claire Tollner
Silvio Slusarski
Wickens Nestle
Greenwood Bolognia
Cody Saylors
Kadeem Flosi
Mayumi Kolmetz
Silvio Slusarski
Silvio Slusarski
Aruna Figeroa
Antonio Caudy
Wickens Nestle
Wickens Nestle
Greenwood Bolognia
Morrow Ruta
Leon Oldroyd
Wickens Nestle
Mujtaba Nicka
Misaki Royster
Nicolas Iturbide
Adams Morasca
Morrow Ruta
Francesco Shinko
Rodrigues Campain
Munro Ferencz
Nicolas Iturbide
Leja Caldarera
Adams Morasca
Alejandro Perin
Jones Vocelka
Nicolas Iturbide
Leja Caldarera
Octavia Malet
Misaki Royster
Juan Wieser
Kadeem Flosi
Chavez Briddick
Chavez Briddick
Jefferson Schemmer
Morrow Ruta
Kadeem Flosi
Wickens Nestle
Ivar Paprocki
Jeanfrancois Venere
Cody Saylors
Munro Ferencz
Jennifer Amigon
Nicolas Iturbide
Mayumi Kolmetz
Salvatore Stockham
IdCountryDate
1000Italy2026-05-24
1001France2026-06-11
1002United Kingdom2026-05-17
1003France2026-06-03
1004France2026-05-30
1005Australia2026-05-30
1006Australia2026-05-20
1007United Kingdom2026-05-31
1008India2026-06-06
1009Germany2026-06-02
1010Germany2026-05-15
1011Canada2026-05-17
1012Spain2026-06-08
1013Japan2026-06-12
1014Italy2026-06-01
1015Australia2026-05-27
1016Italy2026-05-23
1017France2026-05-25
1018Spain2026-05-16
1019Canada2026-06-12
1020Australia2026-05-24
1021Spain2026-06-12
1022Germany2026-05-22
1023Australia2026-05-15
1024Australia2026-06-08
1025Japan2026-06-10
1026Germany2026-05-18
1027Spain2026-06-05
1028United Kingdom2026-06-11
1029United Kingdom2026-05-20
1030Brazil2026-06-10
1031India2026-05-27
1032Brazil2026-05-20
1033Argentina2026-06-09
1034India2026-05-21
1035Brazil2026-05-15
1036Russia2026-06-12
1037France2026-06-08
1038Japan2026-05-20
1039Spain2026-06-12
1040Spain2026-05-26
1041Spain2026-05-20
1042Australia2026-06-10
1043Germany2026-05-18
1044United Kingdom2026-05-27
1045Argentina2026-05-26
1046Germany2026-06-02
1047Canada2026-05-21
1048France2026-05-17
1049Australia2026-05-15

On-Demand Data

NameIdCountryDate
Rodrigues Campain1000Brazil2026-06-02
Juan Wieser1001Argentina2026-06-05
Kadeem Flosi1002France2026-06-04
Cody Saylors1003Canada2026-05-16
Nicolas Iturbide1004Italy2026-05-28
Kadeem Flosi1005Japan2026-05-17
Murillo Malet1006Germany2026-06-08
Darci Poquette1007Italy2026-06-08
Francesco Shinko1008Spain2026-06-11
Johnson Sergi1009Argentina2026-05-20
Antonio Caudy1010United Kingdom2026-06-09
Claire Tollner1011Brazil2026-06-06
Aditya Kusko1012Italy2026-05-26
Murillo Malet1013United Kingdom2026-06-08
Jennifer Amigon1014Russia2026-05-18
Jones Vocelka1015United Kingdom2026-05-24
Emily Whobrey1016Italy2026-06-12
Aditya Kusko1017United Kingdom2026-06-06
Alejandro Perin1018Australia2026-05-27
Antonio Caudy1019Italy2026-05-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Costa DilliardUnited KingdomAmy Elsner PROPOSAL
Smith GlickCanadaOnyama Limba UNQUALIFIED
Julie StensethItalyElwin Sharvill RENEWAL
Morrow RutaUnited KingdomXuxue Feng NEW
Chavez BriddickGermanyElwin Sharvill QUALIFIED
Jefferson SchemmerFranceAmy Elsner RENEWAL
Maisha RulapaughSpainAsiya Javayant UNQUALIFIED
Sinclair WaycottItalyBernardo Dominic NEGOTIATION
Jefferson SchemmerUnited KingdomOnyama Limba RENEWAL
Darci PoquetteBrazilOnyama Limba UNQUALIFIED
Cody SaylorsJapanXuxue Feng PROPOSAL
David DarakjyGermanyOnyama Limba QUALIFIED
Leon OldroydAustraliaAnna Fali NEW
Julie StensethBrazilOnyama Limba RENEWAL
Cody SaylorsUnited KingdomAnna Fali PROPOSAL
Mujtaba NickaBrazilStephen Shaw PROPOSAL
Emily WhobreyArgentinaStephen Shaw PROPOSAL
Sinclair WaycottRussiaAsiya Javayant QUALIFIED
Silvio SlusarskiJapanAnna Fali QUALIFIED
Adams MorascaArgentinaAsiya Javayant RENEWAL
Wickens NestleJapanOnyama Limba UNQUALIFIED
Clifford RimBrazilAnna Fali UNQUALIFIED
Kaitlin OstroskyBrazilBernardo Dominic RENEWAL
Misaki RoysterItalyAmy Elsner NEW
Leon OldroydItalyIvan Magalhaes PROPOSAL
Jennifer AmigonFranceOnyama Limba UNQUALIFIED
Mujtaba NickaJapanStephen Shaw NEW
Julie StensethFranceXuxue Feng RENEWAL
Kaitlin OstroskyUnited KingdomElwin Sharvill RENEWAL
Wickens NestleArgentinaIvan Magalhaes NEGOTIATION
Chavez BriddickFranceOnyama Limba QUALIFIED
Adams MorascaFranceStephen Shaw UNQUALIFIED
David DarakjyAustraliaBernardo Dominic UNQUALIFIED
Maria MarrierItalyOnyama Limba UNQUALIFIED
Aditya KuskoFranceXuxue Feng NEW
Jeanfrancois VenereGermanyAsiya Javayant RENEWAL
Stacey MacleadJapanXuxue Feng QUALIFIED
Johnson SergiJapanAmy Elsner RENEWAL
Maisha RulapaughGermanyOnyama Limba NEW
Kadeem FlosiAustraliaAnna Fali 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>