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
James ButtUnited KingdomXuxue Feng PROPOSAL
Mayumi KolmetzIndiaStephen Shaw NEW
Clifford RimJapanStephen Shaw UNQUALIFIED
Isabel BowleyJapanElwin Sharvill NEW
Mujtaba NickaRussiaXuxue Feng PROPOSAL
Cody SaylorsGermanyElwin Sharvill PROPOSAL
Costa DilliardAustraliaIoni Bowcher RENEWAL
James ButtAustraliaIvan Magalhaes NEGOTIATION
Aditya KuskoArgentinaIvan Magalhaes NEGOTIATION
Wickens NestleBrazilIoni Bowcher UNQUALIFIED
Jefferson SchemmerItalyElwin Sharvill PROPOSAL
Misaki RoysterRussiaElwin Sharvill RENEWAL
Emily WhobreySpainIoni Bowcher PROPOSAL
Emily WhobreyAustraliaStephen Shaw QUALIFIED
Murillo MaletUnited KingdomXuxue Feng PROPOSAL
Greenwood BologniaIndiaAnna Fali NEGOTIATION
Kaitlin OstroskyJapanAmy Elsner NEW
Kaitlin OstroskyFranceAnna Fali UNQUALIFIED
Nicolas IturbideGermanyIoni Bowcher NEW
Johnson SergiBrazilIoni Bowcher PROPOSAL
Greenwood BologniaItalyStephen Shaw QUALIFIED
Wickens NestleItalyAmy Elsner RENEWAL
Silvio SlusarskiSpainStephen Shaw QUALIFIED
Adams MorascaSpainAnna Fali RENEWAL
Tony FollerGermanyAnna Fali NEW
Salvatore StockhamItalyXuxue Feng NEW
Emily WhobreyUnited KingdomAnna Fali QUALIFIED
Juan WieserBrazilAmy Elsner UNQUALIFIED
Claire TollnerItalyAmy Elsner RENEWAL
Jeanfrancois VenereArgentinaXuxue Feng PROPOSAL
Morrow RutaCanadaAnna Fali NEGOTIATION
Octavia MaletBrazilAsiya Javayant UNQUALIFIED
Isabel BowleyItalyAnna Fali NEGOTIATION
Stacey MacleadBrazilAmy Elsner PROPOSAL
Octavia MaletUnited KingdomXuxue Feng PROPOSAL
Jones VocelkaJapanAmy Elsner QUALIFIED
Isabel BowleyIndiaXuxue Feng RENEWAL
David DarakjySpainBernardo Dominic NEGOTIATION
Nicolas IturbideGermanyXuxue Feng QUALIFIED
Costa DilliardGermanyStephen Shaw PROPOSAL
James ButtJapanAmy Elsner NEGOTIATION
Arvin AlbaresFranceOnyama Limba RENEWAL
Rodrigues CampainJapanElwin Sharvill PROPOSAL
Silvio SlusarskiArgentinaIvan Magalhaes RENEWAL
Isabel BowleyArgentinaAsiya Javayant NEGOTIATION
Jefferson SchemmerSpainElwin Sharvill PROPOSAL
Mujtaba NickaFranceIvan Magalhaes NEGOTIATION
Salvatore StockhamRussiaStephen Shaw PROPOSAL
David DarakjySpainIoni Bowcher QUALIFIED
Stacey MacleadJapanAnna Fali RENEWAL
Horizontal
NameCountryRepresentativeStatus
Silvio SlusarskiJapanStephen Shaw QUALIFIED
Izzy GarufiItalyIoni Bowcher QUALIFIED
Aika InouyeFranceOnyama Limba PROPOSAL
Adams MorascaIndiaStephen Shaw NEW
Jefferson SchemmerIndiaBernardo Dominic QUALIFIED
Morrow RutaRussiaXuxue Feng UNQUALIFIED
Octavia MaletSpainAmy Elsner RENEWAL
Julie StensethCanadaIoni Bowcher RENEWAL
Maria MarrierIndiaXuxue Feng QUALIFIED
Ashley DoeJapanElwin Sharvill UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maisha RulapaughGermany2026-04-25Commercial Press QUALIFIED30Asiya Javayant
1001Alejandro PerinFrance2026-04-19Chemel, James L Cpa QUALIFIED77Elwin Sharvill
1002Jeanfrancois VenereFrance2026-04-25Feltz Printing Service NEGOTIATION75Ioni Bowcher
1003Juan WieserIndia2026-05-08Chanay, Jeffrey A Esq QUALIFIED82Stephen Shaw
1004Aika InouyeSpain2026-04-23Feiner Bros NEW94Ioni Bowcher
1005Murillo MaletJapan2026-05-01Buckley Miller Wright PROPOSAL59Elwin Sharvill
1006Claire TollnerRussia2026-04-14Printing Dimensions UNQUALIFIED82Xuxue Feng
1007Deepesh ChuiAustralia2026-05-03Commercial Press NEGOTIATION23Onyama Limba
1008Juan WieserUnited Kingdom2026-04-26Buckley Miller Wright NEW60Asiya Javayant
1009Izzy GarufiIndia2026-04-25Feiner Bros NEW29Bernardo Dominic
1010Cody SaylorsFrance2026-05-06Chemel, James L Cpa NEW38Xuxue Feng
1011Leja CaldareraBrazil2026-04-17Truhlar And Truhlar Attys RENEWAL66Ioni Bowcher
1012Ivar PaprockiItaly2026-04-21Feltz Printing Service NEGOTIATION10Ivan Magalhaes
1013Julie StensethUnited Kingdom2026-04-28King, Christopher A Esq UNQUALIFIED17Xuxue Feng
1014Darci PoquetteFrance2026-04-20Chapman, Ross E Esq NEW82Bernardo Dominic
1015Tony FollerUnited Kingdom2026-05-13King, Christopher A Esq NEGOTIATION86Anna Fali
1016Ricardo GauchoItaly2026-05-10Commercial Press RENEWAL10Bernardo Dominic
1017Kadeem FlosiIndia2026-05-11Truhlar And Truhlar Attys RENEWAL13Ivan Magalhaes
1018Clifford RimRussia2026-05-12Feltz Printing Service NEW79Asiya Javayant
1019Wickens NestleJapan2026-05-07Feltz Printing Service NEGOTIATION98Xuxue Feng
1020Wickens NestleCanada2026-04-18Truhlar And Truhlar Attys NEGOTIATION1Amy Elsner
1021Alejandro PerinIndia2026-04-28Feltz Printing Service NEW13Asiya Javayant
1022Stacey MacleadBrazil2026-05-05King, Christopher A Esq NEGOTIATION24Onyama Limba
1023Faith GillianSpain2026-04-30Feiner Bros RENEWAL21Stephen Shaw
1024Isabel BowleyUnited Kingdom2026-04-24Chanay, Jeffrey A Esq RENEWAL52Anna Fali
1025James ButtJapan2026-05-09Chapman, Ross E Esq NEGOTIATION48Xuxue Feng
1026Claire TollnerUnited Kingdom2026-05-07Truhlar And Truhlar Attys RENEWAL12Elwin Sharvill
1027Alejandro PerinJapan2026-04-20Rousseaux, Michael Esq QUALIFIED97Xuxue Feng
1028Octavia MaletJapan2026-05-08Rangoni Of Florence NEGOTIATION84Ioni Bowcher
1029Leon OldroydSpain2026-04-22Commercial Press RENEWAL48Ioni Bowcher
1030Maisha RulapaughArgentina2026-05-08Chapman, Ross E Esq NEW65Elwin Sharvill
1031Arvin AlbaresIndia2026-04-22Buckley Miller Wright UNQUALIFIED36Ioni Bowcher
1032Ivar PaprockiArgentina2026-04-16Commercial Press NEW95Stephen Shaw
1033Darci PoquetteGermany2026-04-26Feltz Printing Service NEW9Onyama Limba
1034Munro FerenczBrazil2026-04-15Benton, John B Jr PROPOSAL57Amy Elsner
1035Emily WhobreyItaly2026-04-26Rangoni Of Florence QUALIFIED81Ivan Magalhaes
1036Jones VocelkaJapan2026-05-11Chanay, Jeffrey A Esq NEW31Ioni Bowcher
1037Faith GillianGermany2026-05-09Printing Dimensions RENEWAL72Stephen Shaw
1038Deepesh ChuiBrazil2026-05-03Commercial Press NEGOTIATION71Ivan Magalhaes
1039Emily WhobreyRussia2026-05-08Dorl, James J Esq RENEWAL82Amy Elsner
1040Maria MarrierCanada2026-05-05Morlong Associates UNQUALIFIED75Xuxue Feng
1041Smith GlickUnited Kingdom2026-05-05Chapman, Ross E Esq RENEWAL25Ivan Magalhaes
1042James ButtGermany2026-05-12Chemel, James L Cpa NEW51Ivan Magalhaes
1043Francesco ShinkoUnited Kingdom2026-04-15Feltz Printing Service NEGOTIATION10Anna Fali
1044Aruna FigeroaRussia2026-05-06Truhlar And Truhlar Attys NEGOTIATION8Ivan Magalhaes
1045Clifford RimFrance2026-04-30Chapman, Ross E Esq PROPOSAL15Onyama Limba
1046Wickens NestleCanada2026-04-26King, Christopher A Esq UNQUALIFIED48Asiya Javayant
1047Antonio CaudyRussia2026-05-01Rousseaux, Michael Esq PROPOSAL40Ioni Bowcher
1048Costa DilliardItaly2026-04-17Commercial Press NEGOTIATION0Anna Fali
1049Jones VocelkaRussia2026-04-14Printing Dimensions QUALIFIED33Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Antonio CaudyArgentinaOnyama Limba PROPOSAL
Aika InouyeUnited KingdomIvan Magalhaes RENEWAL
Cody SaylorsItalyAsiya Javayant NEGOTIATION
Murillo MaletGermanyXuxue Feng PROPOSAL
Johnson SergiGermanyElwin Sharvill PROPOSAL
Antonio CaudyArgentinaIoni Bowcher NEW
Juan WieserFranceIvan Magalhaes UNQUALIFIED
Ashley DoeItalyAsiya Javayant UNQUALIFIED
David DarakjyCanadaAmy Elsner PROPOSAL
Munro FerenczGermanyIoni Bowcher RENEWAL
Faith GillianJapanOnyama Limba NEW
Maria MarrierAustraliaIoni Bowcher UNQUALIFIED
Stacey MacleadAustraliaElwin Sharvill NEGOTIATION
Jeanfrancois VenereBrazilAnna Fali UNQUALIFIED
Aika InouyeCanadaIoni Bowcher UNQUALIFIED
Ivar PaprockiSpainAsiya Javayant UNQUALIFIED
Rodrigues CampainSpainAmy Elsner PROPOSAL
Maisha RulapaughUnited KingdomOnyama Limba NEGOTIATION
Clifford RimSpainAmy Elsner NEW
Morrow RutaItalyStephen Shaw PROPOSAL
Juan WieserAustraliaAsiya Javayant UNQUALIFIED
Sinclair WaycottArgentinaOnyama Limba UNQUALIFIED
Aika InouyeSpainAsiya Javayant NEGOTIATION
David DarakjyFranceOnyama Limba NEW
Jones VocelkaCanadaElwin Sharvill UNQUALIFIED
Alejandro PerinJapanXuxue Feng RENEWAL
Jones VocelkaAustraliaOnyama Limba RENEWAL
Claire TollnerItalyIoni Bowcher QUALIFIED
David DarakjyIndiaAmy Elsner RENEWAL
Ivar PaprockiSpainAnna Fali RENEWAL
Darci PoquetteJapanElwin Sharvill RENEWAL
Juan WieserSpainAmy Elsner PROPOSAL
Ricardo GauchoCanadaAnna Fali PROPOSAL
Arvin AlbaresArgentinaAsiya Javayant NEW
Aika InouyeItalyBernardo Dominic QUALIFIED
Johnson SergiGermanyOnyama Limba QUALIFIED
Maria MarrierItalyIoni Bowcher NEW
Izzy GarufiJapanAmy Elsner NEW
Adams MorascaIndiaAmy Elsner UNQUALIFIED
Morrow RutaCanadaAmy Elsner PROPOSAL
Maria MarrierItalyStephen Shaw NEGOTIATION
Stacey MacleadItalyIoni Bowcher RENEWAL
Misaki RoysterFranceAsiya Javayant NEW
Morrow RutaCanadaIvan Magalhaes QUALIFIED
Maisha RulapaughBrazilStephen Shaw QUALIFIED
Wickens NestleBrazilStephen Shaw QUALIFIED
Jennifer AmigonCanadaIvan Magalhaes PROPOSAL
Claire TollnerIndiaBernardo Dominic NEGOTIATION
Faith GillianIndiaStephen Shaw NEW
Faith GillianBrazilOnyama Limba UNQUALIFIED
Frozen Columns
Name
Kadeem Flosi
Juan Wieser
Antonio Caudy
Chavez Briddick
Octavia Malet
Nicolas Iturbide
Francesco Shinko
Ivar Paprocki
Greenwood Bolognia
Misaki Royster
Faith Gillian
Misaki Royster
Morrow Ruta
Nicolas Iturbide
Emily Whobrey
Murillo Malet
Morrow Ruta
Misaki Royster
Ricardo Gaucho
Juan Wieser
Silvio Slusarski
Mujtaba Nicka
Munro Ferencz
Misaki Royster
Adams Morasca
Jeanfrancois Venere
Mayumi Kolmetz
Costa Dilliard
Silvio Slusarski
Salvatore Stockham
Ashley Doe
Tony Foller
David Darakjy
Mujtaba Nicka
Misaki Royster
Kadeem Flosi
Julie Stenseth
Jennifer Amigon
Chavez Briddick
Jennifer Amigon
Adams Morasca
Aruna Figeroa
Darci Poquette
Jennifer Amigon
Juan Wieser
Claire Tollner
Morrow Ruta
Francesco Shinko
Izzy Garufi
Aika Inouye
IdCountryDate
1000Spain2026-04-15
1001France2026-05-09
1002France2026-04-30
1003Italy2026-04-17
1004Brazil2026-04-19
1005Italy2026-05-11
1006Russia2026-04-19
1007Australia2026-05-07
1008Canada2026-05-06
1009Spain2026-05-08
1010United Kingdom2026-04-23
1011India2026-05-09
1012Brazil2026-05-09
1013Russia2026-04-24
1014France2026-05-04
1015United Kingdom2026-04-19
1016Germany2026-04-20
1017United Kingdom2026-05-06
1018Spain2026-05-06
1019Brazil2026-04-27
1020United Kingdom2026-04-23
1021France2026-05-01
1022Canada2026-04-14
1023Canada2026-05-04
1024Germany2026-05-12
1025United Kingdom2026-04-22
1026France2026-04-15
1027Japan2026-04-25
1028Brazil2026-05-05
1029Canada2026-04-23
1030Argentina2026-05-12
1031Brazil2026-04-19
1032Italy2026-04-24
1033Argentina2026-05-05
1034Germany2026-05-10
1035Spain2026-04-26
1036Japan2026-05-02
1037Australia2026-04-29
1038France2026-05-10
1039Argentina2026-04-28
1040Canada2026-04-18
1041Russia2026-05-02
1042Australia2026-04-23
1043Japan2026-04-18
1044Russia2026-05-12
1045Japan2026-05-12
1046Canada2026-05-03
1047Brazil2026-04-17
1048Canada2026-05-09
1049Canada2026-05-11

