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
Kadeem FlosiAustraliaXuxue Feng NEGOTIATION
Cody SaylorsItalyOnyama Limba RENEWAL
Clifford RimGermanyElwin Sharvill NEW
Silvio SlusarskiCanadaOnyama Limba NEW
Ricardo GauchoGermanyAsiya Javayant NEGOTIATION
Jeanfrancois VenereFranceAmy Elsner PROPOSAL
Jefferson SchemmerJapanElwin Sharvill QUALIFIED
Faith GillianIndiaAmy Elsner PROPOSAL
Alejandro PerinJapanIoni Bowcher QUALIFIED
Tony FollerAustraliaElwin Sharvill NEGOTIATION
Aditya KuskoGermanyAmy Elsner UNQUALIFIED
Cody SaylorsAustraliaBernardo Dominic QUALIFIED
Izzy GarufiItalyAmy Elsner PROPOSAL
Adams MorascaRussiaIvan Magalhaes RENEWAL
Antonio CaudyJapanAmy Elsner PROPOSAL
Aika InouyeJapanIvan Magalhaes NEW
Aditya KuskoArgentinaXuxue Feng RENEWAL
Kaitlin OstroskyCanadaOnyama Limba QUALIFIED
Maisha RulapaughFranceAsiya Javayant NEGOTIATION
Aika InouyeCanadaAnna Fali UNQUALIFIED
Juan WieserFranceOnyama Limba PROPOSAL
Alejandro PerinSpainStephen Shaw PROPOSAL
Murillo MaletSpainOnyama Limba NEW
Misaki RoysterCanadaAsiya Javayant RENEWAL
Aika InouyeCanadaXuxue Feng PROPOSAL
Maria MarrierCanadaElwin Sharvill QUALIFIED
Munro FerenczJapanXuxue Feng NEGOTIATION
Jones VocelkaItalyXuxue Feng NEW
Maria MarrierArgentinaAnna Fali NEW
Darci PoquetteCanadaIoni Bowcher RENEWAL
James ButtGermanyAnna Fali PROPOSAL
Leon OldroydFranceAsiya Javayant RENEWAL
Mujtaba NickaBrazilAsiya Javayant NEGOTIATION
Leon OldroydAustraliaIvan Magalhaes RENEWAL
Johnson SergiBrazilIoni Bowcher NEW
Munro FerenczJapanAmy Elsner PROPOSAL
Rodrigues CampainCanadaAnna Fali QUALIFIED
Mayumi KolmetzIndiaAnna Fali RENEWAL
Greenwood BologniaSpainAnna Fali QUALIFIED
Smith GlickGermanyXuxue Feng NEGOTIATION
Adams MorascaFranceXuxue Feng UNQUALIFIED
David DarakjySpainBernardo Dominic NEGOTIATION
Ricardo GauchoRussiaAsiya Javayant QUALIFIED
Ivar PaprockiAustraliaStephen Shaw QUALIFIED
Morrow RutaJapanStephen Shaw NEGOTIATION
Rodrigues CampainIndiaIvan Magalhaes QUALIFIED
Smith GlickUnited KingdomBernardo Dominic RENEWAL
Greenwood BologniaItalyIvan Magalhaes QUALIFIED
Johnson SergiBrazilAmy Elsner RENEWAL
Julie StensethBrazilAmy Elsner RENEWAL
Horizontal
NameCountryRepresentativeStatus
James ButtSpainBernardo Dominic NEW
Munro FerenczCanadaAsiya Javayant UNQUALIFIED
Rodrigues CampainUnited KingdomElwin Sharvill RENEWAL
Izzy GarufiJapanBernardo Dominic NEGOTIATION
Jennifer AmigonUnited KingdomOnyama Limba NEW
Darci PoquetteAustraliaXuxue Feng NEGOTIATION
Chavez BriddickIndiaXuxue Feng UNQUALIFIED
Salvatore StockhamArgentinaAmy Elsner RENEWAL
Costa DilliardUnited KingdomXuxue Feng PROPOSAL
Aruna FigeroaSpainElwin Sharvill PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Tony FollerArgentina2026-05-23Feltz Printing Service NEW36Anna Fali
1001Julie StensethItaly2026-05-06Rangoni Of Florence UNQUALIFIED40Elwin Sharvill
1002Arvin AlbaresGermany2026-05-13Rousseaux, Michael Esq NEW97Xuxue Feng
1003Kaitlin OstroskyArgentina2026-04-28Chanay, Jeffrey A Esq QUALIFIED32Onyama Limba
1004Leon OldroydUnited Kingdom2026-04-24Benton, John B Jr QUALIFIED27Stephen Shaw
1005Jeanfrancois VenereJapan2026-05-05Rangoni Of Florence NEW37Elwin Sharvill
1006Ivar PaprockiBrazil2026-05-12Benton, John B Jr QUALIFIED41Xuxue Feng
1007Kaitlin OstroskyJapan2026-05-10Chapman, Ross E Esq UNQUALIFIED27Onyama Limba
1008Morrow RutaJapan2026-05-08Printing Dimensions NEW37Amy Elsner
1009Aditya KuskoJapan2026-05-03Printing Dimensions PROPOSAL55Onyama Limba
1010Jefferson SchemmerAustralia2026-04-28Benton, John B Jr NEGOTIATION0Amy Elsner
1011Julie StensethIndia2026-05-14Feiner Bros RENEWAL19Bernardo Dominic
1012Smith GlickGermany2026-05-10Dorl, James J Esq NEGOTIATION39Xuxue Feng
1013Munro FerenczAustralia2026-04-24Morlong Associates UNQUALIFIED57Ioni Bowcher
1014Antonio CaudyIndia2026-05-03Rangoni Of Florence NEGOTIATION18Anna Fali
1015Izzy GarufiBrazil2026-04-26Rousseaux, Michael Esq PROPOSAL64Onyama Limba
1016Sinclair WaycottArgentina2026-04-27Commercial Press NEW80Stephen Shaw
1017Deepesh ChuiJapan2026-05-02Rousseaux, Michael Esq NEW56Anna Fali
1018Nicolas IturbideArgentina2026-05-13Commercial Press QUALIFIED3Amy Elsner
1019Darci PoquetteIndia2026-05-07Morlong Associates NEGOTIATION7Elwin Sharvill
1020Wickens NestleArgentina2026-05-11Rangoni Of Florence NEW95Asiya Javayant
1021David DarakjyAustralia2026-04-25Truhlar And Truhlar Attys UNQUALIFIED2Elwin Sharvill
1022Rodrigues CampainSpain2026-05-06Chapman, Ross E Esq NEGOTIATION67Elwin Sharvill
1023Francesco ShinkoArgentina2026-05-12Chapman, Ross E Esq PROPOSAL10Asiya Javayant
1024Misaki RoysterCanada2026-05-04Dorl, James J Esq QUALIFIED60Xuxue Feng
1025Sinclair WaycottSpain2026-05-06Benton, John B Jr RENEWAL32Elwin Sharvill
1026Ricardo GauchoIndia2026-05-20Truhlar And Truhlar Attys QUALIFIED66Bernardo Dominic
1027Nicolas IturbideItaly2026-05-07Printing Dimensions UNQUALIFIED50Amy Elsner
1028Sinclair WaycottJapan2026-05-01Chanay, Jeffrey A Esq RENEWAL85Stephen Shaw
1029Johnson SergiArgentina2026-05-15Commercial Press RENEWAL49Amy Elsner
1030Julie StensethJapan2026-05-19Buckley Miller Wright RENEWAL33Onyama Limba
1031Munro FerenczBrazil2026-05-02Truhlar And Truhlar Attys UNQUALIFIED98Elwin Sharvill
1032Antonio CaudyCanada2026-05-09Truhlar And Truhlar Attys UNQUALIFIED1Anna Fali
1033Cody SaylorsSpain2026-04-24Chapman, Ross E Esq PROPOSAL54Bernardo Dominic
1034Adams MorascaAustralia2026-05-19Commercial Press RENEWAL32Xuxue Feng
1035Faith GillianGermany2026-05-11Benton, John B Jr RENEWAL32Stephen Shaw
1036Faith GillianFrance2026-05-13Truhlar And Truhlar Attys NEW71Ivan Magalhaes
1037Tony FollerAustralia2026-05-10Benton, John B Jr NEGOTIATION44Stephen Shaw
1038Izzy GarufiGermany2026-05-11Benton, John B Jr NEW85Bernardo Dominic
1039Tony FollerItaly2026-04-24Dorl, James J Esq QUALIFIED50Elwin Sharvill
1040Ricardo GauchoItaly2026-05-07Chapman, Ross E Esq QUALIFIED14Amy Elsner
1041Mayumi KolmetzGermany2026-05-11Commercial Press NEW22Bernardo Dominic
1042Octavia MaletBrazil2026-05-19Rousseaux, Michael Esq PROPOSAL27Ioni Bowcher
1043Aruna FigeroaGermany2026-04-28Printing Dimensions RENEWAL0Xuxue Feng
1044Nicolas IturbideItaly2026-05-01Buckley Miller Wright NEW30Onyama Limba
1045Ivar PaprockiCanada2026-05-12Chanay, Jeffrey A Esq RENEWAL68Asiya Javayant
1046Deepesh ChuiAustralia2026-04-30Benton, John B Jr NEW97Bernardo Dominic
1047Wickens NestleAustralia2026-05-09Chanay, Jeffrey A Esq NEGOTIATION49Elwin Sharvill
1048Maisha RulapaughUnited Kingdom2026-05-15King, Christopher A Esq QUALIFIED34Stephen Shaw
1049Claire TollnerFrance2026-04-29Buckley Miller Wright RENEWAL71Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Morrow RutaBrazilAsiya Javayant NEGOTIATION
Salvatore StockhamGermanyStephen Shaw RENEWAL
Faith GillianFranceAnna Fali UNQUALIFIED
James ButtRussiaStephen Shaw RENEWAL
Kaitlin OstroskyItalyAsiya Javayant RENEWAL
Morrow RutaSpainAmy Elsner RENEWAL
Aruna FigeroaArgentinaBernardo Dominic PROPOSAL
Leon OldroydSpainBernardo Dominic RENEWAL
Leja CaldareraJapanOnyama Limba QUALIFIED
Jeanfrancois VenereRussiaStephen Shaw PROPOSAL
Octavia MaletSpainAmy Elsner QUALIFIED
Murillo MaletIndiaElwin Sharvill RENEWAL
James ButtUnited KingdomAsiya Javayant NEGOTIATION
Rodrigues CampainItalyIvan Magalhaes NEGOTIATION
James ButtBrazilXuxue Feng UNQUALIFIED
Maisha RulapaughSpainAmy Elsner QUALIFIED
Jeanfrancois VenereArgentinaIvan Magalhaes NEW
Antonio CaudyArgentinaIvan Magalhaes NEGOTIATION
Faith GillianIndiaAmy Elsner PROPOSAL
Darci PoquetteCanadaStephen Shaw UNQUALIFIED
Aditya KuskoRussiaAmy Elsner UNQUALIFIED
Jones VocelkaAustraliaIoni Bowcher PROPOSAL
Aika InouyeGermanyAnna Fali NEGOTIATION
Alejandro PerinJapanAmy Elsner PROPOSAL
Isabel BowleyRussiaAmy Elsner QUALIFIED
Ivar PaprockiIndiaOnyama Limba RENEWAL
Johnson SergiArgentinaStephen Shaw UNQUALIFIED
Octavia MaletBrazilAsiya Javayant NEW
David DarakjyItalyBernardo Dominic NEGOTIATION
Ivar PaprockiAustraliaStephen Shaw QUALIFIED
Francesco ShinkoJapanAmy Elsner UNQUALIFIED
Ricardo GauchoIndiaOnyama Limba NEW
Jones VocelkaGermanyAmy Elsner UNQUALIFIED
Greenwood BologniaFranceAsiya Javayant PROPOSAL
Deepesh ChuiCanadaIvan Magalhaes NEGOTIATION
Francesco ShinkoRussiaAsiya Javayant NEW
Murillo MaletArgentinaAnna Fali NEGOTIATION
Aruna FigeroaArgentinaAmy Elsner QUALIFIED
Tony FollerSpainIvan Magalhaes PROPOSAL
James ButtRussiaStephen Shaw NEW
Jennifer AmigonAustraliaOnyama Limba RENEWAL
Sinclair WaycottUnited KingdomAmy Elsner QUALIFIED
Greenwood BologniaRussiaIvan Magalhaes NEGOTIATION
Rodrigues CampainSpainAnna Fali RENEWAL
Morrow RutaRussiaStephen Shaw NEW
Faith GillianRussiaIvan Magalhaes UNQUALIFIED
Deepesh ChuiJapanXuxue Feng RENEWAL
Chavez BriddickAustraliaElwin Sharvill QUALIFIED
Smith GlickAustraliaAnna Fali PROPOSAL
Sinclair WaycottBrazilXuxue Feng RENEWAL
Frozen Columns
Name
Isabel Bowley
Silvio Slusarski
Leja Caldarera
Cody Saylors
Ashley Doe
Deepesh Chui
Sinclair Waycott
Mujtaba Nicka
Wickens Nestle
Murillo Malet
Aika Inouye
Isabel Bowley
Murillo Malet
Chavez Briddick
Antonio Caudy
Cody Saylors
Julie Stenseth
Maria Marrier
Emily Whobrey
Darci Poquette
Kadeem Flosi
Jones Vocelka
Mujtaba Nicka
Kaitlin Ostrosky
Claire Tollner
Tony Foller
Mayumi Kolmetz
Greenwood Bolognia
Jennifer Amigon
Juan Wieser
Sinclair Waycott
Salvatore Stockham
Deepesh Chui
Jones Vocelka
Munro Ferencz
Juan Wieser
Ivar Paprocki
Smith Glick
Tony Foller
Chavez Briddick
Francesco Shinko
Tony Foller
Aditya Kusko
David Darakjy
Misaki Royster
Johnson Sergi
Aditya Kusko
Francesco Shinko
Rodrigues Campain
Leja Caldarera
IdCountryDate
1000Russia2026-05-08
1001France2026-05-16
1002Argentina2026-05-04
1003United Kingdom2026-05-21
1004Germany2026-05-18
1005France2026-04-30
1006Australia2026-05-02
1007Argentina2026-04-27
1008Argentina2026-05-06
1009Argentina2026-05-10
1010United Kingdom2026-05-23
1011Argentina2026-05-01
1012Russia2026-05-05
1013India2026-04-26
1014France2026-05-15
1015United Kingdom2026-05-03
1016Spain2026-05-04
1017Spain2026-05-09
1018Germany2026-05-01
1019Brazil2026-04-25
1020Brazil2026-05-04
1021Japan2026-05-02
1022United Kingdom2026-04-29
1023United Kingdom2026-05-22
1024Argentina2026-05-10
1025Japan2026-05-17
1026Russia2026-04-24
1027Spain2026-04-28
1028Italy2026-05-18
1029France2026-05-19
1030Japan2026-05-21
1031Argentina2026-05-20
1032Australia2026-05-03
1033Japan2026-05-07
1034India2026-05-04
1035Russia2026-05-18
1036United Kingdom2026-04-27
1037France2026-05-15
1038Australia2026-05-04
1039Russia2026-05-09
1040France2026-05-12
1041Japan2026-05-19
1042France2026-05-06
1043Canada2026-05-12
1044Russia2026-05-19
1045Italy2026-05-04
1046Canada2026-05-01
1047United Kingdom2026-04-28
1048Australia2026-05-10
1049Spain2026-05-07

