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
Adams MorascaArgentinaAsiya Javayant NEGOTIATION
Jeanfrancois VenereJapanStephen Shaw NEGOTIATION
Morrow RutaBrazilElwin Sharvill NEGOTIATION
Aditya KuskoItalyBernardo Dominic QUALIFIED
Greenwood BologniaGermanyAnna Fali PROPOSAL
Cody SaylorsGermanyIoni Bowcher PROPOSAL
Kaitlin OstroskyAustraliaElwin Sharvill NEGOTIATION
Misaki RoysterUnited KingdomXuxue Feng NEGOTIATION
Juan WieserCanadaXuxue Feng NEW
Maria MarrierItalyAnna Fali PROPOSAL
Emily WhobreyUnited KingdomAnna Fali NEGOTIATION
Arvin AlbaresFranceBernardo Dominic PROPOSAL
Aruna FigeroaAustraliaBernardo Dominic NEW
Leja CaldareraFranceAsiya Javayant UNQUALIFIED
Deepesh ChuiCanadaBernardo Dominic NEGOTIATION
James ButtArgentinaAnna Fali NEW
Alejandro PerinRussiaOnyama Limba NEW
Aika InouyeFranceXuxue Feng UNQUALIFIED
Mayumi KolmetzBrazilStephen Shaw NEW
Johnson SergiArgentinaOnyama Limba RENEWAL
Aditya KuskoUnited KingdomIoni Bowcher NEGOTIATION
Julie StensethGermanyAnna Fali PROPOSAL
Mayumi KolmetzArgentinaBernardo Dominic QUALIFIED
Julie StensethUnited KingdomAsiya Javayant UNQUALIFIED
Munro FerenczBrazilElwin Sharvill RENEWAL
Alejandro PerinSpainOnyama Limba RENEWAL
Mujtaba NickaJapanIvan Magalhaes QUALIFIED
Julie StensethRussiaAmy Elsner UNQUALIFIED
Greenwood BologniaRussiaElwin Sharvill RENEWAL
Aditya KuskoItalyAnna Fali NEGOTIATION
Isabel BowleyUnited KingdomAsiya Javayant QUALIFIED
Antonio CaudyRussiaStephen Shaw RENEWAL
David DarakjyBrazilIvan Magalhaes NEW
Emily WhobreyBrazilAnna Fali QUALIFIED
Alejandro PerinAustraliaElwin Sharvill RENEWAL
Ashley DoeFranceOnyama Limba RENEWAL
Ivar PaprockiAustraliaElwin Sharvill NEW
Aditya KuskoArgentinaAsiya Javayant QUALIFIED
Izzy GarufiAustraliaIoni Bowcher RENEWAL
Maisha RulapaughArgentinaIoni Bowcher QUALIFIED
Arvin AlbaresUnited KingdomAsiya Javayant RENEWAL
Ricardo GauchoIndiaIvan Magalhaes PROPOSAL
Aruna FigeroaRussiaAmy Elsner RENEWAL
Aruna FigeroaBrazilAsiya Javayant PROPOSAL
Costa DilliardSpainIvan Magalhaes NEGOTIATION
Aditya KuskoJapanAmy Elsner UNQUALIFIED
Alejandro PerinBrazilBernardo Dominic UNQUALIFIED
Aika InouyeJapanStephen Shaw NEGOTIATION
Aruna FigeroaFranceXuxue Feng RENEWAL
Juan WieserRussiaAsiya Javayant NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Jennifer AmigonGermanyStephen Shaw NEW
Darci PoquetteBrazilOnyama Limba NEGOTIATION
Juan WieserUnited KingdomAnna Fali NEW
Ricardo GauchoRussiaAnna Fali QUALIFIED
Morrow RutaJapanAmy Elsner NEW
Deepesh ChuiFranceAsiya Javayant RENEWAL
Tony FollerUnited KingdomAmy Elsner NEGOTIATION
Tony FollerGermanyStephen Shaw PROPOSAL
James ButtAustraliaAmy Elsner QUALIFIED
Aruna FigeroaItalyAnna Fali NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ricardo GauchoFrance2026-06-03Commercial Press QUALIFIED14Elwin Sharvill
1001James ButtUnited Kingdom2026-05-24Feiner Bros UNQUALIFIED28Elwin Sharvill
1002Izzy GarufiItaly2026-05-11Buckley Miller Wright RENEWAL26Bernardo Dominic
1003Misaki RoysterFrance2026-05-22Printing Dimensions NEW0Ivan Magalhaes
1004Antonio CaudyJapan2026-05-15Benton, John B Jr NEGOTIATION35Amy Elsner
1005Mayumi KolmetzRussia2026-05-26Benton, John B Jr NEW32Ivan Magalhaes
1006Sinclair WaycottCanada2026-05-24King, Christopher A Esq QUALIFIED55Bernardo Dominic
1007Stacey MacleadCanada2026-05-20Rousseaux, Michael Esq PROPOSAL24Asiya Javayant
1008Morrow RutaAustralia2026-06-02Chanay, Jeffrey A Esq NEGOTIATION42Elwin Sharvill
1009Rodrigues CampainFrance2026-06-02Printing Dimensions PROPOSAL68Amy Elsner
1010Cody SaylorsJapan2026-05-27Dorl, James J Esq UNQUALIFIED52Ioni Bowcher
1011Jefferson SchemmerAustralia2026-05-29Rangoni Of Florence RENEWAL16Ivan Magalhaes
1012Leja CaldareraSpain2026-05-17Truhlar And Truhlar Attys QUALIFIED1Amy Elsner
1013Ivar PaprockiJapan2026-05-24Rousseaux, Michael Esq QUALIFIED59Ivan Magalhaes
1014Deepesh ChuiGermany2026-05-18Benton, John B Jr UNQUALIFIED70Bernardo Dominic
1015Rodrigues CampainGermany2026-06-02Printing Dimensions RENEWAL7Stephen Shaw
1016Claire TollnerItaly2026-05-13Chemel, James L Cpa PROPOSAL55Bernardo Dominic
1017Aika InouyeSpain2026-06-04Dorl, James J Esq QUALIFIED34Xuxue Feng
1018Misaki RoysterBrazil2026-05-24Morlong Associates PROPOSAL6Xuxue Feng
1019Maria MarrierGermany2026-05-16Buckley Miller Wright PROPOSAL35Ivan Magalhaes
1020Silvio SlusarskiRussia2026-05-29Printing Dimensions NEW96Ioni Bowcher
1021Mujtaba NickaCanada2026-05-25King, Christopher A Esq RENEWAL31Xuxue Feng
1022Nicolas IturbideBrazil2026-06-02Chanay, Jeffrey A Esq PROPOSAL42Amy Elsner
1023Adams MorascaRussia2026-05-26Chapman, Ross E Esq PROPOSAL6Amy Elsner
1024Stacey MacleadUnited Kingdom2026-05-16Commercial Press RENEWAL35Bernardo Dominic
1025Juan WieserUnited Kingdom2026-05-23Feltz Printing Service RENEWAL38Onyama Limba
1026Deepesh ChuiRussia2026-06-05Buckley Miller Wright PROPOSAL25Xuxue Feng
1027Cody SaylorsFrance2026-05-25Benton, John B Jr NEW80Amy Elsner
1028Ivar PaprockiItaly2026-05-19Benton, John B Jr UNQUALIFIED71Elwin Sharvill
1029Stacey MacleadBrazil2026-05-30Chemel, James L Cpa PROPOSAL10Amy Elsner
1030Stacey MacleadFrance2026-06-04Morlong Associates UNQUALIFIED86Ivan Magalhaes
1031Ricardo GauchoCanada2026-05-25Rousseaux, Michael Esq NEGOTIATION29Asiya Javayant
1032Kaitlin OstroskyAustralia2026-06-09Rangoni Of Florence UNQUALIFIED31Ivan Magalhaes
1033Ricardo GauchoAustralia2026-05-31Morlong Associates QUALIFIED35Stephen Shaw
1034Claire TollnerFrance2026-06-04Chanay, Jeffrey A Esq PROPOSAL62Amy Elsner
1035Wickens NestleArgentina2026-06-02Printing Dimensions PROPOSAL15Ioni Bowcher
1036Salvatore StockhamBrazil2026-05-13Chemel, James L Cpa QUALIFIED72Anna Fali
1037Adams MorascaJapan2026-06-07Feltz Printing Service NEGOTIATION5Bernardo Dominic
1038Cody SaylorsItaly2026-05-11Feltz Printing Service PROPOSAL78Amy Elsner
1039Jefferson SchemmerGermany2026-06-01Rousseaux, Michael Esq RENEWAL35Bernardo Dominic
1040Leja CaldareraJapan2026-05-23Dorl, James J Esq RENEWAL98Xuxue Feng
1041Antonio CaudySpain2026-05-26Rangoni Of Florence RENEWAL57Asiya Javayant
1042Greenwood BologniaGermany2026-06-09Benton, John B Jr NEGOTIATION67Ivan Magalhaes
1043Julie StensethRussia2026-05-11Printing Dimensions RENEWAL63Onyama Limba
1044Jones VocelkaGermany2026-05-18Feltz Printing Service PROPOSAL98Ioni Bowcher
1045James ButtArgentina2026-05-30Rangoni Of Florence RENEWAL67Asiya Javayant
1046Smith GlickBrazil2026-06-07Chemel, James L Cpa NEGOTIATION78Onyama Limba
1047Mayumi KolmetzArgentina2026-05-11Morlong Associates QUALIFIED21Bernardo Dominic
1048Ricardo GauchoUnited Kingdom2026-05-21Printing Dimensions RENEWAL36Onyama Limba
1049Juan WieserGermany2026-05-18Feiner Bros NEW92Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Isabel BowleyGermanyIvan Magalhaes RENEWAL
Aika InouyeJapanAmy Elsner NEGOTIATION
Mujtaba NickaAustraliaAmy Elsner NEW
Julie StensethItalyXuxue Feng NEGOTIATION
Arvin AlbaresItalyStephen Shaw RENEWAL
Maria MarrierSpainAsiya Javayant NEGOTIATION
Wickens NestleJapanIoni Bowcher QUALIFIED
Costa DilliardAustraliaAnna Fali PROPOSAL
Chavez BriddickUnited KingdomOnyama Limba RENEWAL
Izzy GarufiRussiaAnna Fali PROPOSAL
Leja CaldareraArgentinaXuxue Feng NEW
Stacey MacleadItalyStephen Shaw QUALIFIED
Mujtaba NickaBrazilElwin Sharvill QUALIFIED
Darci PoquetteAustraliaStephen Shaw NEW
Aika InouyeRussiaBernardo Dominic UNQUALIFIED
Clifford RimIndiaAmy Elsner RENEWAL
Jeanfrancois VenereFranceBernardo Dominic RENEWAL
Kadeem FlosiCanadaAnna Fali QUALIFIED
Arvin AlbaresJapanIvan Magalhaes QUALIFIED
Mayumi KolmetzIndiaIvan Magalhaes NEGOTIATION
Isabel BowleyJapanAsiya Javayant RENEWAL
Aruna FigeroaRussiaStephen Shaw NEGOTIATION
Alejandro PerinJapanAsiya Javayant NEGOTIATION
Silvio SlusarskiFranceIvan Magalhaes NEGOTIATION
Greenwood BologniaFranceAmy Elsner RENEWAL
Leon OldroydFranceAnna Fali NEW
Leon OldroydGermanyIvan Magalhaes NEGOTIATION
Tony FollerGermanyBernardo Dominic NEGOTIATION
Maria MarrierIndiaOnyama Limba RENEWAL
Greenwood BologniaGermanyIoni Bowcher NEW
David DarakjyRussiaIvan Magalhaes RENEWAL
Sinclair WaycottIndiaBernardo Dominic RENEWAL
Antonio CaudyFranceOnyama Limba QUALIFIED
Juan WieserFranceIoni Bowcher NEGOTIATION
Octavia MaletUnited KingdomOnyama Limba QUALIFIED
Francesco ShinkoRussiaElwin Sharvill UNQUALIFIED
Stacey MacleadSpainAmy Elsner RENEWAL
Darci PoquetteUnited KingdomXuxue Feng RENEWAL
Antonio CaudyAustraliaAmy Elsner RENEWAL
Smith GlickSpainElwin Sharvill NEGOTIATION
Clifford RimRussiaElwin Sharvill QUALIFIED
Octavia MaletItalyXuxue Feng RENEWAL
Octavia MaletUnited KingdomIoni Bowcher NEW
Francesco ShinkoJapanBernardo Dominic NEW
Costa DilliardIndiaXuxue Feng NEGOTIATION
Jefferson SchemmerUnited KingdomIoni Bowcher UNQUALIFIED
Greenwood BologniaRussiaStephen Shaw PROPOSAL
Ricardo GauchoAustraliaStephen Shaw PROPOSAL
Murillo MaletJapanAmy Elsner RENEWAL
Nicolas IturbideJapanAsiya Javayant UNQUALIFIED
Frozen Columns
Name
Aditya Kusko
Misaki Royster
Kaitlin Ostrosky
Isabel Bowley
Ashley Doe
Julie Stenseth
Maria Marrier
Stacey Maclead
Chavez Briddick
Nicolas Iturbide
Leon Oldroyd
Chavez Briddick
Jeanfrancois Venere
Claire Tollner
Munro Ferencz
Kaitlin Ostrosky
Leon Oldroyd
Maria Marrier
Cody Saylors
Aika Inouye
Antonio Caudy
Morrow Ruta
Aditya Kusko
Johnson Sergi
Francesco Shinko
Mayumi Kolmetz
Maria Marrier
Deepesh Chui
Antonio Caudy
Darci Poquette
Smith Glick
Antonio Caudy
Aika Inouye
Ashley Doe
James Butt
Aika Inouye
Jefferson Schemmer
Aruna Figeroa
Kaitlin Ostrosky
Aruna Figeroa
Nicolas Iturbide
Greenwood Bolognia
Rodrigues Campain
Costa Dilliard
Jeanfrancois Venere
Kaitlin Ostrosky
Wickens Nestle
Maria Marrier
Smith Glick
James Butt
IdCountryDate
1000France2026-05-30
1001Germany2026-05-20
1002France2026-05-16
1003Australia2026-06-03
1004India2026-05-30
1005Brazil2026-05-31
1006Canada2026-05-11
1007Canada2026-05-19
1008France2026-05-27
1009Brazil2026-05-28
1010Russia2026-06-08
1011Brazil2026-05-19
1012Spain2026-06-09
1013Japan2026-06-05
1014Argentina2026-05-12
1015India2026-06-01
1016United Kingdom2026-05-13
1017Germany2026-05-22
1018Brazil2026-05-25
1019Australia2026-06-01
1020Russia2026-05-19
1021France2026-06-04
1022Japan2026-05-18
1023Spain2026-05-17
1024Argentina2026-06-08
1025Japan2026-05-15
1026Brazil2026-06-01
1027France2026-06-09
1028United Kingdom2026-05-22
1029Italy2026-05-24
1030Italy2026-05-12
1031Spain2026-05-30
1032Spain2026-05-21
1033France2026-05-15
1034Australia2026-05-14
1035Canada2026-05-31
1036Argentina2026-05-29
1037Germany2026-06-06
1038Russia2026-05-30
1039Italy2026-05-29
1040Germany2026-06-07
1041Australia2026-05-11
1042Argentina2026-05-25
1043France2026-05-31
1044Russia2026-05-26
1045India2026-05-21
1046India2026-05-17
1047India2026-06-05
1048Australia2026-05-18
1049Brazil2026-05-21

