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
Jones VocelkaCanadaElwin Sharvill QUALIFIED
Ashley DoeBrazilElwin Sharvill NEW
Chavez BriddickArgentinaAmy Elsner NEW
Silvio SlusarskiItalyOnyama Limba UNQUALIFIED
Cody SaylorsBrazilBernardo Dominic RENEWAL
Kaitlin OstroskyItalyBernardo Dominic PROPOSAL
Alejandro PerinCanadaElwin Sharvill PROPOSAL
Cody SaylorsRussiaStephen Shaw PROPOSAL
Sinclair WaycottSpainAnna Fali NEW
Rodrigues CampainSpainOnyama Limba NEGOTIATION
Nicolas IturbideFranceAmy Elsner UNQUALIFIED
Jefferson SchemmerSpainAsiya Javayant RENEWAL
Antonio CaudyArgentinaAmy Elsner PROPOSAL
Ivar PaprockiItalyIoni Bowcher RENEWAL
Deepesh ChuiJapanIoni Bowcher PROPOSAL
Greenwood BologniaBrazilXuxue Feng QUALIFIED
Octavia MaletBrazilBernardo Dominic UNQUALIFIED
Arvin AlbaresItalyIvan Magalhaes PROPOSAL
Sinclair WaycottCanadaOnyama Limba NEW
Mujtaba NickaItalyAsiya Javayant PROPOSAL
Nicolas IturbideItalyStephen Shaw UNQUALIFIED
Darci PoquetteFranceAmy Elsner RENEWAL
Aruna FigeroaSpainAnna Fali NEW
James ButtAustraliaXuxue Feng NEW
Emily WhobreyRussiaBernardo Dominic QUALIFIED
Emily WhobreyRussiaIoni Bowcher PROPOSAL
Jefferson SchemmerIndiaIoni Bowcher NEGOTIATION
Jennifer AmigonBrazilAsiya Javayant PROPOSAL
Nicolas IturbideUnited KingdomElwin Sharvill NEW
Alejandro PerinIndiaOnyama Limba NEGOTIATION
Aika InouyeRussiaAmy Elsner NEGOTIATION
Ricardo GauchoIndiaIoni Bowcher RENEWAL
Arvin AlbaresIndiaStephen Shaw RENEWAL
Smith GlickSpainBernardo Dominic RENEWAL
Kadeem FlosiFranceBernardo Dominic RENEWAL
Juan WieserRussiaAmy Elsner RENEWAL
Deepesh ChuiUnited KingdomElwin Sharvill QUALIFIED
Cody SaylorsItalyAmy Elsner PROPOSAL
Wickens NestleArgentinaStephen Shaw QUALIFIED
Sinclair WaycottAustraliaAmy Elsner RENEWAL
Leon OldroydArgentinaAmy Elsner NEGOTIATION
Greenwood BologniaArgentinaIoni Bowcher PROPOSAL
Aruna FigeroaIndiaElwin Sharvill PROPOSAL
Ivar PaprockiJapanXuxue Feng QUALIFIED
Nicolas IturbideSpainXuxue Feng QUALIFIED
James ButtFranceIvan Magalhaes NEGOTIATION
Claire TollnerBrazilElwin Sharvill NEGOTIATION
Maria MarrierFranceAmy Elsner QUALIFIED
Adams MorascaBrazilAmy Elsner NEW
Francesco ShinkoAustraliaIvan Magalhaes NEW
Horizontal
NameCountryRepresentativeStatus
Emily WhobreyUnited KingdomAsiya Javayant QUALIFIED
Chavez BriddickFranceStephen Shaw NEW
Isabel BowleyGermanyStephen Shaw RENEWAL
Salvatore StockhamCanadaStephen Shaw NEW
Darci PoquetteSpainAnna Fali RENEWAL
Sinclair WaycottGermanyOnyama Limba UNQUALIFIED
Emily WhobreySpainXuxue Feng PROPOSAL
Silvio SlusarskiBrazilIoni Bowcher NEGOTIATION
Maisha RulapaughItalyElwin Sharvill RENEWAL
Jones VocelkaAustraliaElwin Sharvill NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000James ButtRussia2026-06-17King, Christopher A Esq RENEWAL44Asiya Javayant
1001Francesco ShinkoJapan2026-05-20Chemel, James L Cpa NEGOTIATION37Bernardo Dominic
1002Wickens NestleIndia2026-05-24Benton, John B Jr PROPOSAL84Ivan Magalhaes
1003Leja CaldareraCanada2026-05-23Rousseaux, Michael Esq NEW53Elwin Sharvill
1004Aika InouyeItaly2026-05-26Rousseaux, Michael Esq QUALIFIED0Bernardo Dominic
1005Tony FollerAustralia2026-05-29Commercial Press UNQUALIFIED60Elwin Sharvill
1006Aika InouyeUnited Kingdom2026-06-14Printing Dimensions QUALIFIED66Onyama Limba
1007Wickens NestleGermany2026-06-02Chemel, James L Cpa QUALIFIED14Anna Fali
1008Greenwood BologniaArgentina2026-06-13Chapman, Ross E Esq QUALIFIED72Amy Elsner
1009Ashley DoeGermany2026-06-05Feiner Bros UNQUALIFIED92Amy Elsner
1010Wickens NestleSpain2026-06-05Feltz Printing Service PROPOSAL63Asiya Javayant
1011Ricardo GauchoBrazil2026-06-09Chanay, Jeffrey A Esq UNQUALIFIED71Onyama Limba
1012Kadeem FlosiCanada2026-05-30Feiner Bros PROPOSAL56Onyama Limba
1013Izzy GarufiCanada2026-06-03Chanay, Jeffrey A Esq NEGOTIATION50Ioni Bowcher
1014Arvin AlbaresArgentina2026-05-19Buckley Miller Wright QUALIFIED20Elwin Sharvill
1015Ashley DoeBrazil2026-05-19Truhlar And Truhlar Attys QUALIFIED33Amy Elsner
1016Jefferson SchemmerJapan2026-06-05Buckley Miller Wright UNQUALIFIED12Xuxue Feng
1017Greenwood BologniaJapan2026-06-03Printing Dimensions QUALIFIED90Asiya Javayant
1018Kadeem FlosiIndia2026-05-29Feltz Printing Service RENEWAL9Amy Elsner
1019Antonio CaudyJapan2026-05-28Truhlar And Truhlar Attys NEW89Ioni Bowcher
1020Cody SaylorsUnited Kingdom2026-06-06Chemel, James L Cpa NEGOTIATION24Elwin Sharvill
1021Francesco ShinkoAustralia2026-05-28Buckley Miller Wright NEW42Onyama Limba
1022David DarakjyIndia2026-06-08Feiner Bros NEGOTIATION23Onyama Limba
1023Johnson SergiArgentina2026-06-10Commercial Press UNQUALIFIED86Anna Fali
1024David DarakjyIndia2026-05-20Benton, John B Jr NEW65Anna Fali
1025Aruna FigeroaAustralia2026-05-24Feiner Bros QUALIFIED10Amy Elsner
1026Kaitlin OstroskyFrance2026-05-28Truhlar And Truhlar Attys PROPOSAL93Asiya Javayant
1027Munro FerenczSpain2026-05-25Morlong Associates UNQUALIFIED67Xuxue Feng
1028Sinclair WaycottArgentina2026-06-14Rangoni Of Florence NEGOTIATION4Elwin Sharvill
1029Antonio CaudyJapan2026-06-06Chemel, James L Cpa NEW50Xuxue Feng
1030Jennifer AmigonJapan2026-05-25Rousseaux, Michael Esq NEW32Bernardo Dominic
1031James ButtItaly2026-05-20Dorl, James J Esq NEGOTIATION60Onyama Limba
1032Leon OldroydSpain2026-06-09Feiner Bros UNQUALIFIED86Anna Fali
1033Jennifer AmigonCanada2026-05-31Commercial Press NEGOTIATION28Stephen Shaw
1034Jefferson SchemmerSpain2026-05-29Buckley Miller Wright QUALIFIED78Onyama Limba
1035Octavia MaletJapan2026-05-25Chanay, Jeffrey A Esq UNQUALIFIED10Asiya Javayant
1036Morrow RutaBrazil2026-06-07Rousseaux, Michael Esq NEW74Asiya Javayant
1037Jones VocelkaUnited Kingdom2026-05-23Chapman, Ross E Esq QUALIFIED49Xuxue Feng
1038Jones VocelkaAustralia2026-06-15Feltz Printing Service NEW92Bernardo Dominic
1039Emily WhobreySpain2026-06-05King, Christopher A Esq NEGOTIATION38Amy Elsner
1040James ButtJapan2026-05-29Chanay, Jeffrey A Esq PROPOSAL82Anna Fali
1041Costa DilliardBrazil2026-06-02Benton, John B Jr UNQUALIFIED41Stephen Shaw
1042Juan WieserFrance2026-05-20Feltz Printing Service QUALIFIED86Amy Elsner
1043David DarakjyItaly2026-05-22Benton, John B Jr PROPOSAL16Ivan Magalhaes
1044Mayumi KolmetzArgentina2026-06-02Truhlar And Truhlar Attys NEGOTIATION64Onyama Limba
1045Kaitlin OstroskyFrance2026-05-26Rangoni Of Florence QUALIFIED51Ioni Bowcher
1046Cody SaylorsIndia2026-05-30Rousseaux, Michael Esq UNQUALIFIED11Xuxue Feng
1047Salvatore StockhamAustralia2026-06-07Morlong Associates PROPOSAL80Xuxue Feng
1048Antonio CaudyUnited Kingdom2026-06-10Chanay, Jeffrey A Esq NEW95Amy Elsner
1049Octavia MaletItaly2026-06-12Commercial Press NEW35Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Antonio CaudyIndiaAsiya Javayant NEGOTIATION
Costa DilliardUnited KingdomAnna Fali RENEWAL
Aruna FigeroaIndiaXuxue Feng NEGOTIATION
Ivar PaprockiSpainAsiya Javayant NEW
Aditya KuskoIndiaAnna Fali PROPOSAL
Tony FollerRussiaBernardo Dominic QUALIFIED
Morrow RutaCanadaIoni Bowcher NEGOTIATION
Juan WieserCanadaStephen Shaw PROPOSAL
Silvio SlusarskiBrazilIoni Bowcher UNQUALIFIED
Wickens NestleRussiaBernardo Dominic RENEWAL
Maria MarrierGermanyIoni Bowcher QUALIFIED
Ricardo GauchoJapanStephen Shaw UNQUALIFIED
Claire TollnerBrazilXuxue Feng QUALIFIED
Ashley DoeGermanyAmy Elsner NEW
Nicolas IturbideCanadaXuxue Feng UNQUALIFIED
Juan WieserGermanyAsiya Javayant NEW
Faith GillianRussiaAnna Fali PROPOSAL
Leon OldroydCanadaAmy Elsner PROPOSAL
Emily WhobreyRussiaOnyama Limba QUALIFIED
Mayumi KolmetzSpainAnna Fali QUALIFIED
Antonio CaudyCanadaOnyama Limba RENEWAL
Salvatore StockhamItalyAnna Fali PROPOSAL
Claire TollnerRussiaXuxue Feng RENEWAL
Jeanfrancois VenereFranceIoni Bowcher NEGOTIATION
Claire TollnerArgentinaOnyama Limba QUALIFIED
Sinclair WaycottUnited KingdomIoni Bowcher NEGOTIATION
Isabel BowleyGermanyAnna Fali QUALIFIED
Rodrigues CampainBrazilAmy Elsner QUALIFIED
Mujtaba NickaGermanyAsiya Javayant NEGOTIATION
Adams MorascaItalyXuxue Feng QUALIFIED
Tony FollerItalyIvan Magalhaes QUALIFIED
Murillo MaletRussiaIvan Magalhaes NEW
Leon OldroydItalyAsiya Javayant QUALIFIED
Jefferson SchemmerCanadaXuxue Feng RENEWAL
Mayumi KolmetzIndiaAsiya Javayant QUALIFIED
Emily WhobreyIndiaBernardo Dominic NEW
Clifford RimRussiaIoni Bowcher RENEWAL
Alejandro PerinGermanyXuxue Feng NEW
Wickens NestleCanadaOnyama Limba RENEWAL
Leon OldroydCanadaStephen Shaw NEW
Julie StensethArgentinaElwin Sharvill QUALIFIED
Julie StensethBrazilAmy Elsner NEW
Nicolas IturbideSpainOnyama Limba PROPOSAL
Alejandro PerinGermanyAsiya Javayant PROPOSAL
Claire TollnerJapanOnyama Limba NEGOTIATION
Arvin AlbaresJapanAsiya Javayant RENEWAL
Leon OldroydSpainOnyama Limba PROPOSAL
Tony FollerUnited KingdomIoni Bowcher NEW
Munro FerenczIndiaAsiya Javayant PROPOSAL
David DarakjyUnited KingdomAmy Elsner QUALIFIED
Frozen Columns
Name
Darci Poquette
Jones Vocelka
Leja Caldarera
Maria Marrier
Sinclair Waycott
Jeanfrancois Venere
Julie Stenseth
Kadeem Flosi
Emily Whobrey
Leon Oldroyd
Arvin Albares
Ricardo Gaucho
Mayumi Kolmetz
David Darakjy
Maria Marrier
Deepesh Chui
Jones Vocelka
Isabel Bowley
Leon Oldroyd
Arvin Albares
Kaitlin Ostrosky
Greenwood Bolognia
Chavez Briddick
Mujtaba Nicka
Maria Marrier
Arvin Albares
Kadeem Flosi
Sinclair Waycott
Morrow Ruta
Ivar Paprocki
Mujtaba Nicka
Emily Whobrey
Misaki Royster
Misaki Royster
Wickens Nestle
Darci Poquette
Chavez Briddick
Murillo Malet
Smith Glick
Deepesh Chui
Jefferson Schemmer
Jones Vocelka
Aditya Kusko
Tony Foller
Johnson Sergi
Aditya Kusko
Misaki Royster
Clifford Rim
Leon Oldroyd
Kadeem Flosi
IdCountryDate
1000Argentina2026-06-13
1001Argentina2026-06-09
1002France2026-05-30
1003Argentina2026-05-21
1004Canada2026-05-24
1005Argentina2026-05-21
1006Germany2026-05-22
1007Australia2026-06-11
1008Germany2026-05-21
1009Germany2026-06-01
1010Canada2026-06-05
1011Japan2026-05-19
1012Brazil2026-06-06
1013Italy2026-06-04
1014Argentina2026-05-31
1015United Kingdom2026-06-04
1016India2026-05-23
1017Japan2026-05-29
1018Spain2026-06-17
1019Australia2026-06-03
1020France2026-05-30
1021Argentina2026-06-17
1022Canada2026-06-05
1023Japan2026-05-30
1024Japan2026-06-14
1025Brazil2026-06-09
1026Germany2026-06-16
1027Japan2026-06-13
1028Spain2026-06-14
1029Italy2026-06-15
1030France2026-05-25
1031Argentina2026-06-05
1032United Kingdom2026-05-23
1033Australia2026-06-06
1034France2026-06-03
1035Spain2026-06-17
1036France2026-05-23
1037India2026-06-09
1038Spain2026-06-01
1039Australia2026-05-27
1040Russia2026-06-01
1041Japan2026-05-19
1042Germany2026-06-13
1043France2026-06-16
1044France2026-06-09
1045Spain2026-05-20
1046Russia2026-05-30
1047France2026-06-11
1048Russia2026-06-17
1049France2026-06-13