On-Demand Data

NameIdCountryDate
Jennifer Amigon1000Italy2026-05-10
Silvio Slusarski1001India2026-05-09
Cody Saylors1002Germany2026-04-22
Leja Caldarera1003Russia2026-04-19
Misaki Royster1004United Kingdom2026-05-02
Aditya Kusko1005Russia2026-05-04
Rodrigues Campain1006Germany2026-04-16
Kaitlin Ostrosky1007Brazil2026-05-07
Juan Wieser1008United Kingdom2026-04-22
Morrow Ruta1009France2026-04-27
Alejandro Perin1010Argentina2026-04-14
Darci Poquette1011United Kingdom2026-05-07
Maria Marrier1012United Kingdom2026-04-26
Leja Caldarera1013Argentina2026-04-24
Jones Vocelka1014United Kingdom2026-05-12
Ashley Doe1015India2026-04-17
Johnson Sergi1016Germany2026-05-04
Maria Marrier1017Australia2026-05-02
David Darakjy1018Spain2026-04-25
Rodrigues Campain1019France2026-04-21
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mujtaba NickaFranceAmy Elsner NEGOTIATION
Isabel BowleyJapanBernardo Dominic NEGOTIATION
Stacey MacleadRussiaAsiya Javayant NEW
Jennifer AmigonRussiaIoni Bowcher RENEWAL
Nicolas IturbideGermanyXuxue Feng UNQUALIFIED
Isabel BowleyUnited KingdomBernardo Dominic QUALIFIED
Murillo MaletArgentinaAnna Fali UNQUALIFIED
Emily WhobreyArgentinaElwin Sharvill QUALIFIED
Clifford RimCanadaAmy Elsner NEW
Wickens NestleIndiaIvan Magalhaes RENEWAL
Claire TollnerIndiaIoni Bowcher PROPOSAL
Ivar PaprockiSpainAmy Elsner RENEWAL
Greenwood BologniaSpainElwin Sharvill UNQUALIFIED
Deepesh ChuiItalyAsiya Javayant UNQUALIFIED
Aditya KuskoBrazilIvan Magalhaes PROPOSAL
Johnson SergiRussiaAmy Elsner PROPOSAL
Deepesh ChuiBrazilAnna Fali RENEWAL
Jennifer AmigonFranceAsiya Javayant NEGOTIATION
David DarakjySpainStephen Shaw RENEWAL
Costa DilliardBrazilIoni Bowcher NEGOTIATION
Smith GlickItalyXuxue Feng QUALIFIED
Alejandro PerinBrazilAmy Elsner RENEWAL
Sinclair WaycottSpainIvan Magalhaes QUALIFIED
Clifford RimBrazilElwin Sharvill NEW
Deepesh ChuiItalyAnna Fali UNQUALIFIED
Claire TollnerBrazilOnyama Limba NEGOTIATION
Stacey MacleadBrazilBernardo Dominic NEW
Octavia MaletCanadaAmy Elsner QUALIFIED
Emily WhobreyArgentinaIvan Magalhaes RENEWAL
Claire TollnerArgentinaStephen Shaw QUALIFIED
David DarakjyGermanyOnyama Limba PROPOSAL
Clifford RimSpainElwin Sharvill NEW
Ricardo GauchoBrazilBernardo Dominic PROPOSAL
Jennifer AmigonCanadaIoni Bowcher UNQUALIFIED
Emily WhobreyBrazilOnyama Limba NEGOTIATION
Wickens NestleJapanOnyama Limba UNQUALIFIED
Johnson SergiJapanStephen Shaw PROPOSAL
David DarakjyArgentinaElwin Sharvill QUALIFIED
Arvin AlbaresItalyIvan Magalhaes RENEWAL
Chavez BriddickBrazilAmy Elsner NEW

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