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
Faith GillianJapanAnna Fali RENEWAL
Izzy GarufiCanadaBernardo Dominic UNQUALIFIED
Kadeem FlosiItalyStephen Shaw PROPOSAL
Ricardo GauchoGermanyOnyama Limba NEGOTIATION
Leja CaldareraAustraliaStephen Shaw QUALIFIED
Aditya KuskoJapanStephen Shaw RENEWAL
Maria MarrierArgentinaOnyama Limba UNQUALIFIED
Maisha RulapaughIndiaOnyama Limba UNQUALIFIED
Maria MarrierSpainOnyama Limba PROPOSAL
Jones VocelkaSpainElwin Sharvill NEW
James ButtItalyAsiya Javayant PROPOSAL
Stacey MacleadUnited KingdomOnyama Limba NEW
Jefferson SchemmerRussiaIoni Bowcher PROPOSAL
Deepesh ChuiUnited KingdomXuxue Feng UNQUALIFIED
Darci PoquetteBrazilBernardo Dominic NEGOTIATION
Alejandro PerinFranceIoni Bowcher NEW
Costa DilliardCanadaIoni Bowcher RENEWAL
Sinclair WaycottSpainAnna Fali QUALIFIED
Aruna FigeroaArgentinaAmy Elsner UNQUALIFIED
Morrow RutaFranceAnna Fali UNQUALIFIED
Kadeem FlosiSpainBernardo Dominic NEW
Julie StensethCanadaOnyama Limba RENEWAL
Emily WhobreyIndiaOnyama Limba QUALIFIED
Costa DilliardSpainAsiya Javayant NEGOTIATION
Jefferson SchemmerSpainAsiya Javayant UNQUALIFIED
Jennifer AmigonUnited KingdomIoni Bowcher PROPOSAL
Izzy GarufiRussiaXuxue Feng RENEWAL
James ButtRussiaAmy Elsner NEW
Tony FollerFranceXuxue Feng NEGOTIATION
Silvio SlusarskiGermanyIvan Magalhaes NEW
Ashley DoeArgentinaOnyama Limba QUALIFIED
Jones VocelkaBrazilStephen Shaw NEW
Kaitlin OstroskyBrazilStephen Shaw NEW
Deepesh ChuiGermanyAsiya Javayant PROPOSAL
Aditya KuskoGermanyIvan Magalhaes NEGOTIATION
Cody SaylorsCanadaElwin Sharvill QUALIFIED
Faith GillianGermanyOnyama Limba UNQUALIFIED
Wickens NestleGermanyXuxue Feng UNQUALIFIED
Nicolas IturbideJapanStephen Shaw RENEWAL
Mayumi KolmetzItalyOnyama Limba QUALIFIED
Kadeem FlosiFranceAsiya Javayant UNQUALIFIED
Aruna FigeroaUnited KingdomBernardo Dominic RENEWAL
Izzy GarufiIndiaAmy Elsner PROPOSAL
Jeanfrancois VenereGermanyAsiya Javayant NEGOTIATION
Aika InouyeJapanIvan Magalhaes NEW
Antonio CaudyArgentinaAmy Elsner NEW
Rodrigues CampainJapanAnna Fali NEW
Jefferson SchemmerItalyElwin Sharvill RENEWAL
Ivar PaprockiItalyAmy Elsner UNQUALIFIED
Sinclair WaycottFranceAsiya Javayant RENEWAL
Horizontal
NameCountryRepresentativeStatus
Clifford RimRussiaAmy Elsner RENEWAL
Izzy GarufiGermanyAmy Elsner PROPOSAL
Chavez BriddickAustraliaBernardo Dominic QUALIFIED
Antonio CaudyIndiaStephen Shaw PROPOSAL
Darci PoquetteSpainOnyama Limba UNQUALIFIED
Maisha RulapaughJapanOnyama Limba PROPOSAL
Ivar PaprockiSpainElwin Sharvill UNQUALIFIED
Claire TollnerArgentinaIoni Bowcher PROPOSAL
David DarakjyJapanAsiya Javayant QUALIFIED
Munro FerenczBrazilOnyama Limba UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Silvio SlusarskiUnited Kingdom2026-05-07Rousseaux, Michael Esq NEW46Elwin Sharvill
1001Misaki RoysterIndia2026-05-14Rousseaux, Michael Esq NEW79Bernardo Dominic
1002Johnson SergiItaly2026-05-10Truhlar And Truhlar Attys QUALIFIED38Ioni Bowcher
1003Darci PoquetteCanada2026-05-23Chapman, Ross E Esq PROPOSAL34Stephen Shaw
1004Ashley DoeAustralia2026-04-30Commercial Press UNQUALIFIED9Stephen Shaw
1005Jefferson SchemmerAustralia2026-05-06Feiner Bros RENEWAL10Xuxue Feng
1006Johnson SergiSpain2026-05-14Chanay, Jeffrey A Esq NEW1Xuxue Feng
1007Jeanfrancois VenereJapan2026-05-19Feiner Bros RENEWAL34Amy Elsner
1008Ashley DoeAustralia2026-05-14Commercial Press NEW1Stephen Shaw
1009Claire TollnerGermany2026-04-27Benton, John B Jr NEGOTIATION13Asiya Javayant
1010Johnson SergiGermany2026-05-07King, Christopher A Esq UNQUALIFIED85Amy Elsner
1011Jones VocelkaAustralia2026-05-26Feltz Printing Service PROPOSAL52Anna Fali
1012Ivar PaprockiBrazil2026-05-07Feltz Printing Service PROPOSAL90Ivan Magalhaes
1013Isabel BowleyArgentina2026-05-14Commercial Press PROPOSAL0Bernardo Dominic
1014Munro FerenczUnited Kingdom2026-05-22Chanay, Jeffrey A Esq RENEWAL0Elwin Sharvill
1015Izzy GarufiAustralia2026-05-16Dorl, James J Esq UNQUALIFIED61Asiya Javayant
1016Ivar PaprockiUnited Kingdom2026-05-24Printing Dimensions UNQUALIFIED86Elwin Sharvill
1017Ivar PaprockiFrance2026-05-26Printing Dimensions UNQUALIFIED66Onyama Limba
1018Isabel BowleyArgentina2026-05-17Dorl, James J Esq QUALIFIED56Amy Elsner
1019Wickens NestleItaly2026-05-13Morlong Associates NEW70Onyama Limba
1020Faith GillianUnited Kingdom2026-05-26Morlong Associates NEW4Xuxue Feng
1021Rodrigues CampainAustralia2026-05-21King, Christopher A Esq UNQUALIFIED96Amy Elsner
1022Deepesh ChuiSpain2026-05-21Benton, John B Jr PROPOSAL48Amy Elsner
1023Mayumi KolmetzIndia2026-05-24Rousseaux, Michael Esq UNQUALIFIED68Bernardo Dominic
1024Faith GillianArgentina2026-05-04Truhlar And Truhlar Attys NEGOTIATION98Bernardo Dominic
1025Ricardo GauchoRussia2026-05-10Morlong Associates NEGOTIATION52Xuxue Feng
1026Rodrigues CampainIndia2026-05-18Morlong Associates QUALIFIED66Stephen Shaw
1027Nicolas IturbideItaly2026-05-15Rousseaux, Michael Esq RENEWAL71Stephen Shaw
1028Jeanfrancois VenereItaly2026-05-14Feltz Printing Service PROPOSAL75Onyama Limba
1029Faith GillianUnited Kingdom2026-05-25Morlong Associates RENEWAL24Onyama Limba
1030Kadeem FlosiAustralia2026-04-30Printing Dimensions NEGOTIATION13Ivan Magalhaes
1031Stacey MacleadSpain2026-05-25Commercial Press PROPOSAL72Xuxue Feng
1032David DarakjyItaly2026-05-23Commercial Press QUALIFIED64Elwin Sharvill
1033Jennifer AmigonFrance2026-05-06Benton, John B Jr UNQUALIFIED96Stephen Shaw
1034Smith GlickAustralia2026-05-02Buckley Miller Wright NEW7Asiya Javayant
1035Ricardo GauchoCanada2026-05-01Buckley Miller Wright PROPOSAL43Xuxue Feng
1036Jeanfrancois VenereBrazil2026-04-27Rangoni Of Florence PROPOSAL72Stephen Shaw
1037Ricardo GauchoRussia2026-05-22Dorl, James J Esq QUALIFIED42Onyama Limba
1038Faith GillianCanada2026-05-17Truhlar And Truhlar Attys PROPOSAL85Asiya Javayant
1039Aruna FigeroaJapan2026-05-23Morlong Associates UNQUALIFIED18Amy Elsner
1040Izzy GarufiUnited Kingdom2026-05-06Printing Dimensions QUALIFIED17Onyama Limba
1041Morrow RutaRussia2026-05-21Commercial Press NEW5Xuxue Feng
1042Julie StensethSpain2026-05-23Buckley Miller Wright NEW95Amy Elsner
1043Mujtaba NickaGermany2026-05-22Chapman, Ross E Esq NEGOTIATION91Xuxue Feng
1044Leja CaldareraFrance2026-05-18Printing Dimensions UNQUALIFIED20Onyama Limba
1045James ButtRussia2026-05-21Chemel, James L Cpa UNQUALIFIED19Onyama Limba
1046Emily WhobreyArgentina2026-05-05King, Christopher A Esq QUALIFIED46Elwin Sharvill
1047Aika InouyeCanada2026-04-28King, Christopher A Esq NEGOTIATION72Stephen Shaw
1048Morrow RutaRussia2026-05-18King, Christopher A Esq RENEWAL59Ivan Magalhaes
1049Ashley DoeItaly2026-05-24Truhlar And Truhlar Attys QUALIFIED47Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Julie StensethIndiaAsiya Javayant NEW
Tony FollerArgentinaIoni Bowcher NEGOTIATION
Aruna FigeroaAustraliaXuxue Feng PROPOSAL
Ricardo GauchoArgentinaStephen Shaw NEGOTIATION
Murillo MaletAustraliaXuxue Feng NEGOTIATION
Salvatore StockhamArgentinaAmy Elsner QUALIFIED
Misaki RoysterSpainElwin Sharvill NEW
James ButtGermanyAnna Fali RENEWAL
Cody SaylorsRussiaElwin Sharvill NEGOTIATION
Tony FollerRussiaElwin Sharvill NEGOTIATION
Smith GlickUnited KingdomBernardo Dominic RENEWAL
Wickens NestleSpainAnna Fali RENEWAL
Jones VocelkaJapanAmy Elsner QUALIFIED
Morrow RutaSpainStephen Shaw PROPOSAL
Murillo MaletItalyAsiya Javayant NEGOTIATION
Clifford RimIndiaOnyama Limba NEW
Maria MarrierBrazilElwin Sharvill UNQUALIFIED
Aika InouyeFranceOnyama Limba PROPOSAL
Stacey MacleadItalyStephen Shaw QUALIFIED
Faith GillianAustraliaBernardo Dominic RENEWAL
Isabel BowleyIndiaBernardo Dominic NEGOTIATION
Emily WhobreyArgentinaIoni Bowcher NEGOTIATION
Aika InouyeFranceStephen Shaw RENEWAL
Mayumi KolmetzItalyIvan Magalhaes RENEWAL
Emily WhobreyCanadaIvan Magalhaes PROPOSAL
Silvio SlusarskiJapanXuxue Feng NEW
Maria MarrierRussiaAsiya Javayant UNQUALIFIED
Stacey MacleadFranceAmy Elsner NEW
Wickens NestleCanadaStephen Shaw NEW
James ButtFranceAmy Elsner QUALIFIED
Octavia MaletAustraliaOnyama Limba UNQUALIFIED
Tony FollerGermanyStephen Shaw RENEWAL
Leon OldroydFranceElwin Sharvill NEGOTIATION
Deepesh ChuiItalyElwin Sharvill NEW
Ashley DoeIndiaBernardo Dominic NEGOTIATION
Salvatore StockhamJapanAsiya Javayant UNQUALIFIED
Mayumi KolmetzIndiaOnyama Limba UNQUALIFIED
Mujtaba NickaUnited KingdomXuxue Feng NEW
Nicolas IturbideItalyAsiya Javayant NEW
Murillo MaletCanadaStephen Shaw PROPOSAL
Arvin AlbaresArgentinaIvan Magalhaes NEGOTIATION
Rodrigues CampainJapanStephen Shaw UNQUALIFIED
Morrow RutaFranceAmy Elsner NEW
Munro FerenczSpainAsiya Javayant UNQUALIFIED
Ashley DoeSpainElwin Sharvill NEW
Morrow RutaJapanIvan Magalhaes RENEWAL
Mujtaba NickaArgentinaIoni Bowcher QUALIFIED
Kaitlin OstroskyJapanElwin Sharvill RENEWAL
Adams MorascaAustraliaAnna Fali UNQUALIFIED
Kadeem FlosiArgentinaAsiya Javayant RENEWAL
Frozen Columns
Name
Ricardo Gaucho
Antonio Caudy
Costa Dilliard
Jefferson Schemmer
Tony Foller
James Butt
Jennifer Amigon
Johnson Sergi
Rodrigues Campain
Ivar Paprocki
Kaitlin Ostrosky
Emily Whobrey
Deepesh Chui
Kaitlin Ostrosky
Arvin Albares
Antonio Caudy
Morrow Ruta
Morrow Ruta
Izzy Garufi
Rodrigues Campain
David Darakjy
Jefferson Schemmer
Mayumi Kolmetz
Greenwood Bolognia
Chavez Briddick
Jennifer Amigon
Misaki Royster
Cody Saylors
Nicolas Iturbide
Aika Inouye
Kadeem Flosi
Octavia Malet
Aika Inouye
Isabel Bowley
Darci Poquette
Cody Saylors
Jones Vocelka
David Darakjy
Claire Tollner
Isabel Bowley
Ivar Paprocki
Costa Dilliard
Clifford Rim
James Butt
Aditya Kusko
Smith Glick
Maria Marrier
Emily Whobrey
Octavia Malet
Johnson Sergi
IdCountryDate
1000Russia2026-05-19
1001Japan2026-05-26
1002Germany2026-05-20
1003United Kingdom2026-05-10
1004Canada2026-05-21
1005Russia2026-05-01
1006Canada2026-05-18
1007Japan2026-05-20
1008India2026-05-22
1009Germany2026-05-25
1010France2026-05-23
1011United Kingdom2026-05-24
1012Australia2026-05-06
1013India2026-05-24
1014Japan2026-05-02
1015Canada2026-05-15
1016Italy2026-04-30
1017Argentina2026-05-05
1018Argentina2026-05-22
1019Canada2026-05-26
1020Germany2026-05-17
1021France2026-05-02
1022Australia2026-05-20
1023India2026-04-28
1024Spain2026-04-27
1025France2026-05-05
1026Germany2026-05-08
1027Japan2026-05-21
1028India2026-05-25
1029Argentina2026-04-28
1030Italy2026-04-29
1031Italy2026-05-09
1032United Kingdom2026-05-11
1033Australia2026-05-10
1034Germany2026-05-10
1035France2026-05-09
1036United Kingdom2026-05-06
1037India2026-05-19
1038Spain2026-05-18
1039Australia2026-04-27
1040Japan2026-05-07
1041Canada2026-05-15
1042Germany2026-05-04
1043Australia2026-05-08
1044Australia2026-04-28
1045Spain2026-05-04
1046Italy2026-05-19
1047Italy2026-05-05
1048Australia2026-05-25
1049Australia2026-04-30

