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 MorascaFranceElwin Sharvill RENEWAL
Clifford RimUnited KingdomIoni Bowcher QUALIFIED
Salvatore StockhamBrazilAsiya Javayant NEGOTIATION
Mujtaba NickaGermanyElwin Sharvill QUALIFIED
Maria MarrierUnited KingdomBernardo Dominic UNQUALIFIED
Ivar PaprockiJapanXuxue Feng PROPOSAL
Stacey MacleadFranceBernardo Dominic UNQUALIFIED
Alejandro PerinArgentinaElwin Sharvill NEGOTIATION
Mujtaba NickaSpainAmy Elsner QUALIFIED
Stacey MacleadRussiaIoni Bowcher RENEWAL
Aditya KuskoUnited KingdomIoni Bowcher RENEWAL
Francesco ShinkoBrazilIoni Bowcher NEW
James ButtIndiaBernardo Dominic RENEWAL
Morrow RutaFranceStephen Shaw RENEWAL
Munro FerenczUnited KingdomAnna Fali QUALIFIED
Aditya KuskoIndiaAnna Fali NEGOTIATION
Julie StensethRussiaAmy Elsner NEGOTIATION
Clifford RimItalyAnna Fali NEW
Maisha RulapaughUnited KingdomAsiya Javayant PROPOSAL
Wickens NestleSpainXuxue Feng UNQUALIFIED
Smith GlickFranceAmy Elsner NEW
Maria MarrierArgentinaAnna Fali QUALIFIED
Alejandro PerinRussiaOnyama Limba NEGOTIATION
Rodrigues CampainUnited KingdomOnyama Limba QUALIFIED
David DarakjyBrazilAsiya Javayant RENEWAL
Jennifer AmigonIndiaStephen Shaw QUALIFIED
Kadeem FlosiItalyAmy Elsner NEGOTIATION
Alejandro PerinAustraliaElwin Sharvill NEGOTIATION
Costa DilliardBrazilBernardo Dominic NEW
Faith GillianSpainBernardo Dominic NEW
Sinclair WaycottCanadaStephen Shaw UNQUALIFIED
Octavia MaletItalyOnyama Limba NEW
Octavia MaletItalyIoni Bowcher QUALIFIED
Sinclair WaycottArgentinaOnyama Limba NEGOTIATION
Antonio CaudyAustraliaXuxue Feng PROPOSAL
Maria MarrierGermanyElwin Sharvill QUALIFIED
Julie StensethAustraliaIvan Magalhaes RENEWAL
Juan WieserCanadaOnyama Limba UNQUALIFIED
Murillo MaletItalyAnna Fali QUALIFIED
Claire TollnerGermanyXuxue Feng NEW
Chavez BriddickFranceBernardo Dominic PROPOSAL
Alejandro PerinUnited KingdomElwin Sharvill UNQUALIFIED
Misaki RoysterItalyElwin Sharvill UNQUALIFIED
Kaitlin OstroskyArgentinaElwin Sharvill RENEWAL
Ivar PaprockiSpainAsiya Javayant QUALIFIED
Clifford RimJapanStephen Shaw NEGOTIATION
Juan WieserItalyIvan Magalhaes NEGOTIATION
Isabel BowleyArgentinaAnna Fali UNQUALIFIED
Munro FerenczJapanAnna Fali NEW
Ricardo GauchoCanadaIvan Magalhaes PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Alejandro PerinItalyAsiya Javayant UNQUALIFIED
Claire TollnerUnited KingdomAnna Fali UNQUALIFIED
Nicolas IturbideRussiaElwin Sharvill QUALIFIED
Julie StensethCanadaElwin Sharvill NEGOTIATION
Clifford RimArgentinaXuxue Feng NEGOTIATION
Aditya KuskoItalyIvan Magalhaes PROPOSAL
Chavez BriddickCanadaAmy Elsner PROPOSAL
Stacey MacleadItalyXuxue Feng NEW
Ashley DoeIndiaStephen Shaw UNQUALIFIED
Antonio CaudyJapanAmy Elsner QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Cody SaylorsSpain2026-04-06Rangoni Of Florence QUALIFIED98Amy Elsner
1001Cody SaylorsFrance2026-05-02Benton, John B Jr UNQUALIFIED50Ivan Magalhaes
1002Aruna FigeroaGermany2026-04-22Benton, John B Jr PROPOSAL1Amy Elsner
1003Ivar PaprockiAustralia2026-04-15Buckley Miller Wright PROPOSAL19Xuxue Feng
1004Silvio SlusarskiArgentina2026-04-12Benton, John B Jr UNQUALIFIED35Stephen Shaw
1005Munro FerenczBrazil2026-04-24Chemel, James L Cpa NEGOTIATION67Amy Elsner
1006Octavia MaletItaly2026-04-23Morlong Associates RENEWAL95Onyama Limba
1007Claire TollnerIndia2026-04-11Commercial Press RENEWAL68Ivan Magalhaes
1008Kadeem FlosiAustralia2026-04-09Feltz Printing Service NEGOTIATION93Xuxue Feng
1009Juan WieserGermany2026-04-03Benton, John B Jr NEW36Anna Fali
1010Jeanfrancois VenereBrazil2026-04-04Chapman, Ross E Esq RENEWAL57Ioni Bowcher
1011Julie StensethGermany2026-04-03Chapman, Ross E Esq RENEWAL53Ivan Magalhaes
1012Aika InouyeRussia2026-04-22Benton, John B Jr NEW35Anna Fali
1013Murillo MaletJapan2026-04-27King, Christopher A Esq PROPOSAL87Onyama Limba
1014Aditya KuskoItaly2026-04-20Chapman, Ross E Esq PROPOSAL75Amy Elsner
1015Julie StensethItaly2026-04-24Chanay, Jeffrey A Esq QUALIFIED26Xuxue Feng
1016Wickens NestleArgentina2026-04-20Morlong Associates PROPOSAL70Stephen Shaw
1017Octavia MaletUnited Kingdom2026-04-17Benton, John B Jr QUALIFIED52Elwin Sharvill
1018David DarakjyIndia2026-04-15Morlong Associates QUALIFIED61Onyama Limba
1019Izzy GarufiItaly2026-04-15Chapman, Ross E Esq NEGOTIATION93Stephen Shaw
1020James ButtRussia2026-04-10Chemel, James L Cpa RENEWAL11Onyama Limba
1021Ricardo GauchoGermany2026-04-06Rangoni Of Florence PROPOSAL50Stephen Shaw
1022Kadeem FlosiAustralia2026-04-25Rousseaux, Michael Esq RENEWAL79Ioni Bowcher
1023Kadeem FlosiArgentina2026-04-06Buckley Miller Wright UNQUALIFIED40Ivan Magalhaes
1024Chavez BriddickBrazil2026-04-15Benton, John B Jr NEW1Asiya Javayant
1025Clifford RimJapan2026-04-19Rousseaux, Michael Esq PROPOSAL37Asiya Javayant
1026Kadeem FlosiAustralia2026-04-23Benton, John B Jr QUALIFIED47Ioni Bowcher
1027Costa DilliardIndia2026-04-25Morlong Associates NEW61Asiya Javayant
1028Aruna FigeroaItaly2026-04-15Dorl, James J Esq NEGOTIATION49Asiya Javayant
1029Maisha RulapaughFrance2026-04-28Dorl, James J Esq NEW68Asiya Javayant
1030Alejandro PerinSpain2026-04-11Chanay, Jeffrey A Esq NEGOTIATION45Elwin Sharvill
1031Cody SaylorsBrazil2026-04-03Buckley Miller Wright UNQUALIFIED98Elwin Sharvill
1032Izzy GarufiRussia2026-04-29Buckley Miller Wright QUALIFIED58Asiya Javayant
1033Isabel BowleyGermany2026-04-05Printing Dimensions RENEWAL74Xuxue Feng
1034David DarakjyRussia2026-04-12Benton, John B Jr PROPOSAL2Amy Elsner
1035Maria MarrierIndia2026-04-19Feiner Bros RENEWAL26Asiya Javayant
1036Emily WhobreyFrance2026-04-28Printing Dimensions UNQUALIFIED4Stephen Shaw
1037Silvio SlusarskiIndia2026-04-15Buckley Miller Wright PROPOSAL36Asiya Javayant
1038Tony FollerUnited Kingdom2026-04-18Chanay, Jeffrey A Esq PROPOSAL22Anna Fali
1039Maria MarrierRussia2026-04-12Printing Dimensions NEW53Asiya Javayant
1040Greenwood BologniaArgentina2026-04-06Feiner Bros RENEWAL4Ivan Magalhaes
1041Adams MorascaSpain2026-04-17Chemel, James L Cpa NEW95Stephen Shaw
1042Ashley DoeSpain2026-04-19Benton, John B Jr RENEWAL79Ioni Bowcher
1043Mujtaba NickaFrance2026-04-27Feltz Printing Service PROPOSAL40Ioni Bowcher
1044Izzy GarufiArgentina2026-04-18Rousseaux, Michael Esq QUALIFIED61Xuxue Feng
1045Aruna FigeroaUnited Kingdom2026-04-24Benton, John B Jr RENEWAL35Stephen Shaw
1046Kaitlin OstroskyBrazil2026-04-30Feltz Printing Service PROPOSAL74Ivan Magalhaes
1047Johnson SergiCanada2026-05-01King, Christopher A Esq RENEWAL72Amy Elsner
1048David DarakjyArgentina2026-04-28Benton, John B Jr QUALIFIED9Elwin Sharvill
1049Antonio CaudySpain2026-04-11Benton, John B Jr UNQUALIFIED18Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Silvio SlusarskiSpainOnyama Limba QUALIFIED
Chavez BriddickBrazilBernardo Dominic UNQUALIFIED
Morrow RutaIndiaXuxue Feng RENEWAL
Cody SaylorsUnited KingdomAmy Elsner RENEWAL
Jones VocelkaRussiaBernardo Dominic QUALIFIED
Cody SaylorsFranceElwin Sharvill UNQUALIFIED
Mayumi KolmetzAustraliaStephen Shaw NEGOTIATION
Wickens NestleIndiaXuxue Feng UNQUALIFIED
Jefferson SchemmerArgentinaAnna Fali UNQUALIFIED
Ivar PaprockiAustraliaIoni Bowcher QUALIFIED
Aditya KuskoArgentinaElwin Sharvill NEGOTIATION
Costa DilliardGermanyXuxue Feng NEW
Arvin AlbaresArgentinaElwin Sharvill UNQUALIFIED
Claire TollnerItalyIoni Bowcher PROPOSAL
Julie StensethUnited KingdomBernardo Dominic UNQUALIFIED
Misaki RoysterSpainAmy Elsner RENEWAL
Mayumi KolmetzJapanBernardo Dominic PROPOSAL
Nicolas IturbideSpainBernardo Dominic QUALIFIED
Izzy GarufiSpainXuxue Feng UNQUALIFIED
Munro FerenczJapanOnyama Limba QUALIFIED
Nicolas IturbideArgentinaIoni Bowcher NEGOTIATION
Jennifer AmigonSpainStephen Shaw NEGOTIATION
Aika InouyeItalyIoni Bowcher QUALIFIED
Adams MorascaAustraliaAnna Fali NEW
Nicolas IturbideGermanyIoni Bowcher NEGOTIATION
Murillo MaletIndiaBernardo Dominic PROPOSAL
Mayumi KolmetzArgentinaIoni Bowcher RENEWAL
Jones VocelkaFranceOnyama Limba RENEWAL
Leon OldroydGermanyAmy Elsner QUALIFIED
Cody SaylorsBrazilAmy Elsner PROPOSAL
Octavia MaletJapanStephen Shaw NEW
Adams MorascaItalyOnyama Limba NEW
Maria MarrierJapanStephen Shaw NEW
Adams MorascaIndiaIvan Magalhaes NEW
Nicolas IturbideIndiaBernardo Dominic PROPOSAL
Juan WieserSpainAmy Elsner PROPOSAL
Aika InouyeRussiaAsiya Javayant PROPOSAL
Chavez BriddickGermanyAsiya Javayant NEGOTIATION
Morrow RutaRussiaAmy Elsner NEW
Munro FerenczItalyXuxue Feng UNQUALIFIED
Antonio CaudyArgentinaIoni Bowcher RENEWAL
Mujtaba NickaRussiaOnyama Limba NEW
James ButtArgentinaAsiya Javayant RENEWAL
Julie StensethBrazilBernardo Dominic PROPOSAL
Misaki RoysterUnited KingdomIvan Magalhaes NEW
Isabel BowleyAustraliaAnna Fali NEW
Morrow RutaArgentinaAnna Fali NEW
Wickens NestleUnited KingdomAmy Elsner UNQUALIFIED
Stacey MacleadFranceIvan Magalhaes QUALIFIED
James ButtItalyElwin Sharvill NEGOTIATION
Frozen Columns
Name
Silvio Slusarski
Ashley Doe
Cody Saylors
Murillo Malet
Johnson Sergi
Ivar Paprocki
Costa Dilliard
Kaitlin Ostrosky
Mayumi Kolmetz
Alejandro Perin
Francesco Shinko
Clifford Rim
Julie Stenseth
Darci Poquette
Aruna Figeroa
Sinclair Waycott
Mayumi Kolmetz
Nicolas Iturbide
Mayumi Kolmetz
Salvatore Stockham
Ricardo Gaucho
Mujtaba Nicka
Murillo Malet
Ashley Doe
Aruna Figeroa
Smith Glick
Aruna Figeroa
Jeanfrancois Venere
Jefferson Schemmer
Silvio Slusarski
Greenwood Bolognia
Ivar Paprocki
Chavez Briddick
Costa Dilliard
Nicolas Iturbide
Kadeem Flosi
Johnson Sergi
Leon Oldroyd
James Butt
Adams Morasca
Octavia Malet
Juan Wieser
Darci Poquette
James Butt
Julie Stenseth
Aditya Kusko
Mujtaba Nicka
Maisha Rulapaugh
Jones Vocelka
Silvio Slusarski
IdCountryDate
1000Italy2026-04-16
1001Japan2026-04-16
1002India2026-04-14
1003France2026-04-22
1004Germany2026-04-12
1005United Kingdom2026-04-29
1006Germany2026-04-04
1007Argentina2026-04-05
1008France2026-05-02
1009Spain2026-04-05
1010Italy2026-04-16
1011Japan2026-04-27
1012Italy2026-04-12
1013Brazil2026-04-16
1014Australia2026-04-18
1015Spain2026-04-29
1016France2026-04-09
1017Germany2026-04-19
1018Australia2026-04-11
1019Russia2026-04-16
1020France2026-04-26
1021Argentina2026-04-14
1022Germany2026-04-09
1023Germany2026-04-17
1024Argentina2026-04-26
1025Russia2026-04-12
1026France2026-04-21
1027Germany2026-04-16
1028Brazil2026-04-24
1029India2026-04-11
1030United Kingdom2026-04-13
1031India2026-04-18
1032Italy2026-04-03
1033Argentina2026-05-02
1034Australia2026-05-01
1035Brazil2026-04-23
1036Brazil2026-04-19
1037Germany2026-04-26
1038Russia2026-04-27
1039Argentina2026-04-22
1040Canada2026-04-13
1041India2026-04-23
1042France2026-04-21
1043India2026-04-25
1044Spain2026-04-25
1045India2026-04-19
1046Japan2026-04-15
1047Russia2026-04-09
1048Germany2026-04-04
1049Russia2026-04-14

