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
Aika InouyeJapanAnna Fali QUALIFIED
Sinclair WaycottBrazilAnna Fali RENEWAL
Jones VocelkaJapanIvan Magalhaes NEW
Ricardo GauchoFranceElwin Sharvill PROPOSAL
Ivar PaprockiCanadaAsiya Javayant UNQUALIFIED
Deepesh ChuiArgentinaOnyama Limba UNQUALIFIED
Leja CaldareraItalyBernardo Dominic RENEWAL
Emily WhobreySpainOnyama Limba RENEWAL
Nicolas IturbideIndiaIoni Bowcher QUALIFIED
Mayumi KolmetzIndiaAsiya Javayant QUALIFIED
Alejandro PerinArgentinaElwin Sharvill NEGOTIATION
Wickens NestleBrazilOnyama Limba PROPOSAL
Salvatore StockhamFranceOnyama Limba QUALIFIED
Clifford RimBrazilAmy Elsner RENEWAL
Darci PoquetteIndiaIvan Magalhaes RENEWAL
Munro FerenczBrazilIoni Bowcher PROPOSAL
Tony FollerGermanyIvan Magalhaes NEW
Isabel BowleyJapanIvan Magalhaes UNQUALIFIED
Ivar PaprockiArgentinaIvan Magalhaes NEW
Aika InouyeAustraliaStephen Shaw UNQUALIFIED
Deepesh ChuiJapanStephen Shaw NEGOTIATION
Jefferson SchemmerJapanXuxue Feng PROPOSAL
Aika InouyeGermanyAsiya Javayant PROPOSAL
Ashley DoeUnited KingdomAnna Fali PROPOSAL
Clifford RimGermanyElwin Sharvill NEW
Adams MorascaCanadaOnyama Limba UNQUALIFIED
Mujtaba NickaFranceXuxue Feng UNQUALIFIED
Alejandro PerinGermanyOnyama Limba UNQUALIFIED
Juan WieserJapanBernardo Dominic RENEWAL
Izzy GarufiAustraliaAmy Elsner NEGOTIATION
Johnson SergiBrazilAsiya Javayant QUALIFIED
Mujtaba NickaUnited KingdomIvan Magalhaes QUALIFIED
Greenwood BologniaIndiaAmy Elsner QUALIFIED
Alejandro PerinIndiaElwin Sharvill UNQUALIFIED
Ricardo GauchoJapanIvan Magalhaes NEGOTIATION
Tony FollerJapanIoni Bowcher QUALIFIED
Maisha RulapaughIndiaAnna Fali UNQUALIFIED
Antonio CaudyGermanyElwin Sharvill NEGOTIATION
Leon OldroydJapanAnna Fali QUALIFIED
Julie StensethFranceAsiya Javayant PROPOSAL
Maisha RulapaughGermanyIvan Magalhaes RENEWAL
Nicolas IturbideBrazilAnna Fali RENEWAL
Clifford RimUnited KingdomBernardo Dominic UNQUALIFIED
Maisha RulapaughJapanBernardo Dominic QUALIFIED
Salvatore StockhamAustraliaXuxue Feng QUALIFIED
Maisha RulapaughItalyElwin Sharvill NEGOTIATION
Clifford RimJapanXuxue Feng QUALIFIED
Greenwood BologniaBrazilAmy Elsner UNQUALIFIED
Silvio SlusarskiBrazilXuxue Feng QUALIFIED
Ivar PaprockiIndiaXuxue Feng RENEWAL
Horizontal
NameCountryRepresentativeStatus
Johnson SergiGermanyAnna Fali NEW
Chavez BriddickItalyStephen Shaw NEGOTIATION
James ButtItalyIvan Magalhaes NEGOTIATION
Cody SaylorsGermanyXuxue Feng PROPOSAL
Aruna FigeroaAustraliaBernardo Dominic QUALIFIED
Kaitlin OstroskyArgentinaStephen Shaw UNQUALIFIED
Tony FollerBrazilIoni Bowcher NEW
Misaki RoysterItalyBernardo Dominic RENEWAL
Ivar PaprockiRussiaAmy Elsner QUALIFIED
Johnson SergiArgentinaAmy Elsner UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Clifford RimFrance2026-05-24Feiner Bros RENEWAL83Ioni Bowcher
1001Deepesh ChuiBrazil2026-05-27Truhlar And Truhlar Attys UNQUALIFIED66Asiya Javayant
1002Octavia MaletCanada2026-05-25Chemel, James L Cpa RENEWAL62Asiya Javayant
1003Chavez BriddickGermany2026-05-26Commercial Press UNQUALIFIED73Stephen Shaw
1004Arvin AlbaresUnited Kingdom2026-05-29Rangoni Of Florence NEW95Onyama Limba
1005Morrow RutaRussia2026-06-10Rousseaux, Michael Esq NEGOTIATION34Onyama Limba
1006Stacey MacleadBrazil2026-06-05Chemel, James L Cpa PROPOSAL22Bernardo Dominic
1007Francesco ShinkoAustralia2026-05-18Printing Dimensions PROPOSAL49Xuxue Feng
1008Jennifer AmigonRussia2026-05-14Rangoni Of Florence NEW32Ioni Bowcher
1009Maria MarrierGermany2026-06-06Printing Dimensions QUALIFIED49Anna Fali
1010Cody SaylorsJapan2026-06-01Chanay, Jeffrey A Esq RENEWAL34Ioni Bowcher
1011Salvatore StockhamAustralia2026-05-22King, Christopher A Esq NEGOTIATION56Amy Elsner
1012Emily WhobreyUnited Kingdom2026-05-20Feltz Printing Service NEGOTIATION16Stephen Shaw
1013Tony FollerJapan2026-05-28Printing Dimensions UNQUALIFIED62Onyama Limba
1014Mujtaba NickaCanada2026-06-03Benton, John B Jr UNQUALIFIED4Stephen Shaw
1015Kadeem FlosiRussia2026-05-17Truhlar And Truhlar Attys NEW5Elwin Sharvill
1016Cody SaylorsIndia2026-06-01Printing Dimensions QUALIFIED14Amy Elsner
1017Emily WhobreyBrazil2026-05-25Chemel, James L Cpa UNQUALIFIED53Stephen Shaw
1018Chavez BriddickAustralia2026-06-08Dorl, James J Esq QUALIFIED63Elwin Sharvill
1019Maisha RulapaughArgentina2026-05-20Truhlar And Truhlar Attys NEW68Onyama Limba
1020Cody SaylorsJapan2026-06-04Feiner Bros PROPOSAL12Bernardo Dominic
1021Deepesh ChuiArgentina2026-06-06Printing Dimensions NEW47Amy Elsner
1022Ricardo GauchoAustralia2026-06-05Benton, John B Jr RENEWAL64Asiya Javayant
1023Aika InouyeIndia2026-05-31Rangoni Of Florence QUALIFIED86Amy Elsner
1024Jennifer AmigonArgentina2026-05-25Rangoni Of Florence NEGOTIATION73Amy Elsner
1025Izzy GarufiJapan2026-05-23Rousseaux, Michael Esq PROPOSAL25Ioni Bowcher
1026Chavez BriddickFrance2026-06-05Feltz Printing Service NEGOTIATION35Anna Fali
1027Antonio CaudyFrance2026-06-09Morlong Associates PROPOSAL42Anna Fali
1028Jefferson SchemmerBrazil2026-05-21King, Christopher A Esq UNQUALIFIED60Amy Elsner
1029Emily WhobreyAustralia2026-05-19Feiner Bros NEGOTIATION84Anna Fali
1030Costa DilliardGermany2026-05-26Truhlar And Truhlar Attys NEGOTIATION30Xuxue Feng
1031Jennifer AmigonIndia2026-05-17Chemel, James L Cpa NEW43Ivan Magalhaes
1032David DarakjyRussia2026-06-02Buckley Miller Wright RENEWAL69Anna Fali
1033Aika InouyeFrance2026-05-31Truhlar And Truhlar Attys RENEWAL56Bernardo Dominic
1034Aika InouyeBrazil2026-06-05Rangoni Of Florence UNQUALIFIED29Stephen Shaw
1035Aruna FigeroaJapan2026-05-20Rousseaux, Michael Esq NEGOTIATION31Bernardo Dominic
1036Stacey MacleadIndia2026-06-01Rangoni Of Florence RENEWAL75Bernardo Dominic
1037Leon OldroydItaly2026-05-14King, Christopher A Esq UNQUALIFIED60Bernardo Dominic
1038Costa DilliardUnited Kingdom2026-05-21Morlong Associates NEW11Bernardo Dominic
1039Aditya KuskoJapan2026-05-27Benton, John B Jr QUALIFIED83Bernardo Dominic
1040Rodrigues CampainUnited Kingdom2026-05-29Buckley Miller Wright NEW17Xuxue Feng
1041Greenwood BologniaFrance2026-06-01Rousseaux, Michael Esq RENEWAL5Elwin Sharvill
1042Mujtaba NickaCanada2026-06-04Chapman, Ross E Esq QUALIFIED7Amy Elsner
1043Morrow RutaFrance2026-05-16Benton, John B Jr UNQUALIFIED46Onyama Limba
1044Mujtaba NickaItaly2026-05-24Benton, John B Jr NEGOTIATION97Xuxue Feng
1045Kaitlin OstroskyCanada2026-06-07Chemel, James L Cpa QUALIFIED49Xuxue Feng
1046Claire TollnerBrazil2026-05-21King, Christopher A Esq NEW36Ivan Magalhaes
1047Tony FollerItaly2026-05-18Buckley Miller Wright NEW7Asiya Javayant
1048Chavez BriddickIndia2026-05-28Rousseaux, Michael Esq RENEWAL66Stephen Shaw
1049Adams MorascaSpain2026-05-15Feiner Bros PROPOSAL99Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Darci PoquetteRussiaXuxue Feng NEW
Faith GillianItalyIoni Bowcher NEGOTIATION
Ashley DoeAustraliaStephen Shaw RENEWAL
Aditya KuskoFranceIoni Bowcher PROPOSAL
Kadeem FlosiItalyStephen Shaw PROPOSAL
Mujtaba NickaGermanyXuxue Feng NEW
Munro FerenczUnited KingdomXuxue Feng NEW
Johnson SergiItalyXuxue Feng NEGOTIATION
Isabel BowleyUnited KingdomAnna Fali QUALIFIED
Faith GillianRussiaAsiya Javayant PROPOSAL
Cody SaylorsRussiaAnna Fali NEW
Faith GillianSpainOnyama Limba NEGOTIATION
Smith GlickRussiaXuxue Feng NEW
Aditya KuskoCanadaAsiya Javayant RENEWAL
Claire TollnerItalyIoni Bowcher NEW
Tony FollerArgentinaOnyama Limba UNQUALIFIED
Deepesh ChuiAustraliaAmy Elsner QUALIFIED
Emily WhobreyUnited KingdomOnyama Limba RENEWAL
Ricardo GauchoFranceStephen Shaw PROPOSAL
Sinclair WaycottAustraliaBernardo Dominic UNQUALIFIED
Silvio SlusarskiItalyOnyama Limba NEGOTIATION
Izzy GarufiRussiaXuxue Feng RENEWAL
Mujtaba NickaUnited KingdomAnna Fali PROPOSAL
Costa DilliardSpainXuxue Feng QUALIFIED
Aika InouyeGermanyOnyama Limba NEW
Murillo MaletCanadaIoni Bowcher QUALIFIED
Johnson SergiItalyIoni Bowcher NEW
Isabel BowleyRussiaIoni Bowcher NEGOTIATION
Clifford RimSpainStephen Shaw RENEWAL
Costa DilliardBrazilAsiya Javayant NEW
Stacey MacleadAustraliaAnna Fali UNQUALIFIED
Emily WhobreyUnited KingdomXuxue Feng NEGOTIATION
Nicolas IturbideItalyAnna Fali UNQUALIFIED
Costa DilliardRussiaAsiya Javayant RENEWAL
Maria MarrierGermanyOnyama Limba QUALIFIED
Munro FerenczJapanIoni Bowcher UNQUALIFIED
Francesco ShinkoBrazilAsiya Javayant QUALIFIED
Chavez BriddickAustraliaAsiya Javayant UNQUALIFIED
Faith GillianRussiaBernardo Dominic PROPOSAL
Costa DilliardGermanyOnyama Limba NEW
Misaki RoysterGermanyBernardo Dominic RENEWAL
Sinclair WaycottJapanAsiya Javayant PROPOSAL
Antonio CaudyBrazilAsiya Javayant NEGOTIATION
Mujtaba NickaGermanyAmy Elsner NEGOTIATION
Munro FerenczRussiaIvan Magalhaes RENEWAL
Silvio SlusarskiUnited KingdomBernardo Dominic NEGOTIATION
Ashley DoeIndiaAmy Elsner PROPOSAL
Smith GlickBrazilStephen Shaw NEGOTIATION
Cody SaylorsSpainXuxue Feng NEW
James ButtBrazilElwin Sharvill NEW
Frozen Columns
Name
Smith Glick
Alejandro Perin
Aruna Figeroa
Francesco Shinko
Jefferson Schemmer
Julie Stenseth
Antonio Caudy
Munro Ferencz
Faith Gillian
Sinclair Waycott
Arvin Albares
Murillo Malet
Salvatore Stockham
Julie Stenseth
Francesco Shinko
Darci Poquette
Mujtaba Nicka
Cody Saylors
Johnson Sergi
Arvin Albares
Francesco Shinko
Morrow Ruta
Smith Glick
Ivar Paprocki
Costa Dilliard
Mujtaba Nicka
Rodrigues Campain
Greenwood Bolognia
Johnson Sergi
Ashley Doe
Johnson Sergi
Costa Dilliard
Silvio Slusarski
Silvio Slusarski
Darci Poquette
Rodrigues Campain
Ashley Doe
Maisha Rulapaugh
Julie Stenseth
Darci Poquette
Darci Poquette
Darci Poquette
Ricardo Gaucho
James Butt
Kadeem Flosi
Greenwood Bolognia
Emily Whobrey
Greenwood Bolognia
Murillo Malet
Deepesh Chui
IdCountryDate
1000Brazil2026-05-24
1001India2026-06-01
1002Spain2026-05-18
1003Italy2026-05-21
1004Canada2026-05-26
1005Italy2026-05-28
1006Argentina2026-05-22
1007Russia2026-06-05
1008Germany2026-06-10
1009Brazil2026-05-15
1010Australia2026-06-10
1011Russia2026-05-31
1012France2026-06-04
1013Brazil2026-06-08
1014Japan2026-05-26
1015Germany2026-05-18
1016Canada2026-05-20
1017Australia2026-05-24
1018Italy2026-05-21
1019Italy2026-06-02
1020Brazil2026-06-11
1021Argentina2026-05-17
1022Russia2026-05-24
1023France2026-05-16
1024Russia2026-06-03
1025Spain2026-05-20
1026Italy2026-05-25
1027Spain2026-06-12
1028United Kingdom2026-05-24
1029Germany2026-05-27
1030Australia2026-05-26
1031Spain2026-06-09
1032Argentina2026-06-01
1033United Kingdom2026-06-04
1034Canada2026-05-14
1035Japan2026-06-03
1036United Kingdom2026-05-14
1037Canada2026-06-04
1038Russia2026-05-17
1039Argentina2026-06-07
1040India2026-05-25
1041Germany2026-05-17
1042India2026-05-23
1043Russia2026-05-24
1044India2026-05-18
1045Canada2026-05-21
1046Russia2026-05-14
1047Argentina2026-06-10
1048Japan2026-06-01
1049Australia2026-06-08