On-Demand Data

NameIdCountryDate
Mujtaba Nicka1000Canada2026-05-28
Faith Gillian1001Germany2026-06-15
Aruna Figeroa1002Germany2026-06-07
Morrow Ruta1003France2026-06-16
Smith Glick1004Spain2026-06-08
Wickens Nestle1005Australia2026-05-22
Jeanfrancois Venere1006Australia2026-05-20
Clifford Rim1007United Kingdom2026-06-07
Cody Saylors1008France2026-06-11
Stacey Maclead1009Brazil2026-06-01
Maisha Rulapaugh1010Spain2026-06-10
Aruna Figeroa1011United Kingdom2026-06-17
Julie Stenseth1012Russia2026-05-19
Kaitlin Ostrosky1013Japan2026-06-15
Ricardo Gaucho1014Russia2026-06-10
Sinclair Waycott1015France2026-05-24
Claire Tollner1016India2026-06-01
Jeanfrancois Venere1017Argentina2026-05-24
Kaitlin Ostrosky1018Australia2026-05-25
Claire Tollner1019United Kingdom2026-06-03
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Antonio CaudyRussiaAnna Fali NEGOTIATION
Salvatore StockhamBrazilAnna Fali RENEWAL
Darci PoquetteIndiaAsiya Javayant UNQUALIFIED
Chavez BriddickRussiaOnyama Limba NEW
Jefferson SchemmerItalyIvan Magalhaes PROPOSAL
Ashley DoeItalyIvan Magalhaes NEGOTIATION
Wickens NestleRussiaAnna Fali RENEWAL
Ivar PaprockiBrazilAsiya Javayant UNQUALIFIED
Izzy GarufiGermanyIvan Magalhaes UNQUALIFIED
Izzy GarufiRussiaXuxue Feng UNQUALIFIED
Greenwood BologniaArgentinaAnna Fali RENEWAL
Izzy GarufiSpainBernardo Dominic QUALIFIED
Cody SaylorsItalyIoni Bowcher UNQUALIFIED
Rodrigues CampainSpainAnna Fali NEGOTIATION
Aditya KuskoRussiaAnna Fali QUALIFIED
Izzy GarufiSpainAnna Fali QUALIFIED
Emily WhobreySpainAnna Fali UNQUALIFIED
Juan WieserItalyAnna Fali QUALIFIED
Smith GlickIndiaElwin Sharvill NEGOTIATION
Kadeem FlosiCanadaStephen Shaw NEW
Wickens NestleFranceXuxue Feng UNQUALIFIED
Maisha RulapaughGermanyAsiya Javayant UNQUALIFIED
Costa DilliardFranceOnyama Limba PROPOSAL
Antonio CaudySpainXuxue Feng UNQUALIFIED
Jefferson SchemmerUnited KingdomXuxue Feng RENEWAL
Jeanfrancois VenereCanadaAsiya Javayant NEW
Francesco ShinkoIndiaBernardo Dominic NEGOTIATION
Wickens NestleUnited KingdomAmy Elsner RENEWAL
Mujtaba NickaGermanyOnyama Limba QUALIFIED
Stacey MacleadBrazilAnna Fali UNQUALIFIED
Johnson SergiFranceIoni Bowcher NEGOTIATION
Stacey MacleadUnited KingdomElwin Sharvill PROPOSAL
Ivar PaprockiGermanyElwin Sharvill QUALIFIED
Costa DilliardAustraliaXuxue Feng PROPOSAL
Silvio SlusarskiArgentinaAnna Fali NEW
Julie StensethArgentinaAsiya Javayant RENEWAL
Octavia MaletGermanyAsiya Javayant RENEWAL
Tony FollerUnited KingdomBernardo Dominic NEGOTIATION
Cody SaylorsRussiaOnyama Limba PROPOSAL
Octavia MaletAustraliaStephen Shaw RENEWAL

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