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 InouyeUnited KingdomBernardo Dominic PROPOSAL
Adams MorascaJapanAsiya Javayant NEW
Nicolas IturbideCanadaAsiya Javayant RENEWAL
Chavez BriddickArgentinaBernardo Dominic PROPOSAL
Octavia MaletFranceIvan Magalhaes QUALIFIED
James ButtSpainOnyama Limba UNQUALIFIED
Stacey MacleadAustraliaAmy Elsner UNQUALIFIED
Darci PoquetteFranceIoni Bowcher NEGOTIATION
Claire TollnerUnited KingdomXuxue Feng PROPOSAL
Jones VocelkaBrazilAsiya Javayant NEGOTIATION
Maria MarrierGermanyAnna Fali NEW
Nicolas IturbideFranceAnna Fali QUALIFIED
Clifford RimBrazilIvan Magalhaes NEW
Salvatore StockhamAustraliaIvan Magalhaes RENEWAL
Jeanfrancois VenereBrazilBernardo Dominic NEGOTIATION
Aruna FigeroaFranceOnyama Limba PROPOSAL
Deepesh ChuiRussiaStephen Shaw PROPOSAL
David DarakjyFranceBernardo Dominic PROPOSAL
Isabel BowleyGermanyAnna Fali NEGOTIATION
Clifford RimBrazilAnna Fali QUALIFIED
Silvio SlusarskiItalyStephen Shaw QUALIFIED
Juan WieserArgentinaIvan Magalhaes PROPOSAL
Morrow RutaGermanyAsiya Javayant NEGOTIATION
Greenwood BologniaBrazilAmy Elsner UNQUALIFIED
Sinclair WaycottJapanBernardo Dominic NEW
Octavia MaletItalyIvan Magalhaes NEGOTIATION
Aika InouyeSpainBernardo Dominic PROPOSAL
Mayumi KolmetzAustraliaAsiya Javayant UNQUALIFIED
Stacey MacleadUnited KingdomIvan Magalhaes NEGOTIATION
Sinclair WaycottJapanAnna Fali RENEWAL
Arvin AlbaresGermanyStephen Shaw RENEWAL
Emily WhobreyIndiaAmy Elsner RENEWAL
Sinclair WaycottJapanAsiya Javayant QUALIFIED
Stacey MacleadJapanAmy Elsner QUALIFIED
Maisha RulapaughFranceElwin Sharvill QUALIFIED
Wickens NestleGermanyOnyama Limba NEW
Ashley DoeUnited KingdomStephen Shaw UNQUALIFIED
Izzy GarufiItalyAsiya Javayant UNQUALIFIED
Aruna FigeroaGermanyIvan Magalhaes QUALIFIED
Cody SaylorsRussiaIvan Magalhaes UNQUALIFIED
Kadeem FlosiItalyAmy Elsner PROPOSAL
Claire TollnerSpainIvan Magalhaes RENEWAL
Greenwood BologniaAustraliaAmy Elsner RENEWAL
Chavez BriddickRussiaAmy Elsner NEW
Antonio CaudyItalyStephen Shaw NEW
Nicolas IturbideSpainStephen Shaw NEGOTIATION
Francesco ShinkoIndiaOnyama Limba NEW
Emily WhobreyJapanXuxue Feng NEGOTIATION
Murillo MaletRussiaOnyama Limba QUALIFIED
Antonio CaudyFranceStephen Shaw QUALIFIED
Horizontal
NameCountryRepresentativeStatus
David DarakjyJapanAsiya Javayant UNQUALIFIED
Rodrigues CampainCanadaStephen Shaw PROPOSAL
Chavez BriddickAustraliaAsiya Javayant PROPOSAL
Octavia MaletUnited KingdomElwin Sharvill NEW
Ashley DoeFranceAsiya Javayant RENEWAL
Jeanfrancois VenereBrazilAsiya Javayant UNQUALIFIED
Emily WhobreyArgentinaBernardo Dominic RENEWAL
Jones VocelkaIndiaAnna Fali NEW
Aruna FigeroaBrazilIvan Magalhaes RENEWAL
Claire TollnerFranceAnna Fali NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leon OldroydCanada2026-04-24Feltz Printing Service NEGOTIATION92Stephen Shaw
1001Antonio CaudyIndia2026-04-30King, Christopher A Esq NEGOTIATION16Amy Elsner
1002Stacey MacleadArgentina2026-05-11Printing Dimensions NEW86Xuxue Feng
1003Aruna FigeroaGermany2026-04-21Chanay, Jeffrey A Esq NEW16Ioni Bowcher
1004Cody SaylorsJapan2026-04-30Dorl, James J Esq RENEWAL19Ivan Magalhaes
1005Adams MorascaRussia2026-04-14Feiner Bros PROPOSAL9Anna Fali
1006Isabel BowleyRussia2026-04-13Chanay, Jeffrey A Esq QUALIFIED39Amy Elsner
1007Emily WhobreyRussia2026-05-12Commercial Press UNQUALIFIED29Bernardo Dominic
1008Kaitlin OstroskyJapan2026-05-11Truhlar And Truhlar Attys UNQUALIFIED87Ioni Bowcher
1009Aruna FigeroaSpain2026-04-26Morlong Associates PROPOSAL64Bernardo Dominic
1010Munro FerenczArgentina2026-04-22Benton, John B Jr RENEWAL55Onyama Limba
1011Faith GillianItaly2026-04-26Morlong Associates NEGOTIATION96Ivan Magalhaes
1012Munro FerenczJapan2026-05-11Benton, John B Jr UNQUALIFIED78Xuxue Feng
1013Smith GlickBrazil2026-04-27Chemel, James L Cpa UNQUALIFIED15Ioni Bowcher
1014Rodrigues CampainBrazil2026-05-02Chemel, James L Cpa NEGOTIATION83Bernardo Dominic
1015Mayumi KolmetzArgentina2026-04-23Commercial Press NEW69Xuxue Feng
1016Francesco ShinkoUnited Kingdom2026-04-26Chanay, Jeffrey A Esq UNQUALIFIED38Elwin Sharvill
1017Misaki RoysterFrance2026-04-30Rousseaux, Michael Esq UNQUALIFIED97Ioni Bowcher
1018Juan WieserSpain2026-05-05Rousseaux, Michael Esq NEW62Ioni Bowcher
1019Wickens NestleJapan2026-05-01Feltz Printing Service NEGOTIATION87Amy Elsner
1020Clifford RimItaly2026-04-28Rousseaux, Michael Esq PROPOSAL39Xuxue Feng
1021Silvio SlusarskiRussia2026-05-10Rousseaux, Michael Esq NEGOTIATION66Anna Fali
1022Julie StensethSpain2026-04-21King, Christopher A Esq QUALIFIED92Xuxue Feng
1023Izzy GarufiSpain2026-04-22Buckley Miller Wright QUALIFIED43Ivan Magalhaes
1024Kaitlin OstroskyBrazil2026-05-03Rangoni Of Florence NEGOTIATION19Anna Fali
1025Salvatore StockhamGermany2026-04-19Morlong Associates QUALIFIED19Stephen Shaw
1026Arvin AlbaresItaly2026-04-22Chapman, Ross E Esq PROPOSAL7Elwin Sharvill
1027Adams MorascaIndia2026-04-26Rousseaux, Michael Esq NEGOTIATION44Asiya Javayant
1028Adams MorascaCanada2026-05-02Morlong Associates QUALIFIED34Elwin Sharvill
1029Jennifer AmigonRussia2026-04-28Buckley Miller Wright RENEWAL38Onyama Limba
1030Rodrigues CampainAustralia2026-04-17Buckley Miller Wright NEGOTIATION84Asiya Javayant
1031Sinclair WaycottIndia2026-04-22Benton, John B Jr RENEWAL89Stephen Shaw
1032Maria MarrierAustralia2026-05-10Printing Dimensions QUALIFIED28Anna Fali
1033Maisha RulapaughArgentina2026-04-28Chemel, James L Cpa PROPOSAL87Stephen Shaw
1034Octavia MaletSpain2026-05-05Commercial Press NEW85Onyama Limba
1035Stacey MacleadJapan2026-05-02Dorl, James J Esq NEGOTIATION19Onyama Limba
1036Emily WhobreyGermany2026-05-03Chapman, Ross E Esq UNQUALIFIED73Xuxue Feng
1037Ashley DoeJapan2026-04-22Morlong Associates QUALIFIED83Anna Fali
1038Stacey MacleadAustralia2026-04-28Commercial Press QUALIFIED64Ivan Magalhaes
1039Maisha RulapaughItaly2026-05-07Rousseaux, Michael Esq RENEWAL3Anna Fali
1040Chavez BriddickAustralia2026-04-24King, Christopher A Esq NEW30Ioni Bowcher
1041Smith GlickGermany2026-04-15Rangoni Of Florence QUALIFIED99Stephen Shaw
1042Wickens NestleIndia2026-05-12Feltz Printing Service UNQUALIFIED3Elwin Sharvill
1043James ButtBrazil2026-04-28Dorl, James J Esq NEW74Asiya Javayant
1044James ButtSpain2026-04-16Rousseaux, Michael Esq RENEWAL86Stephen Shaw
1045Ricardo GauchoIndia2026-05-03Buckley Miller Wright NEW75Xuxue Feng
1046Jennifer AmigonGermany2026-04-17Morlong Associates NEW4Ioni Bowcher
1047Julie StensethJapan2026-05-07Printing Dimensions NEW34Ioni Bowcher
1048Octavia MaletRussia2026-05-11Commercial Press NEGOTIATION6Bernardo Dominic
1049Wickens NestleArgentina2026-05-09Truhlar And Truhlar Attys NEW98Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
David DarakjyUnited KingdomElwin Sharvill PROPOSAL
Alejandro PerinFranceAsiya Javayant UNQUALIFIED
Salvatore StockhamUnited KingdomAsiya Javayant PROPOSAL
Antonio CaudyUnited KingdomStephen Shaw NEGOTIATION
Jefferson SchemmerIndiaBernardo Dominic NEW
Mujtaba NickaIndiaAnna Fali NEW
Antonio CaudySpainIoni Bowcher NEGOTIATION
Darci PoquetteGermanyIoni Bowcher UNQUALIFIED
Salvatore StockhamJapanAmy Elsner QUALIFIED
Octavia MaletRussiaAnna Fali NEW
Izzy GarufiIndiaAsiya Javayant PROPOSAL
Adams MorascaFranceAmy Elsner PROPOSAL
Kadeem FlosiFranceIvan Magalhaes PROPOSAL
Ivar PaprockiIndiaIvan Magalhaes NEGOTIATION
Cody SaylorsRussiaXuxue Feng NEW
Maisha RulapaughItalyIvan Magalhaes RENEWAL
Greenwood BologniaGermanyIoni Bowcher PROPOSAL
Izzy GarufiUnited KingdomAmy Elsner RENEWAL
Ricardo GauchoIndiaIoni Bowcher PROPOSAL
Aruna FigeroaArgentinaAnna Fali UNQUALIFIED
Isabel BowleySpainAmy Elsner NEGOTIATION
Jeanfrancois VenereAustraliaIoni Bowcher UNQUALIFIED
Silvio SlusarskiGermanyAmy Elsner QUALIFIED
Arvin AlbaresRussiaAnna Fali PROPOSAL
Greenwood BologniaBrazilBernardo Dominic PROPOSAL
Silvio SlusarskiBrazilBernardo Dominic RENEWAL
Jennifer AmigonGermanyBernardo Dominic PROPOSAL
Leja CaldareraGermanyXuxue Feng NEW
Cody SaylorsFranceOnyama Limba QUALIFIED
Julie StensethCanadaIvan Magalhaes RENEWAL
Darci PoquetteIndiaAnna Fali UNQUALIFIED
Izzy GarufiRussiaBernardo Dominic RENEWAL
Salvatore StockhamRussiaXuxue Feng NEW
Maria MarrierSpainAsiya Javayant RENEWAL
Darci PoquetteItalyAnna Fali UNQUALIFIED
Francesco ShinkoIndiaIoni Bowcher PROPOSAL
Greenwood BologniaUnited KingdomAmy Elsner NEW
Mayumi KolmetzItalyIvan Magalhaes RENEWAL
Leon OldroydSpainIoni Bowcher NEGOTIATION
Juan WieserJapanAsiya Javayant RENEWAL
Maria MarrierItalyOnyama Limba UNQUALIFIED
Aruna FigeroaArgentinaAsiya Javayant UNQUALIFIED
Juan WieserCanadaIoni Bowcher NEGOTIATION
Tony FollerBrazilXuxue Feng QUALIFIED
Murillo MaletFranceIoni Bowcher NEGOTIATION
Alejandro PerinArgentinaAmy Elsner NEGOTIATION
Stacey MacleadArgentinaOnyama Limba RENEWAL
Rodrigues CampainIndiaAsiya Javayant QUALIFIED
Maria MarrierJapanAmy Elsner RENEWAL
Aika InouyeIndiaAsiya Javayant PROPOSAL
Frozen Columns
Name
Kaitlin Ostrosky
Juan Wieser
Aruna Figeroa
Izzy Garufi
Murillo Malet
Maisha Rulapaugh
Clifford Rim
Octavia Malet
Jefferson Schemmer
Smith Glick
Salvatore Stockham
Deepesh Chui
Munro Ferencz
Darci Poquette
Sinclair Waycott
James Butt
Leja Caldarera
Morrow Ruta
Jefferson Schemmer
Leja Caldarera
Jefferson Schemmer
Leja Caldarera
Kadeem Flosi
Arvin Albares
Leon Oldroyd
Silvio Slusarski
David Darakjy
Aditya Kusko
Deepesh Chui
Aruna Figeroa
Leon Oldroyd
Ivar Paprocki
Izzy Garufi
Mujtaba Nicka
Deepesh Chui
Nicolas Iturbide
Salvatore Stockham
Emily Whobrey
Juan Wieser
Isabel Bowley
Silvio Slusarski
David Darakjy
Maria Marrier
Maisha Rulapaugh
Ashley Doe
Mayumi Kolmetz
Aruna Figeroa
Rodrigues Campain
Clifford Rim
Tony Foller
IdCountryDate
1000India2026-04-16
1001Argentina2026-04-19
1002Brazil2026-05-05
1003Spain2026-04-14
1004Spain2026-04-14
1005Russia2026-05-10
1006Japan2026-05-07
1007Australia2026-04-25
1008Australia2026-04-17
1009Canada2026-05-08
1010Japan2026-04-30
1011Argentina2026-04-17
1012Italy2026-04-28
1013Italy2026-04-26
1014Germany2026-04-15
1015Germany2026-04-20
1016India2026-05-11
1017United Kingdom2026-05-02
1018Japan2026-05-12
1019Germany2026-04-13
1020Argentina2026-04-13
1021Germany2026-04-29
1022Spain2026-05-09
1023United Kingdom2026-05-03
1024United Kingdom2026-05-09
1025Russia2026-04-15
1026Japan2026-04-13
1027Italy2026-04-13
1028Russia2026-05-04
1029Canada2026-04-14
1030India2026-04-24
1031Italy2026-05-09
1032France2026-04-22
1033Russia2026-04-16
1034France2026-05-10
1035Argentina2026-05-04
1036United Kingdom2026-04-14
1037United Kingdom2026-05-01
1038Argentina2026-05-04
1039Brazil2026-04-29
1040Spain2026-04-28
1041Argentina2026-04-30
1042France2026-05-11
1043India2026-04-24
1044Brazil2026-05-09
1045Australia2026-04-18
1046Australia2026-04-25
1047Australia2026-05-08
1048United Kingdom2026-04-30
1049Germany2026-04-18