On-Demand Data

NameIdCountryDate
Smith Glick1000Argentina2026-05-20
Silvio Slusarski1001United Kingdom2026-06-11
Johnson Sergi1002Japan2026-06-01
Ivar Paprocki1003Brazil2026-06-07
Morrow Ruta1004Germany2026-06-05
Juan Wieser1005Japan2026-05-17
Arvin Albares1006Russia2026-06-07
Arvin Albares1007Argentina2026-06-01
Faith Gillian1008Canada2026-05-23
Ashley Doe1009Russia2026-05-30
Ricardo Gaucho1010Spain2026-05-25
Nicolas Iturbide1011Australia2026-05-18
Francesco Shinko1012Germany2026-05-19
Mujtaba Nicka1013Spain2026-05-29
Alejandro Perin1014Russia2026-05-29
Faith Gillian1015India2026-05-24
Ashley Doe1016Japan2026-05-28
Wickens Nestle1017Argentina2026-06-06
Julie Stenseth1018Australia2026-05-29
Jones Vocelka1019Japan2026-06-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Antonio CaudyCanadaAnna Fali NEW
Adams MorascaAustraliaOnyama Limba QUALIFIED
Silvio SlusarskiItalyAsiya Javayant RENEWAL
Leja CaldareraRussiaAnna Fali QUALIFIED
Francesco ShinkoIndiaStephen Shaw PROPOSAL
Costa DilliardCanadaStephen Shaw UNQUALIFIED
Octavia MaletAustraliaIvan Magalhaes RENEWAL
James ButtGermanyXuxue Feng PROPOSAL
Leja CaldareraIndiaAnna Fali QUALIFIED
Darci PoquetteAustraliaOnyama Limba NEGOTIATION
Antonio CaudyFranceAnna Fali NEGOTIATION
James ButtGermanyStephen Shaw NEGOTIATION
Antonio CaudyAustraliaIoni Bowcher PROPOSAL
David DarakjyCanadaAsiya Javayant QUALIFIED
Octavia MaletSpainElwin Sharvill QUALIFIED
Wickens NestleGermanyStephen Shaw QUALIFIED
Kadeem FlosiRussiaAnna Fali RENEWAL
Mayumi KolmetzGermanyElwin Sharvill NEW
Chavez BriddickJapanOnyama Limba NEGOTIATION
Aika InouyeJapanIoni Bowcher NEGOTIATION
Morrow RutaGermanyAnna Fali UNQUALIFIED
Stacey MacleadSpainAsiya Javayant RENEWAL
Alejandro PerinGermanyXuxue Feng QUALIFIED
Munro FerenczAustraliaStephen Shaw NEW
Emily WhobreyRussiaElwin Sharvill RENEWAL
Mujtaba NickaGermanyAmy Elsner PROPOSAL
Claire TollnerBrazilIvan Magalhaes NEW
Leja CaldareraJapanAnna Fali RENEWAL
Ivar PaprockiRussiaXuxue Feng PROPOSAL
Juan WieserBrazilOnyama Limba UNQUALIFIED
Silvio SlusarskiSpainOnyama Limba NEGOTIATION
Jones VocelkaSpainAmy Elsner NEGOTIATION
Alejandro PerinArgentinaElwin Sharvill QUALIFIED
Adams MorascaFranceOnyama Limba RENEWAL
Juan WieserUnited KingdomIoni Bowcher RENEWAL
Maria MarrierIndiaAnna Fali RENEWAL
Juan WieserGermanyIoni Bowcher QUALIFIED
Aika InouyeCanadaAsiya Javayant QUALIFIED
Ashley DoeCanadaXuxue Feng RENEWAL
Clifford RimCanadaIvan Magalhaes 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>