On-Demand Data

NameIdCountryDate
Chavez Briddick1000Germany2026-05-19
Silvio Slusarski1001Italy2026-05-26
Jones Vocelka1002France2026-05-18
Adams Morasca1003Brazil2026-05-23
Kaitlin Ostrosky1004Australia2026-05-13
Maria Marrier1005Spain2026-06-07
Maisha Rulapaugh1006Japan2026-05-13
Misaki Royster1007France2026-06-09
Deepesh Chui1008United Kingdom2026-05-19
Maria Marrier1009Japan2026-05-11
Costa Dilliard1010Japan2026-06-04
Mayumi Kolmetz1011Canada2026-06-03
Murillo Malet1012Japan2026-05-29
Stacey Maclead1013Russia2026-05-13
Alejandro Perin1014France2026-05-18
Sinclair Waycott1015Russia2026-05-24
Smith Glick1016Canada2026-06-07
Misaki Royster1017India2026-05-23
Salvatore Stockham1018Russia2026-06-09
Deepesh Chui1019Japan2026-06-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Wickens NestleGermanyAnna Fali PROPOSAL
Johnson SergiJapanIvan Magalhaes NEW
Aditya KuskoArgentinaElwin Sharvill UNQUALIFIED
Faith GillianIndiaXuxue Feng NEW
Aika InouyeRussiaBernardo Dominic PROPOSAL
Maisha RulapaughItalyBernardo Dominic RENEWAL
Aruna FigeroaCanadaAsiya Javayant UNQUALIFIED
Tony FollerCanadaAsiya Javayant NEGOTIATION
Jennifer AmigonCanadaOnyama Limba RENEWAL
Sinclair WaycottArgentinaIoni Bowcher NEW
Francesco ShinkoItalyOnyama Limba NEGOTIATION
Juan WieserUnited KingdomIvan Magalhaes NEGOTIATION
Izzy GarufiSpainBernardo Dominic NEW
Wickens NestleSpainAsiya Javayant NEW
Leon OldroydGermanyAsiya Javayant QUALIFIED
Stacey MacleadSpainAmy Elsner NEGOTIATION
Smith GlickItalyAnna Fali UNQUALIFIED
Murillo MaletItalyIoni Bowcher PROPOSAL
Emily WhobreyBrazilStephen Shaw PROPOSAL
Rodrigues CampainSpainOnyama Limba NEGOTIATION
Cody SaylorsFranceXuxue Feng NEW
Julie StensethGermanyAsiya Javayant RENEWAL
Juan WieserIndiaIvan Magalhaes RENEWAL
Stacey MacleadFranceOnyama Limba UNQUALIFIED
Maisha RulapaughBrazilOnyama Limba NEW
Ivar PaprockiGermanyElwin Sharvill PROPOSAL
Greenwood BologniaGermanyAnna Fali NEGOTIATION
Antonio CaudyBrazilXuxue Feng NEW
Murillo MaletItalyAmy Elsner QUALIFIED
Aruna FigeroaBrazilAmy Elsner NEGOTIATION
Rodrigues CampainFranceElwin Sharvill RENEWAL
Wickens NestleItalyStephen Shaw NEW
Munro FerenczSpainIvan Magalhaes QUALIFIED
Ashley DoeFranceStephen Shaw RENEWAL
Morrow RutaAustraliaAsiya Javayant RENEWAL
Alejandro PerinGermanyAsiya Javayant PROPOSAL
Nicolas IturbideIndiaAmy Elsner QUALIFIED
Sinclair WaycottAustraliaAsiya Javayant NEGOTIATION
Arvin AlbaresItalyAsiya Javayant NEW
James ButtAustraliaAmy Elsner 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>