On-Demand Data

NameIdCountryDate
Tony Foller1000United Kingdom2026-05-09
Ashley Doe1001Spain2026-05-22
Silvio Slusarski1002India2026-05-05
Julie Stenseth1003India2026-05-21
Aika Inouye1004Brazil2026-05-17
Aruna Figeroa1005Brazil2026-05-22
Ivar Paprocki1006Germany2026-05-18
Arvin Albares1007Russia2026-05-26
Cody Saylors1008Japan2026-05-06
Leja Caldarera1009Argentina2026-05-15
Darci Poquette1010Russia2026-04-30
Silvio Slusarski1011Spain2026-05-22
Adams Morasca1012Japan2026-05-04
Misaki Royster1013Russia2026-05-13
Rodrigues Campain1014Australia2026-05-07
Darci Poquette1015Italy2026-04-27
Silvio Slusarski1016Australia2026-04-29
Ivar Paprocki1017United Kingdom2026-04-27
Leon Oldroyd1018Argentina2026-05-14
Jeanfrancois Venere1019Argentina2026-05-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ashley DoeJapanOnyama Limba PROPOSAL
Rodrigues CampainArgentinaElwin Sharvill QUALIFIED
Jefferson SchemmerAustraliaAsiya Javayant NEW
Adams MorascaBrazilIvan Magalhaes RENEWAL
Johnson SergiUnited KingdomBernardo Dominic UNQUALIFIED
Maria MarrierAustraliaAmy Elsner UNQUALIFIED
Ricardo GauchoArgentinaOnyama Limba QUALIFIED
James ButtJapanBernardo Dominic QUALIFIED
Leon OldroydGermanyStephen Shaw PROPOSAL
Kadeem FlosiJapanXuxue Feng NEGOTIATION
Misaki RoysterSpainAnna Fali RENEWAL
Rodrigues CampainGermanyOnyama Limba QUALIFIED
James ButtItalyIvan Magalhaes NEW
Leja CaldareraArgentinaElwin Sharvill UNQUALIFIED
Julie StensethCanadaAsiya Javayant NEGOTIATION
Tony FollerCanadaBernardo Dominic PROPOSAL
Leon OldroydGermanyAsiya Javayant PROPOSAL
Darci PoquetteFranceXuxue Feng QUALIFIED
Deepesh ChuiFranceStephen Shaw QUALIFIED
Juan WieserUnited KingdomAmy Elsner QUALIFIED
Leja CaldareraJapanIvan Magalhaes NEGOTIATION
Octavia MaletFranceAmy Elsner RENEWAL
Leja CaldareraGermanyOnyama Limba NEGOTIATION
Maria MarrierBrazilIvan Magalhaes PROPOSAL
Claire TollnerAustraliaIoni Bowcher QUALIFIED
Emily WhobreyUnited KingdomBernardo Dominic QUALIFIED
Kaitlin OstroskyUnited KingdomOnyama Limba NEGOTIATION
James ButtRussiaBernardo Dominic RENEWAL
Ricardo GauchoCanadaXuxue Feng NEW
Costa DilliardUnited KingdomIoni Bowcher RENEWAL
Aika InouyeJapanIvan Magalhaes RENEWAL
Antonio CaudyArgentinaAnna Fali UNQUALIFIED
Misaki RoysterArgentinaAmy Elsner QUALIFIED
Rodrigues CampainJapanXuxue Feng NEW
Tony FollerJapanIvan Magalhaes NEW
Antonio CaudyJapanElwin Sharvill RENEWAL
Izzy GarufiRussiaBernardo Dominic PROPOSAL
Maisha RulapaughUnited KingdomXuxue Feng QUALIFIED
Darci PoquetteIndiaIvan Magalhaes PROPOSAL
Isabel BowleyCanadaStephen Shaw NEGOTIATION

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