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
Maria MarrierItalyStephen Shaw PROPOSAL
Aruna FigeroaArgentinaAmy Elsner NEW
James ButtAustraliaIvan Magalhaes PROPOSAL
Aditya KuskoGermanyStephen Shaw NEGOTIATION
Greenwood BologniaFranceStephen Shaw UNQUALIFIED
Cody SaylorsCanadaElwin Sharvill NEW
Tony FollerBrazilStephen Shaw NEGOTIATION
Emily WhobreyJapanIvan Magalhaes NEGOTIATION
Deepesh ChuiGermanyStephen Shaw NEW
Chavez BriddickGermanyBernardo Dominic PROPOSAL
Jennifer AmigonIndiaXuxue Feng RENEWAL
Sinclair WaycottFranceAmy Elsner UNQUALIFIED
Smith GlickCanadaElwin Sharvill NEGOTIATION
Octavia MaletGermanyOnyama Limba RENEWAL
Munro FerenczFranceAnna Fali NEW
Octavia MaletAustraliaStephen Shaw UNQUALIFIED
Clifford RimUnited KingdomXuxue Feng NEW
Jeanfrancois VenereArgentinaBernardo Dominic QUALIFIED
Julie StensethBrazilOnyama Limba UNQUALIFIED
David DarakjyCanadaIvan Magalhaes QUALIFIED
Adams MorascaFranceXuxue Feng RENEWAL
Faith GillianRussiaAnna Fali NEGOTIATION
Ricardo GauchoJapanStephen Shaw NEGOTIATION
Nicolas IturbideIndiaAmy Elsner PROPOSAL
Munro FerenczJapanAmy Elsner PROPOSAL
Morrow RutaAustraliaElwin Sharvill NEW
Maria MarrierItalyXuxue Feng PROPOSAL
Izzy GarufiSpainElwin Sharvill RENEWAL
Izzy GarufiBrazilAmy Elsner UNQUALIFIED
Ricardo GauchoSpainElwin Sharvill RENEWAL
Chavez BriddickCanadaStephen Shaw QUALIFIED
Wickens NestleGermanyElwin Sharvill PROPOSAL
Kadeem FlosiSpainOnyama Limba QUALIFIED
Jones VocelkaUnited KingdomStephen Shaw QUALIFIED
Arvin AlbaresJapanIvan Magalhaes RENEWAL
Maisha RulapaughFranceOnyama Limba PROPOSAL
Faith GillianRussiaIvan Magalhaes NEW
Antonio CaudyCanadaAsiya Javayant RENEWAL
Smith GlickUnited KingdomIoni Bowcher QUALIFIED
Nicolas IturbideItalyStephen Shaw RENEWAL
Maria MarrierIndiaAnna Fali UNQUALIFIED
Chavez BriddickFranceIoni Bowcher RENEWAL
Alejandro PerinJapanOnyama Limba QUALIFIED
Ivar PaprockiJapanAnna Fali NEW
Aika InouyeRussiaOnyama Limba UNQUALIFIED
Julie StensethJapanIvan Magalhaes PROPOSAL
David DarakjySpainXuxue Feng NEGOTIATION
Wickens NestleJapanIoni Bowcher NEGOTIATION
Ricardo GauchoRussiaXuxue Feng QUALIFIED
Emily WhobreyArgentinaIoni Bowcher NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Murillo MaletIndiaStephen Shaw PROPOSAL
Mayumi KolmetzItalyAnna Fali NEW
Wickens NestleGermanyAnna Fali QUALIFIED
Tony FollerCanadaAmy Elsner RENEWAL
Arvin AlbaresItalyIoni Bowcher NEGOTIATION
Julie StensethSpainIvan Magalhaes NEW
Claire TollnerFranceAnna Fali QUALIFIED
Jones VocelkaSpainStephen Shaw RENEWAL
Costa DilliardFranceAsiya Javayant PROPOSAL
Octavia MaletAustraliaAnna Fali PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Mayumi KolmetzRussia2026-05-17Buckley Miller Wright UNQUALIFIED95Elwin Sharvill
1001Maisha RulapaughArgentina2026-05-26Chanay, Jeffrey A Esq NEGOTIATION92Anna Fali
1002David DarakjyFrance2026-05-02Feiner Bros PROPOSAL48Xuxue Feng
1003Greenwood BologniaIndia2026-04-28Feiner Bros QUALIFIED92Asiya Javayant
1004Murillo MaletArgentina2026-05-06Chemel, James L Cpa PROPOSAL17Xuxue Feng
1005David DarakjyFrance2026-05-24Rousseaux, Michael Esq RENEWAL68Elwin Sharvill
1006Ricardo GauchoAustralia2026-05-07Chanay, Jeffrey A Esq NEGOTIATION46Asiya Javayant
1007Antonio CaudyItaly2026-05-10Chanay, Jeffrey A Esq PROPOSAL19Bernardo Dominic
1008Kadeem FlosiIndia2026-04-30Rangoni Of Florence UNQUALIFIED49Amy Elsner
1009Munro FerenczSpain2026-05-23Chanay, Jeffrey A Esq QUALIFIED71Anna Fali
1010Claire TollnerBrazil2026-05-07King, Christopher A Esq QUALIFIED31Xuxue Feng
1011James ButtBrazil2026-04-30Chemel, James L Cpa PROPOSAL50Stephen Shaw
1012Salvatore StockhamRussia2026-05-03Chanay, Jeffrey A Esq NEGOTIATION18Ioni Bowcher
1013Julie StensethRussia2026-05-08King, Christopher A Esq NEW92Amy Elsner
1014Nicolas IturbideCanada2026-05-07Benton, John B Jr NEW17Anna Fali
1015Greenwood BologniaGermany2026-05-24Truhlar And Truhlar Attys RENEWAL71Stephen Shaw
1016Leon OldroydArgentina2026-04-30Printing Dimensions NEW98Ioni Bowcher
1017Misaki RoysterFrance2026-05-10Dorl, James J Esq PROPOSAL94Xuxue Feng
1018Greenwood BologniaCanada2026-05-22Commercial Press NEGOTIATION32Ioni Bowcher
1019Juan WieserJapan2026-05-04Printing Dimensions QUALIFIED6Bernardo Dominic
1020Isabel BowleyArgentina2026-04-28Rangoni Of Florence QUALIFIED35Asiya Javayant
1021Juan WieserSpain2026-05-24Rangoni Of Florence UNQUALIFIED18Ivan Magalhaes
1022Adams MorascaBrazil2026-04-29Commercial Press NEGOTIATION15Amy Elsner
1023Isabel BowleyRussia2026-05-22Printing Dimensions PROPOSAL21Asiya Javayant
1024Maria MarrierIndia2026-04-28King, Christopher A Esq QUALIFIED68Onyama Limba
1025Aruna FigeroaCanada2026-05-17Truhlar And Truhlar Attys QUALIFIED72Ivan Magalhaes
1026Jones VocelkaArgentina2026-05-19Printing Dimensions UNQUALIFIED64Stephen Shaw
1027Jennifer AmigonSpain2026-05-03Feltz Printing Service UNQUALIFIED94Anna Fali
1028Isabel BowleyFrance2026-05-14Rousseaux, Michael Esq RENEWAL49Bernardo Dominic
1029Jeanfrancois VenereCanada2026-05-08Commercial Press PROPOSAL72Asiya Javayant
1030James ButtBrazil2026-05-03Dorl, James J Esq UNQUALIFIED32Stephen Shaw
1031Tony FollerJapan2026-05-21Morlong Associates RENEWAL98Amy Elsner
1032Aruna FigeroaArgentina2026-05-07Feltz Printing Service RENEWAL86Elwin Sharvill
1033Leon OldroydCanada2026-05-16Rangoni Of Florence PROPOSAL46Ivan Magalhaes
1034David DarakjyGermany2026-05-20Dorl, James J Esq NEW20Ivan Magalhaes
1035Julie StensethUnited Kingdom2026-04-30Rangoni Of Florence QUALIFIED39Xuxue Feng
1036Maisha RulapaughJapan2026-05-23Commercial Press NEGOTIATION53Ioni Bowcher
1037Costa DilliardItaly2026-05-22Chanay, Jeffrey A Esq NEGOTIATION34Amy Elsner
1038Ashley DoeAustralia2026-05-10Printing Dimensions QUALIFIED62Elwin Sharvill
1039Kadeem FlosiIndia2026-05-13Benton, John B Jr PROPOSAL91Elwin Sharvill
1040Smith GlickUnited Kingdom2026-05-09Rousseaux, Michael Esq NEW35Ioni Bowcher
1041Jeanfrancois VenereFrance2026-04-28Feltz Printing Service NEW46Ioni Bowcher
1042Adams MorascaIndia2026-05-21Feltz Printing Service NEGOTIATION59Onyama Limba
1043Chavez BriddickFrance2026-05-07Morlong Associates UNQUALIFIED6Onyama Limba
1044Mayumi KolmetzItaly2026-05-17Dorl, James J Esq NEW79Amy Elsner
1045Morrow RutaRussia2026-05-17Morlong Associates RENEWAL16Elwin Sharvill
1046Maisha RulapaughIndia2026-05-20Rangoni Of Florence PROPOSAL7Stephen Shaw
1047Darci PoquetteSpain2026-05-21Rousseaux, Michael Esq UNQUALIFIED48Ioni Bowcher
1048Aditya KuskoJapan2026-05-25Commercial Press PROPOSAL69Ioni Bowcher
1049Mujtaba NickaFrance2026-05-14Dorl, James J Esq QUALIFIED67Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Sinclair WaycottSpainIvan Magalhaes RENEWAL
Mayumi KolmetzRussiaElwin Sharvill PROPOSAL
Stacey MacleadRussiaAsiya Javayant PROPOSAL
Jeanfrancois VenereRussiaOnyama Limba UNQUALIFIED
Ivar PaprockiSpainAmy Elsner RENEWAL
Cody SaylorsBrazilBernardo Dominic PROPOSAL
Jones VocelkaCanadaAnna Fali NEGOTIATION
Mujtaba NickaFranceIoni Bowcher RENEWAL
Aditya KuskoBrazilXuxue Feng NEW
Cody SaylorsUnited KingdomIoni Bowcher QUALIFIED
Jones VocelkaItalyBernardo Dominic QUALIFIED
Stacey MacleadCanadaElwin Sharvill NEW
Octavia MaletJapanXuxue Feng NEGOTIATION
Juan WieserGermanyBernardo Dominic QUALIFIED
Julie StensethAustraliaAnna Fali PROPOSAL
Jones VocelkaGermanyStephen Shaw NEGOTIATION
Stacey MacleadIndiaXuxue Feng PROPOSAL
Kaitlin OstroskyGermanyBernardo Dominic NEGOTIATION
Stacey MacleadFranceAnna Fali NEGOTIATION
Munro FerenczFranceIoni Bowcher UNQUALIFIED
Adams MorascaAustraliaStephen Shaw PROPOSAL
Maria MarrierSpainElwin Sharvill UNQUALIFIED
Ivar PaprockiRussiaIoni Bowcher NEGOTIATION
Jennifer AmigonCanadaAsiya Javayant QUALIFIED
Adams MorascaSpainStephen Shaw NEW
Munro FerenczRussiaElwin Sharvill NEW
Kadeem FlosiArgentinaIoni Bowcher NEGOTIATION
Leon OldroydRussiaBernardo Dominic PROPOSAL
Cody SaylorsIndiaXuxue Feng RENEWAL
Claire TollnerJapanAmy Elsner NEW
Mujtaba NickaRussiaIvan Magalhaes UNQUALIFIED
Misaki RoysterItalyStephen Shaw QUALIFIED
James ButtCanadaBernardo Dominic PROPOSAL
Greenwood BologniaBrazilXuxue Feng UNQUALIFIED
Ivar PaprockiJapanElwin Sharvill QUALIFIED
Misaki RoysterIndiaElwin Sharvill UNQUALIFIED
Murillo MaletItalyStephen Shaw NEGOTIATION
James ButtIndiaAsiya Javayant QUALIFIED
Stacey MacleadGermanyXuxue Feng NEGOTIATION
Aruna FigeroaBrazilIvan Magalhaes NEGOTIATION
Tony FollerSpainAnna Fali NEGOTIATION
Adams MorascaGermanyIvan Magalhaes NEGOTIATION
Leja CaldareraIndiaIoni Bowcher NEW
Greenwood BologniaRussiaIoni Bowcher RENEWAL
Salvatore StockhamIndiaAmy Elsner NEGOTIATION
Isabel BowleyIndiaOnyama Limba PROPOSAL
Faith GillianBrazilBernardo Dominic NEW
James ButtGermanyIoni Bowcher NEW
Claire TollnerGermanyAsiya Javayant NEW
Izzy GarufiCanadaBernardo Dominic NEGOTIATION
Frozen Columns
Name
Salvatore Stockham
Johnson Sergi
Jeanfrancois Venere
Ashley Doe
Ivar Paprocki
Isabel Bowley
Morrow Ruta
Cody Saylors
Aruna Figeroa
Isabel Bowley
Murillo Malet
Salvatore Stockham
Octavia Malet
Julie Stenseth
Mujtaba Nicka
Jennifer Amigon
Maisha Rulapaugh
Morrow Ruta
Jeanfrancois Venere
Tony Foller
Chavez Briddick
Antonio Caudy
David Darakjy
Julie Stenseth
Isabel Bowley
Claire Tollner
Claire Tollner
Salvatore Stockham
Ivar Paprocki
Wickens Nestle
Costa Dilliard
Francesco Shinko
Chavez Briddick
Arvin Albares
Mayumi Kolmetz
Darci Poquette
David Darakjy
Chavez Briddick
Leja Caldarera
Silvio Slusarski
Ivar Paprocki
Arvin Albares
Rodrigues Campain
Leja Caldarera
Maria Marrier
Chavez Briddick
Juan Wieser
Emily Whobrey
Jeanfrancois Venere
Maisha Rulapaugh
IdCountryDate
1000Argentina2026-05-25
1001Argentina2026-05-14
1002Germany2026-05-10
1003Argentina2026-05-22
1004Germany2026-05-16
1005United Kingdom2026-05-23
1006Argentina2026-05-17
1007India2026-05-21
1008Brazil2026-05-10
1009Germany2026-05-09
1010United Kingdom2026-05-05
1011Brazil2026-05-26
1012Russia2026-05-01
1013Australia2026-05-16
1014France2026-05-06
1015India2026-05-17
1016India2026-05-02
1017Italy2026-05-25
1018Russia2026-05-13
1019Argentina2026-05-19
1020Australia2026-05-21
1021Australia2026-05-20
1022Canada2026-04-30
1023Canada2026-05-11
1024Japan2026-05-06
1025United Kingdom2026-05-10
1026Germany2026-04-30
1027Argentina2026-04-29
1028Germany2026-04-30
1029India2026-05-15
1030Germany2026-05-10
1031Germany2026-05-20
1032Australia2026-05-13
1033France2026-05-02
1034Japan2026-05-17
1035Brazil2026-05-24
1036Spain2026-05-25
1037Spain2026-05-08
1038Germany2026-05-11
1039India2026-05-22
1040France2026-05-05
1041Russia2026-05-26
1042Argentina2026-05-14
1043Russia2026-05-03
1044India2026-05-02
1045Brazil2026-05-13
1046India2026-05-10
1047Canada2026-05-24
1048Argentina2026-05-14
1049Brazil2026-05-06

