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
Emily WhobreyItalyBernardo Dominic UNQUALIFIED
Leja CaldareraFranceOnyama Limba PROPOSAL
Alejandro PerinSpainXuxue Feng UNQUALIFIED
Claire TollnerJapanAmy Elsner QUALIFIED
Misaki RoysterItalyOnyama Limba NEW
Aika InouyeAustraliaXuxue Feng RENEWAL
Arvin AlbaresCanadaAmy Elsner QUALIFIED
Smith GlickBrazilStephen Shaw QUALIFIED
Emily WhobreyAustraliaOnyama Limba NEGOTIATION
Maria MarrierCanadaIoni Bowcher NEW
Aruna FigeroaIndiaIvan Magalhaes NEGOTIATION
Antonio CaudyUnited KingdomElwin Sharvill NEW
Rodrigues CampainCanadaElwin Sharvill UNQUALIFIED
Aditya KuskoJapanIoni Bowcher NEGOTIATION
Rodrigues CampainJapanElwin Sharvill NEGOTIATION
Jeanfrancois VenereCanadaIoni Bowcher QUALIFIED
Salvatore StockhamUnited KingdomXuxue Feng RENEWAL
Isabel BowleyRussiaElwin Sharvill RENEWAL
Nicolas IturbideJapanIvan Magalhaes UNQUALIFIED
Costa DilliardJapanElwin Sharvill QUALIFIED
Nicolas IturbideIndiaOnyama Limba UNQUALIFIED
Isabel BowleyRussiaAnna Fali RENEWAL
Costa DilliardArgentinaOnyama Limba PROPOSAL
Wickens NestleAustraliaBernardo Dominic PROPOSAL
Clifford RimRussiaXuxue Feng PROPOSAL
Isabel BowleyGermanyXuxue Feng PROPOSAL
Arvin AlbaresRussiaBernardo Dominic QUALIFIED
Ricardo GauchoArgentinaAmy Elsner NEW
Stacey MacleadAustraliaOnyama Limba NEW
Julie StensethGermanyAmy Elsner QUALIFIED
Arvin AlbaresBrazilAmy Elsner QUALIFIED
Leon OldroydCanadaBernardo Dominic RENEWAL
Smith GlickFranceAnna Fali NEGOTIATION
Antonio CaudyJapanAmy Elsner QUALIFIED
Salvatore StockhamAustraliaXuxue Feng RENEWAL
Morrow RutaArgentinaIvan Magalhaes QUALIFIED
Octavia MaletCanadaElwin Sharvill NEW
Costa DilliardBrazilBernardo Dominic UNQUALIFIED
Faith GillianCanadaElwin Sharvill RENEWAL
Murillo MaletCanadaAmy Elsner UNQUALIFIED
Costa DilliardArgentinaOnyama Limba RENEWAL
Adams MorascaItalyXuxue Feng NEW
Munro FerenczCanadaElwin Sharvill QUALIFIED
Silvio SlusarskiRussiaBernardo Dominic NEGOTIATION
Munro FerenczArgentinaStephen Shaw PROPOSAL
James ButtBrazilStephen Shaw QUALIFIED
Claire TollnerCanadaStephen Shaw NEGOTIATION
Aruna FigeroaJapanAnna Fali PROPOSAL
Munro FerenczUnited KingdomStephen Shaw NEW
Maria MarrierFranceOnyama Limba PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Claire TollnerBrazilXuxue Feng QUALIFIED
Izzy GarufiIndiaOnyama Limba UNQUALIFIED
Nicolas IturbideGermanyOnyama Limba NEGOTIATION
Emily WhobreyArgentinaOnyama Limba NEGOTIATION
Octavia MaletIndiaAmy Elsner PROPOSAL
Johnson SergiArgentinaBernardo Dominic RENEWAL
Clifford RimJapanOnyama Limba RENEWAL
Aika InouyeArgentinaStephen Shaw PROPOSAL
Smith GlickItalyBernardo Dominic PROPOSAL
James ButtFranceIvan Magalhaes RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Clifford RimRussia2026-05-04Chapman, Ross E Esq RENEWAL8Stephen Shaw
1001David DarakjyArgentina2026-05-09Dorl, James J Esq UNQUALIFIED47Asiya Javayant
1002Aruna FigeroaFrance2026-05-23Chemel, James L Cpa RENEWAL16Asiya Javayant
1003Julie StensethUnited Kingdom2026-05-02Commercial Press QUALIFIED86Xuxue Feng
1004Silvio SlusarskiBrazil2026-05-27Commercial Press NEW32Bernardo Dominic
1005Adams MorascaFrance2026-05-23King, Christopher A Esq QUALIFIED87Xuxue Feng
1006Ricardo GauchoGermany2026-05-29Chapman, Ross E Esq NEW1Ivan Magalhaes
1007Misaki RoysterCanada2026-05-18Chanay, Jeffrey A Esq NEGOTIATION99Anna Fali
1008Silvio SlusarskiArgentina2026-05-05Commercial Press QUALIFIED92Xuxue Feng
1009David DarakjySpain2026-05-15Dorl, James J Esq PROPOSAL33Ivan Magalhaes
1010Chavez BriddickJapan2026-05-27Dorl, James J Esq RENEWAL70Amy Elsner
1011Jeanfrancois VenereFrance2026-05-14Chemel, James L Cpa RENEWAL1Bernardo Dominic
1012Morrow RutaJapan2026-05-11Buckley Miller Wright RENEWAL15Bernardo Dominic
1013Silvio SlusarskiCanada2026-05-26Rangoni Of Florence QUALIFIED67Asiya Javayant
1014Sinclair WaycottItaly2026-05-02Truhlar And Truhlar Attys QUALIFIED90Asiya Javayant
1015Arvin AlbaresBrazil2026-05-25Truhlar And Truhlar Attys QUALIFIED45Asiya Javayant
1016Mujtaba NickaCanada2026-05-22Chemel, James L Cpa NEW82Ioni Bowcher
1017Jefferson SchemmerRussia2026-05-26Feltz Printing Service NEW34Ivan Magalhaes
1018David DarakjyUnited Kingdom2026-05-04Feiner Bros NEW21Ioni Bowcher
1019Silvio SlusarskiAustralia2026-05-02Chanay, Jeffrey A Esq RENEWAL82Amy Elsner
1020Johnson SergiJapan2026-05-04Rangoni Of Florence RENEWAL21Amy Elsner
1021Julie StensethJapan2026-05-10Morlong Associates NEW88Onyama Limba
1022Leon OldroydRussia2026-05-17Printing Dimensions NEGOTIATION69Onyama Limba
1023Silvio SlusarskiItaly2026-05-10Truhlar And Truhlar Attys UNQUALIFIED87Amy Elsner
1024Claire TollnerFrance2026-05-04Morlong Associates NEW42Bernardo Dominic
1025Stacey MacleadJapan2026-05-06Buckley Miller Wright QUALIFIED97Asiya Javayant
1026Mujtaba NickaRussia2026-05-02Rousseaux, Michael Esq UNQUALIFIED2Elwin Sharvill
1027Arvin AlbaresIndia2026-05-02Feiner Bros UNQUALIFIED75Asiya Javayant
1028Julie StensethAustralia2026-05-18Commercial Press QUALIFIED61Ioni Bowcher
1029Clifford RimIndia2026-05-18Commercial Press RENEWAL61Elwin Sharvill
1030Salvatore StockhamFrance2026-05-29Truhlar And Truhlar Attys RENEWAL39Bernardo Dominic
1031Adams MorascaItaly2026-05-29Morlong Associates NEGOTIATION86Ivan Magalhaes
1032Rodrigues CampainFrance2026-05-07Chanay, Jeffrey A Esq PROPOSAL3Stephen Shaw
1033Murillo MaletRussia2026-05-15Benton, John B Jr PROPOSAL50Bernardo Dominic
1034Leja CaldareraArgentina2026-05-12Feltz Printing Service NEW27Amy Elsner
1035Francesco ShinkoBrazil2026-05-09Truhlar And Truhlar Attys NEW10Bernardo Dominic
1036Emily WhobreyAustralia2026-05-05Feltz Printing Service PROPOSAL33Asiya Javayant
1037Murillo MaletArgentina2026-05-30Morlong Associates NEW2Bernardo Dominic
1038Sinclair WaycottGermany2026-05-20Feiner Bros PROPOSAL57Stephen Shaw
1039Izzy GarufiGermany2026-05-04Rangoni Of Florence NEW38Bernardo Dominic
1040Leon OldroydFrance2026-05-15Chemel, James L Cpa QUALIFIED81Amy Elsner
1041Chavez BriddickItaly2026-05-04Benton, John B Jr RENEWAL40Asiya Javayant
1042Rodrigues CampainItaly2026-05-11Buckley Miller Wright QUALIFIED94Onyama Limba
1043Costa DilliardItaly2026-05-08Chapman, Ross E Esq NEGOTIATION9Amy Elsner
1044Izzy GarufiBrazil2026-05-27Chemel, James L Cpa UNQUALIFIED7Xuxue Feng
1045Leon OldroydIndia2026-05-06Rousseaux, Michael Esq UNQUALIFIED78Amy Elsner
1046Chavez BriddickUnited Kingdom2026-05-06Chemel, James L Cpa NEW68Ioni Bowcher
1047Munro FerenczArgentina2026-05-14Dorl, James J Esq NEGOTIATION65Asiya Javayant
1048Munro FerenczRussia2026-05-19Chanay, Jeffrey A Esq RENEWAL61Ivan Magalhaes
1049Munro FerenczSpain2026-05-20Rangoni Of Florence RENEWAL31Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Julie StensethFranceAmy Elsner UNQUALIFIED
Deepesh ChuiBrazilStephen Shaw PROPOSAL
Claire TollnerJapanIvan Magalhaes RENEWAL
Juan WieserSpainIoni Bowcher NEGOTIATION
Darci PoquetteItalyStephen Shaw QUALIFIED
Arvin AlbaresSpainOnyama Limba PROPOSAL
Faith GillianJapanElwin Sharvill PROPOSAL
Aditya KuskoUnited KingdomStephen Shaw QUALIFIED
Sinclair WaycottBrazilElwin Sharvill UNQUALIFIED
Cody SaylorsIndiaStephen Shaw RENEWAL
Francesco ShinkoJapanStephen Shaw QUALIFIED
Ashley DoeGermanyIvan Magalhaes NEW
James ButtJapanXuxue Feng QUALIFIED
Wickens NestleRussiaXuxue Feng PROPOSAL
Aruna FigeroaArgentinaBernardo Dominic NEGOTIATION
Francesco ShinkoGermanyOnyama Limba RENEWAL
Morrow RutaFranceAmy Elsner PROPOSAL
Jones VocelkaUnited KingdomBernardo Dominic RENEWAL
Jeanfrancois VenereRussiaIvan Magalhaes UNQUALIFIED
Wickens NestleGermanyAmy Elsner NEW
Juan WieserAustraliaAmy Elsner PROPOSAL
Maisha RulapaughCanadaAnna Fali NEW
Maisha RulapaughBrazilXuxue Feng QUALIFIED
Maisha RulapaughAustraliaAmy Elsner QUALIFIED
Stacey MacleadJapanOnyama Limba RENEWAL
Octavia MaletArgentinaXuxue Feng PROPOSAL
Kaitlin OstroskyItalyAnna Fali PROPOSAL
Silvio SlusarskiItalyAsiya Javayant QUALIFIED
Ivar PaprockiFranceIvan Magalhaes QUALIFIED
Jefferson SchemmerSpainStephen Shaw UNQUALIFIED
Ashley DoeCanadaStephen Shaw RENEWAL
Arvin AlbaresSpainElwin Sharvill UNQUALIFIED
Ricardo GauchoCanadaElwin Sharvill QUALIFIED
Arvin AlbaresRussiaAsiya Javayant NEW
Misaki RoysterIndiaXuxue Feng RENEWAL
Nicolas IturbideIndiaStephen Shaw NEGOTIATION
Salvatore StockhamJapanIoni Bowcher QUALIFIED
Emily WhobreyItalyIoni Bowcher RENEWAL
Stacey MacleadJapanIoni Bowcher NEGOTIATION
Francesco ShinkoArgentinaElwin Sharvill RENEWAL
Johnson SergiItalyAnna Fali UNQUALIFIED
Wickens NestleCanadaOnyama Limba UNQUALIFIED
David DarakjyIndiaXuxue Feng PROPOSAL
David DarakjyAustraliaAnna Fali UNQUALIFIED
Sinclair WaycottIndiaBernardo Dominic NEGOTIATION
Misaki RoysterRussiaOnyama Limba PROPOSAL
David DarakjyAustraliaOnyama Limba NEGOTIATION
Ivar PaprockiItalyElwin Sharvill UNQUALIFIED
Tony FollerItalyXuxue Feng QUALIFIED
Wickens NestleBrazilOnyama Limba NEW
Frozen Columns
Name
Maria Marrier
Octavia Malet
Aruna Figeroa
Maisha Rulapaugh
Tony Foller
Isabel Bowley
Octavia Malet
Jeanfrancois Venere
Rodrigues Campain
David Darakjy
Maisha Rulapaugh
Darci Poquette
Kaitlin Ostrosky
Mujtaba Nicka
Costa Dilliard
Francesco Shinko
Leja Caldarera
Izzy Garufi
Jefferson Schemmer
Jefferson Schemmer
Arvin Albares
Emily Whobrey
Alejandro Perin
Kaitlin Ostrosky
Costa Dilliard
Ashley Doe
Antonio Caudy
Mayumi Kolmetz
Munro Ferencz
Morrow Ruta
Silvio Slusarski
Julie Stenseth
Jennifer Amigon
Claire Tollner
Jennifer Amigon
Jennifer Amigon
David Darakjy
Wickens Nestle
Jennifer Amigon
Aruna Figeroa
Kaitlin Ostrosky
Claire Tollner
Ashley Doe
Silvio Slusarski
Juan Wieser
Juan Wieser
Rodrigues Campain
Isabel Bowley
Murillo Malet
Greenwood Bolognia
IdCountryDate
1000India2026-05-21
1001Spain2026-05-14
1002Argentina2026-05-17
1003Spain2026-05-01
1004Russia2026-05-29
1005Brazil2026-05-13
1006India2026-05-05
1007Argentina2026-05-19
1008Argentina2026-05-17
1009Spain2026-05-17
1010India2026-05-10
1011Italy2026-05-09
1012Japan2026-05-16
1013Brazil2026-05-01
1014Brazil2026-05-27
1015France2026-05-09
1016Spain2026-05-01
1017United Kingdom2026-05-22
1018Spain2026-05-26
1019Australia2026-05-09
1020Japan2026-05-28
1021Russia2026-05-27
1022Japan2026-05-22
1023India2026-05-09
1024Germany2026-05-27
1025France2026-05-20
1026Argentina2026-05-19
1027Italy2026-05-04
1028Argentina2026-05-27
1029France2026-05-03
1030France2026-05-29
1031France2026-05-12
1032Japan2026-05-21
1033United Kingdom2026-05-23
1034Russia2026-05-11
1035United Kingdom2026-05-09
1036Germany2026-05-06
1037India2026-05-25
1038Australia2026-05-19
1039Italy2026-05-06
1040Australia2026-05-17
1041France2026-05-29
1042Argentina2026-05-01
1043Italy2026-05-24
1044Canada2026-05-21
1045India2026-05-28
1046India2026-05-22
1047Japan2026-05-12
1048Germany2026-05-07
1049France2026-05-02