On-Demand Data

NameIdCountryDate
Wickens Nestle1000Russia2026-04-17
Aditya Kusko1001Canada2026-05-11
Kaitlin Ostrosky1002Germany2026-04-15
Silvio Slusarski1003Russia2026-04-15
David Darakjy1004India2026-04-13
Chavez Briddick1005Germany2026-04-22
Adams Morasca1006Spain2026-04-13
Faith Gillian1007Argentina2026-05-11
Jennifer Amigon1008Argentina2026-04-17
Claire Tollner1009India2026-04-24
Munro Ferencz1010Russia2026-05-02
Isabel Bowley1011Germany2026-04-24
Jones Vocelka1012Australia2026-05-05
Arvin Albares1013Australia2026-05-12
Kaitlin Ostrosky1014Germany2026-05-12
Isabel Bowley1015Brazil2026-05-10
Faith Gillian1016Australia2026-04-22
Munro Ferencz1017United Kingdom2026-04-13
Octavia Malet1018Australia2026-04-14
Aditya Kusko1019Brazil2026-05-07
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mujtaba NickaAustraliaBernardo Dominic NEW
Smith GlickSpainAsiya Javayant NEW
Chavez BriddickUnited KingdomIoni Bowcher NEW
Claire TollnerRussiaAnna Fali RENEWAL
Emily WhobreyFranceXuxue Feng NEGOTIATION
Faith GillianCanadaAmy Elsner PROPOSAL
Chavez BriddickBrazilAmy Elsner PROPOSAL
Tony FollerGermanyBernardo Dominic UNQUALIFIED
Juan WieserFranceXuxue Feng NEW
Costa DilliardJapanAmy Elsner NEGOTIATION
Cody SaylorsIndiaAnna Fali NEW
Francesco ShinkoSpainIvan Magalhaes NEW
Francesco ShinkoIndiaAsiya Javayant UNQUALIFIED
Kadeem FlosiIndiaAmy Elsner PROPOSAL
Deepesh ChuiFranceIoni Bowcher NEGOTIATION
Aruna FigeroaCanadaElwin Sharvill NEGOTIATION
Jennifer AmigonBrazilElwin Sharvill NEW
Ricardo GauchoSpainAmy Elsner UNQUALIFIED
Maisha RulapaughItalyIvan Magalhaes RENEWAL
Julie StensethIndiaElwin Sharvill PROPOSAL
Claire TollnerFranceIoni Bowcher UNQUALIFIED
Alejandro PerinRussiaElwin Sharvill NEW
Stacey MacleadJapanAsiya Javayant UNQUALIFIED
Costa DilliardItalyOnyama Limba UNQUALIFIED
Leja CaldareraAustraliaXuxue Feng NEGOTIATION
Jennifer AmigonSpainStephen Shaw RENEWAL
David DarakjySpainBernardo Dominic RENEWAL
Juan WieserItalyStephen Shaw NEW
Aika InouyeJapanAmy Elsner RENEWAL
Aditya KuskoJapanOnyama Limba NEGOTIATION
Costa DilliardItalyAnna Fali PROPOSAL
Octavia MaletSpainOnyama Limba NEGOTIATION
Chavez BriddickIndiaAsiya Javayant PROPOSAL
James ButtCanadaAmy Elsner QUALIFIED
Julie StensethItalyXuxue Feng PROPOSAL
Isabel BowleyAustraliaAsiya Javayant UNQUALIFIED
Jennifer AmigonUnited KingdomAnna Fali RENEWAL
Aditya KuskoJapanXuxue Feng UNQUALIFIED
Adams MorascaJapanAmy Elsner NEW
David DarakjyCanadaXuxue Feng 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>