On-Demand Data

NameIdCountryDate
Claire Tollner1000Germany2026-05-08
Ivar Paprocki1001Italy2026-05-11
Izzy Garufi1002United Kingdom2026-05-08
James Butt1003Russia2026-05-08
Octavia Malet1004Italy2026-05-04
Alejandro Perin1005France2026-04-28
Munro Ferencz1006France2026-05-15
Adams Morasca1007Russia2026-04-28
Juan Wieser1008Argentina2026-05-12
Julie Stenseth1009Brazil2026-05-01
Adams Morasca1010Germany2026-05-18
Leon Oldroyd1011Japan2026-05-18
Costa Dilliard1012Argentina2026-05-23
Ivar Paprocki1013Russia2026-05-04
Isabel Bowley1014Argentina2026-05-03
Johnson Sergi1015Australia2026-05-13
Ivar Paprocki1016Canada2026-05-15
Clifford Rim1017Argentina2026-05-17
Octavia Malet1018United Kingdom2026-05-13
Arvin Albares1019Japan2026-05-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Arvin AlbaresJapanXuxue Feng UNQUALIFIED
Nicolas IturbideArgentinaXuxue Feng NEW
Sinclair WaycottArgentinaXuxue Feng PROPOSAL
Sinclair WaycottItalyIoni Bowcher NEW
Ashley DoeArgentinaStephen Shaw PROPOSAL
Kaitlin OstroskyCanadaElwin Sharvill NEGOTIATION
Nicolas IturbideAustraliaStephen Shaw PROPOSAL
Julie StensethUnited KingdomIoni Bowcher PROPOSAL
Kadeem FlosiGermanyOnyama Limba UNQUALIFIED
Emily WhobreyIndiaIoni Bowcher RENEWAL
Costa DilliardSpainXuxue Feng PROPOSAL
Emily WhobreyArgentinaElwin Sharvill PROPOSAL
Ashley DoeFranceElwin Sharvill UNQUALIFIED
Silvio SlusarskiAustraliaOnyama Limba NEGOTIATION
Izzy GarufiJapanBernardo Dominic RENEWAL
Julie StensethGermanyIoni Bowcher NEW
Sinclair WaycottRussiaStephen Shaw QUALIFIED
Octavia MaletSpainBernardo Dominic PROPOSAL
Ivar PaprockiUnited KingdomAnna Fali RENEWAL
Smith GlickJapanOnyama Limba RENEWAL
Chavez BriddickSpainIoni Bowcher UNQUALIFIED
Alejandro PerinBrazilIvan Magalhaes QUALIFIED
Isabel BowleyCanadaAmy Elsner RENEWAL
Nicolas IturbideJapanAmy Elsner QUALIFIED
Ivar PaprockiIndiaAmy Elsner RENEWAL
Salvatore StockhamFranceIoni Bowcher PROPOSAL
Francesco ShinkoIndiaIoni Bowcher PROPOSAL
Izzy GarufiItalyAnna Fali NEGOTIATION
Darci PoquetteItalyIvan Magalhaes PROPOSAL
Ivar PaprockiAustraliaStephen Shaw QUALIFIED
Nicolas IturbideSpainBernardo Dominic NEW
Kadeem FlosiSpainOnyama Limba PROPOSAL
Faith GillianAustraliaXuxue Feng QUALIFIED
Greenwood BologniaAustraliaXuxue Feng NEW
Mayumi KolmetzAustraliaOnyama Limba UNQUALIFIED
Clifford RimAustraliaOnyama Limba NEW
Leja CaldareraGermanyAsiya Javayant NEGOTIATION
Wickens NestleIndiaXuxue Feng RENEWAL
Rodrigues CampainItalyXuxue Feng RENEWAL
Kadeem FlosiBrazilXuxue Feng PROPOSAL

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