On-Demand Data

NameIdCountryDate
Salvatore Stockham1000France2026-04-08
Mujtaba Nicka1001Brazil2026-04-17
Alejandro Perin1002India2026-04-05
Ashley Doe1003Japan2026-04-08
Octavia Malet1004Argentina2026-05-02
Costa Dilliard1005Italy2026-04-22
Maria Marrier1006Brazil2026-04-10
Cody Saylors1007Germany2026-04-21
Julie Stenseth1008Germany2026-04-06
Murillo Malet1009Italy2026-04-28
Aika Inouye1010Australia2026-04-06
Deepesh Chui1011United Kingdom2026-04-26
Jones Vocelka1012India2026-05-01
Arvin Albares1013United Kingdom2026-04-05
David Darakjy1014Australia2026-05-02
Aruna Figeroa1015Japan2026-04-14
Murillo Malet1016Spain2026-04-15
Izzy Garufi1017Australia2026-04-06
Maria Marrier1018Canada2026-04-25
Ashley Doe1019United Kingdom2026-04-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mujtaba NickaItalyElwin Sharvill NEGOTIATION
Aditya KuskoFranceAmy Elsner NEW
Rodrigues CampainGermanyAmy Elsner NEW
Wickens NestleGermanyStephen Shaw NEW
Salvatore StockhamIndiaElwin Sharvill QUALIFIED
Octavia MaletCanadaAnna Fali NEW
Aruna FigeroaAustraliaIoni Bowcher NEGOTIATION
Alejandro PerinGermanyBernardo Dominic NEGOTIATION
Mujtaba NickaSpainAsiya Javayant QUALIFIED
Costa DilliardJapanOnyama Limba UNQUALIFIED
Leja CaldareraFranceAsiya Javayant UNQUALIFIED
Julie StensethRussiaBernardo Dominic QUALIFIED
Maria MarrierRussiaStephen Shaw NEW
Costa DilliardSpainBernardo Dominic NEGOTIATION
Julie StensethRussiaElwin Sharvill UNQUALIFIED
Izzy GarufiFranceAmy Elsner RENEWAL
Ivar PaprockiArgentinaElwin Sharvill NEGOTIATION
Cody SaylorsItalyBernardo Dominic NEGOTIATION
Jones VocelkaRussiaAsiya Javayant NEGOTIATION
Rodrigues CampainItalyAsiya Javayant QUALIFIED
Deepesh ChuiSpainIvan Magalhaes UNQUALIFIED
Jeanfrancois VenereArgentinaXuxue Feng NEGOTIATION
David DarakjyBrazilIoni Bowcher NEGOTIATION
Faith GillianJapanElwin Sharvill NEW
Adams MorascaUnited KingdomAmy Elsner QUALIFIED
Munro FerenczFranceAmy Elsner UNQUALIFIED
Jones VocelkaGermanyXuxue Feng NEGOTIATION
Francesco ShinkoJapanOnyama Limba QUALIFIED
Greenwood BologniaItalyXuxue Feng UNQUALIFIED
Rodrigues CampainItalyXuxue Feng UNQUALIFIED
Ricardo GauchoArgentinaStephen Shaw UNQUALIFIED
Sinclair WaycottGermanyOnyama Limba NEGOTIATION
James ButtIndiaIoni Bowcher NEW
Adams MorascaArgentinaBernardo Dominic RENEWAL
Francesco ShinkoUnited KingdomElwin Sharvill NEGOTIATION
Greenwood BologniaBrazilIvan Magalhaes RENEWAL
Jeanfrancois VenereFranceAnna Fali QUALIFIED
Stacey MacleadAustraliaAsiya Javayant PROPOSAL
Juan WieserItalyAmy Elsner NEW
Emily WhobreyItalyXuxue 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>