On-Demand Data

NameIdCountryDate
Darci Poquette1000Australia2026-05-20
Misaki Royster1001India2026-05-10
Chavez Briddick1002Australia2026-05-23
Murillo Malet1003Germany2026-05-18
Salvatore Stockham1004Russia2026-05-02
Costa Dilliard1005India2026-05-03
Octavia Malet1006Canada2026-05-23
Leja Caldarera1007Italy2026-04-29
Cody Saylors1008Italy2026-05-19
Morrow Ruta1009Germany2026-05-23
Tony Foller1010Australia2026-05-24
Juan Wieser1011Argentina2026-05-11
Stacey Maclead1012India2026-05-05
Adams Morasca1013Italy2026-05-20
Francesco Shinko1014Australia2026-05-15
Ashley Doe1015Australia2026-05-10
Claire Tollner1016Canada2026-05-09
Mayumi Kolmetz1017Canada2026-05-13
Leon Oldroyd1018Canada2026-05-25
Claire Tollner1019Russia2026-04-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Claire TollnerUnited KingdomOnyama Limba UNQUALIFIED
Izzy GarufiGermanyBernardo Dominic NEGOTIATION
Greenwood BologniaFranceAmy Elsner QUALIFIED
Ivar PaprockiItalyBernardo Dominic QUALIFIED
Aruna FigeroaGermanyAsiya Javayant NEGOTIATION
Tony FollerFranceElwin Sharvill UNQUALIFIED
Clifford RimBrazilIoni Bowcher RENEWAL
Deepesh ChuiUnited KingdomAsiya Javayant PROPOSAL
Costa DilliardGermanyAmy Elsner NEGOTIATION
Francesco ShinkoIndiaIvan Magalhaes NEGOTIATION
Julie StensethItalyIvan Magalhaes NEW
Izzy GarufiFranceElwin Sharvill UNQUALIFIED
Nicolas IturbideRussiaXuxue Feng PROPOSAL
Sinclair WaycottItalyIoni Bowcher QUALIFIED
Adams MorascaJapanIvan Magalhaes NEW
Ivar PaprockiJapanAmy Elsner QUALIFIED
Costa DilliardCanadaBernardo Dominic RENEWAL
Claire TollnerArgentinaOnyama Limba RENEWAL
Aika InouyeSpainAsiya Javayant QUALIFIED
Aika InouyeIndiaXuxue Feng RENEWAL
Antonio CaudyFranceXuxue Feng UNQUALIFIED
Claire TollnerCanadaIvan Magalhaes UNQUALIFIED
Chavez BriddickArgentinaOnyama Limba PROPOSAL
David DarakjyFranceOnyama Limba PROPOSAL
Rodrigues CampainIndiaIoni Bowcher PROPOSAL
Smith GlickJapanAmy Elsner QUALIFIED
Greenwood BologniaGermanyAsiya Javayant QUALIFIED
Rodrigues CampainArgentinaOnyama Limba NEGOTIATION
Kaitlin OstroskyUnited KingdomAsiya Javayant PROPOSAL
Costa DilliardFranceAnna Fali NEGOTIATION
Faith GillianRussiaIvan Magalhaes NEW
Clifford RimJapanXuxue Feng QUALIFIED
Kadeem FlosiFranceXuxue Feng QUALIFIED
Kadeem FlosiGermanyAmy Elsner UNQUALIFIED
Izzy GarufiAustraliaElwin Sharvill RENEWAL
Faith GillianCanadaAnna Fali QUALIFIED
Maria MarrierFranceAnna Fali RENEWAL
Sinclair WaycottGermanyBernardo Dominic RENEWAL
Cody SaylorsGermanyIvan Magalhaes UNQUALIFIED
Isabel BowleyJapanStephen 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>