On-Demand Data

NameIdCountryDate
Rodrigues Campain1000Spain2026-05-15
Morrow Ruta1001Argentina2026-05-09
Johnson Sergi1002Japan2026-05-20
Munro Ferencz1003Germany2026-05-14
Aruna Figeroa1004India2026-05-04
Rodrigues Campain1005Italy2026-05-21
Salvatore Stockham1006Brazil2026-05-30
Ricardo Gaucho1007Brazil2026-05-28
Maisha Rulapaugh1008Italy2026-05-15
Rodrigues Campain1009Italy2026-05-20
Murillo Malet1010France2026-05-17
Johnson Sergi1011Spain2026-05-09
Kadeem Flosi1012Canada2026-05-23
Murillo Malet1013Spain2026-05-09
Leja Caldarera1014United Kingdom2026-05-04
Sinclair Waycott1015Germany2026-05-21
Izzy Garufi1016France2026-05-23
Tony Foller1017Spain2026-05-15
Stacey Maclead1018Argentina2026-05-15
Juan Wieser1019Germany2026-05-11
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leon OldroydSpainAnna Fali PROPOSAL
Silvio SlusarskiAustraliaBernardo Dominic NEGOTIATION
Ricardo GauchoSpainAsiya Javayant RENEWAL
Darci PoquetteBrazilXuxue Feng UNQUALIFIED
Nicolas IturbideArgentinaStephen Shaw PROPOSAL
Octavia MaletGermanyAmy Elsner NEGOTIATION
Rodrigues CampainItalyIvan Magalhaes UNQUALIFIED
Cody SaylorsSpainAsiya Javayant NEW
Leja CaldareraSpainStephen Shaw NEGOTIATION
Ivar PaprockiRussiaIoni Bowcher PROPOSAL
Arvin AlbaresJapanAnna Fali NEW
Emily WhobreyArgentinaBernardo Dominic QUALIFIED
Claire TollnerJapanStephen Shaw UNQUALIFIED
Clifford RimCanadaAnna Fali PROPOSAL
Leon OldroydBrazilXuxue Feng NEGOTIATION
Aruna FigeroaItalyStephen Shaw NEGOTIATION
Cody SaylorsCanadaBernardo Dominic PROPOSAL
Izzy GarufiSpainIoni Bowcher PROPOSAL
David DarakjyUnited KingdomIoni Bowcher NEW
Ricardo GauchoAustraliaBernardo Dominic NEW
Julie StensethCanadaOnyama Limba PROPOSAL
Maria MarrierGermanyAsiya Javayant NEW
Aruna FigeroaSpainXuxue Feng NEW
Misaki RoysterGermanyXuxue Feng UNQUALIFIED
Arvin AlbaresJapanXuxue Feng PROPOSAL
Faith GillianRussiaIvan Magalhaes NEGOTIATION
Deepesh ChuiRussiaIoni Bowcher NEW
Maisha RulapaughSpainIvan Magalhaes UNQUALIFIED
David DarakjyAustraliaStephen Shaw RENEWAL
Adams MorascaSpainStephen Shaw NEW
Jeanfrancois VenereGermanyAnna Fali NEGOTIATION
Aika InouyeItalyAmy Elsner PROPOSAL
Cody SaylorsGermanyIvan Magalhaes UNQUALIFIED
Maria MarrierItalyStephen Shaw RENEWAL
Francesco ShinkoGermanyElwin Sharvill NEW
Munro FerenczItalyIvan Magalhaes NEGOTIATION
Faith GillianArgentinaOnyama Limba UNQUALIFIED
Maria MarrierJapanOnyama Limba NEW
Sinclair WaycottRussiaAmy Elsner UNQUALIFIED
Claire TollnerArgentinaStephen Shaw QUALIFIED

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