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
Morrow RutaRussiaAmy Elsner RENEWAL
Nicolas IturbideGermanyXuxue Feng UNQUALIFIED
Darci PoquetteItalyStephen Shaw PROPOSAL
Francesco ShinkoArgentinaIoni Bowcher NEW
Mujtaba NickaAustraliaElwin Sharvill QUALIFIED
Alejandro PerinCanadaAnna Fali QUALIFIED
Costa DilliardItalyElwin Sharvill UNQUALIFIED
Faith GillianGermanyBernardo Dominic RENEWAL
David DarakjySpainIvan Magalhaes QUALIFIED
Leon OldroydItalyAnna Fali NEGOTIATION
Smith GlickFranceIoni Bowcher NEW
Julie StensethUnited KingdomBernardo Dominic UNQUALIFIED
Isabel BowleyGermanyXuxue Feng UNQUALIFIED
Morrow RutaFranceAnna Fali QUALIFIED
Kadeem FlosiGermanyIoni Bowcher QUALIFIED
Sinclair WaycottArgentinaXuxue Feng UNQUALIFIED
Alejandro PerinUnited KingdomBernardo Dominic RENEWAL
Maisha RulapaughGermanyIoni Bowcher UNQUALIFIED
Izzy GarufiCanadaAmy Elsner UNQUALIFIED
Francesco ShinkoAustraliaElwin Sharvill RENEWAL
James ButtArgentinaStephen Shaw QUALIFIED
Sinclair WaycottBrazilIvan Magalhaes NEW
Morrow RutaUnited KingdomBernardo Dominic NEGOTIATION
Jones VocelkaFranceStephen Shaw NEGOTIATION
Johnson SergiBrazilBernardo Dominic PROPOSAL
Kadeem FlosiUnited KingdomAnna Fali NEW
Jefferson SchemmerArgentinaElwin Sharvill PROPOSAL
Mayumi KolmetzGermanyOnyama Limba PROPOSAL
Leon OldroydGermanyXuxue Feng NEW
Octavia MaletFranceIvan Magalhaes NEW
Stacey MacleadJapanAmy Elsner QUALIFIED
Jones VocelkaItalyXuxue Feng NEGOTIATION
Jeanfrancois VenereArgentinaXuxue Feng RENEWAL
Rodrigues CampainItalyIoni Bowcher PROPOSAL
Rodrigues CampainItalyElwin Sharvill NEGOTIATION
David DarakjyRussiaXuxue Feng NEW
James ButtFranceElwin Sharvill NEW
Silvio SlusarskiJapanAnna Fali NEGOTIATION
Cody SaylorsJapanStephen Shaw NEW
Arvin AlbaresBrazilAmy Elsner NEW
Rodrigues CampainItalyXuxue Feng NEW
Claire TollnerUnited KingdomAmy Elsner NEGOTIATION
Jeanfrancois VenereBrazilIvan Magalhaes UNQUALIFIED
Stacey MacleadJapanIoni Bowcher NEW
Leja CaldareraIndiaAmy Elsner QUALIFIED
Francesco ShinkoIndiaAmy Elsner NEGOTIATION
Izzy GarufiJapanAsiya Javayant UNQUALIFIED
Leon OldroydArgentinaOnyama Limba RENEWAL
Greenwood BologniaCanadaIoni Bowcher NEGOTIATION
Aika InouyeJapanStephen Shaw PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Antonio CaudyBrazilIvan Magalhaes QUALIFIED
Cody SaylorsRussiaIoni Bowcher NEW
Clifford RimItalyAsiya Javayant NEW
Deepesh ChuiAustraliaBernardo Dominic QUALIFIED
Deepesh ChuiItalyIoni Bowcher NEW
Munro FerenczCanadaAsiya Javayant NEGOTIATION
Jeanfrancois VenereItalyAnna Fali QUALIFIED
Jones VocelkaArgentinaOnyama Limba NEW
Juan WieserGermanyAsiya Javayant NEW
Juan WieserAustraliaAmy Elsner NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Greenwood BologniaJapan2026-06-13Dorl, James J Esq UNQUALIFIED39Onyama Limba
1001Chavez BriddickItaly2026-06-12Dorl, James J Esq NEW67Onyama Limba
1002Ivar PaprockiUnited Kingdom2026-05-27Feiner Bros NEW19Bernardo Dominic
1003Jones VocelkaAustralia2026-05-29Truhlar And Truhlar Attys NEW85Ivan Magalhaes
1004Mujtaba NickaIndia2026-06-05Truhlar And Truhlar Attys NEW10Elwin Sharvill
1005Julie StensethCanada2026-05-30Rangoni Of Florence QUALIFIED38Xuxue Feng
1006Nicolas IturbideArgentina2026-06-13Commercial Press RENEWAL90Xuxue Feng
1007Darci PoquetteCanada2026-06-12Rousseaux, Michael Esq NEGOTIATION62Xuxue Feng
1008Alejandro PerinGermany2026-05-29Buckley Miller Wright NEW40Elwin Sharvill
1009Ashley DoeIndia2026-05-30King, Christopher A Esq NEW29Anna Fali
1010Costa DilliardArgentina2026-05-26Chapman, Ross E Esq PROPOSAL62Amy Elsner
1011Aditya KuskoGermany2026-05-31Rousseaux, Michael Esq NEGOTIATION2Amy Elsner
1012Rodrigues CampainArgentina2026-06-15Feltz Printing Service RENEWAL95Elwin Sharvill
1013Adams MorascaCanada2026-05-30Feltz Printing Service NEW23Asiya Javayant
1014Greenwood BologniaBrazil2026-05-26Feiner Bros UNQUALIFIED17Ivan Magalhaes
1015Tony FollerSpain2026-05-25Rousseaux, Michael Esq NEGOTIATION77Anna Fali
1016Claire TollnerSpain2026-05-21Feiner Bros RENEWAL62Asiya Javayant
1017Murillo MaletIndia2026-06-16Feiner Bros NEGOTIATION83Elwin Sharvill
1018Rodrigues CampainFrance2026-06-11Dorl, James J Esq NEW23Anna Fali
1019Maria MarrierBrazil2026-06-18King, Christopher A Esq UNQUALIFIED89Stephen Shaw
1020Juan WieserFrance2026-06-02Buckley Miller Wright UNQUALIFIED60Elwin Sharvill
1021Maria MarrierAustralia2026-06-19Dorl, James J Esq RENEWAL21Bernardo Dominic
1022Aditya KuskoJapan2026-06-17Rangoni Of Florence NEGOTIATION5Onyama Limba
1023Arvin AlbaresRussia2026-06-17Dorl, James J Esq PROPOSAL45Stephen Shaw
1024Izzy GarufiRussia2026-05-29Printing Dimensions UNQUALIFIED22Bernardo Dominic
1025Costa DilliardCanada2026-06-08Chemel, James L Cpa QUALIFIED21Stephen Shaw
1026Rodrigues CampainItaly2026-06-08Morlong Associates NEW0Asiya Javayant
1027Alejandro PerinItaly2026-05-28Dorl, James J Esq NEW61Ioni Bowcher
1028James ButtFrance2026-06-11Chanay, Jeffrey A Esq UNQUALIFIED87Ivan Magalhaes
1029Antonio CaudyRussia2026-06-09Chanay, Jeffrey A Esq RENEWAL8Bernardo Dominic
1030Mayumi KolmetzAustralia2026-05-24Buckley Miller Wright NEW84Stephen Shaw
1031Mayumi KolmetzSpain2026-06-05Chanay, Jeffrey A Esq QUALIFIED74Ioni Bowcher
1032Tony FollerJapan2026-06-12Printing Dimensions PROPOSAL23Asiya Javayant
1033Antonio CaudyJapan2026-05-21Truhlar And Truhlar Attys NEW84Onyama Limba
1034Cody SaylorsFrance2026-06-09Printing Dimensions QUALIFIED74Stephen Shaw
1035Juan WieserJapan2026-06-14Printing Dimensions UNQUALIFIED85Xuxue Feng
1036Julie StensethRussia2026-05-27Benton, John B Jr UNQUALIFIED79Anna Fali
1037Clifford RimCanada2026-06-03Chapman, Ross E Esq PROPOSAL23Amy Elsner
1038Ricardo GauchoBrazil2026-06-05Truhlar And Truhlar Attys QUALIFIED70Asiya Javayant
1039Leja CaldareraAustralia2026-05-30Dorl, James J Esq NEGOTIATION80Bernardo Dominic
1040James ButtUnited Kingdom2026-05-25Rousseaux, Michael Esq QUALIFIED99Xuxue Feng
1041Chavez BriddickFrance2026-06-10Chemel, James L Cpa NEGOTIATION92Asiya Javayant
1042Stacey MacleadArgentina2026-06-14Printing Dimensions RENEWAL33Bernardo Dominic
1043Morrow RutaItaly2026-06-18Rousseaux, Michael Esq QUALIFIED11Anna Fali
1044Jennifer AmigonUnited Kingdom2026-05-25Truhlar And Truhlar Attys RENEWAL69Asiya Javayant
1045Mayumi KolmetzRussia2026-06-09King, Christopher A Esq NEW36Anna Fali
1046Misaki RoysterArgentina2026-06-08King, Christopher A Esq PROPOSAL42Bernardo Dominic
1047James ButtCanada2026-06-01Feltz Printing Service PROPOSAL45Stephen Shaw
1048Costa DilliardArgentina2026-06-06Buckley Miller Wright PROPOSAL46Ioni Bowcher
1049Faith GillianCanada2026-06-13Benton, John B Jr UNQUALIFIED20Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Greenwood BologniaSpainIvan Magalhaes UNQUALIFIED
Maisha RulapaughCanadaXuxue Feng UNQUALIFIED
Munro FerenczItalyIoni Bowcher NEW
Ricardo GauchoRussiaAsiya Javayant UNQUALIFIED
Jeanfrancois VenereJapanOnyama Limba PROPOSAL
Maisha RulapaughBrazilBernardo Dominic QUALIFIED
Octavia MaletCanadaAmy Elsner UNQUALIFIED
Juan WieserSpainStephen Shaw RENEWAL
Morrow RutaRussiaStephen Shaw NEW
Octavia MaletAustraliaXuxue Feng PROPOSAL
Francesco ShinkoIndiaAsiya Javayant RENEWAL
Mayumi KolmetzCanadaIvan Magalhaes NEGOTIATION
Leja CaldareraRussiaAsiya Javayant NEGOTIATION
Francesco ShinkoArgentinaOnyama Limba UNQUALIFIED
David DarakjyIndiaOnyama Limba NEW
Juan WieserItalyAsiya Javayant UNQUALIFIED
Clifford RimSpainXuxue Feng RENEWAL
Murillo MaletSpainAnna Fali PROPOSAL
Silvio SlusarskiJapanBernardo Dominic NEW
Munro FerenczFranceAmy Elsner RENEWAL
Isabel BowleyAustraliaOnyama Limba PROPOSAL
Aika InouyeBrazilOnyama Limba UNQUALIFIED
Kadeem FlosiUnited KingdomIvan Magalhaes NEW
Julie StensethSpainIvan Magalhaes UNQUALIFIED
Aruna FigeroaSpainAnna Fali NEW
Cody SaylorsArgentinaOnyama Limba UNQUALIFIED
Ivar PaprockiGermanyElwin Sharvill NEW
Alejandro PerinIndiaAnna Fali NEGOTIATION
Wickens NestleUnited KingdomIvan Magalhaes UNQUALIFIED
Misaki RoysterCanadaBernardo Dominic NEGOTIATION
Johnson SergiJapanXuxue Feng RENEWAL
Isabel BowleyUnited KingdomIvan Magalhaes PROPOSAL
Greenwood BologniaRussiaAmy Elsner QUALIFIED
Julie StensethIndiaBernardo Dominic PROPOSAL
Chavez BriddickItalyAnna Fali NEW
Silvio SlusarskiJapanAsiya Javayant PROPOSAL
Greenwood BologniaRussiaAsiya Javayant QUALIFIED
Julie StensethBrazilXuxue Feng RENEWAL
Ivar PaprockiAustraliaStephen Shaw NEGOTIATION
Wickens NestleAustraliaAmy Elsner QUALIFIED
Jefferson SchemmerSpainIvan Magalhaes NEW
Mujtaba NickaGermanyIvan Magalhaes QUALIFIED
Aika InouyeRussiaIoni Bowcher PROPOSAL
David DarakjyGermanyAnna Fali PROPOSAL
Jeanfrancois VenereBrazilElwin Sharvill UNQUALIFIED
Isabel BowleyItalyXuxue Feng UNQUALIFIED
Ricardo GauchoArgentinaAmy Elsner NEW
Wickens NestleIndiaAnna Fali UNQUALIFIED
Smith GlickBrazilElwin Sharvill RENEWAL
Mujtaba NickaIndiaAnna Fali UNQUALIFIED
Frozen Columns
Name
Tony Foller
Izzy Garufi
Jefferson Schemmer
Stacey Maclead
Alejandro Perin
Isabel Bowley
Misaki Royster
Juan Wieser
David Darakjy
Adams Morasca
Morrow Ruta
Maisha Rulapaugh
Aika Inouye
Juan Wieser
Morrow Ruta
Misaki Royster
Tony Foller
Adams Morasca
Mayumi Kolmetz
Mayumi Kolmetz
Murillo Malet
Salvatore Stockham
Wickens Nestle
Smith Glick
Morrow Ruta
Ricardo Gaucho
Munro Ferencz
Johnson Sergi
Mayumi Kolmetz
Ivar Paprocki
Greenwood Bolognia
Clifford Rim
Isabel Bowley
Faith Gillian
Johnson Sergi
Jefferson Schemmer
Aika Inouye
Ashley Doe
Munro Ferencz
Leja Caldarera
David Darakjy
David Darakjy
Misaki Royster
Aruna Figeroa
Aika Inouye
Julie Stenseth
Morrow Ruta
Misaki Royster
Octavia Malet
Kadeem Flosi
IdCountryDate
1000France2026-06-11
1001Canada2026-06-08
1002United Kingdom2026-06-13
1003Germany2026-06-18
1004Japan2026-05-23
1005India2026-06-07
1006India2026-06-16
1007Japan2026-06-17
1008United Kingdom2026-05-26
1009Germany2026-05-27
1010Germany2026-06-03
1011Brazil2026-06-07
1012France2026-06-10
1013Spain2026-05-26
1014Italy2026-06-04
1015France2026-06-10
1016Italy2026-05-23
1017Italy2026-06-13
1018France2026-06-17
1019Germany2026-05-21
1020Canada2026-06-08
1021India2026-06-07
1022Australia2026-06-18
1023India2026-05-30
1024Germany2026-06-16
1025Canada2026-06-15
1026Japan2026-06-02
1027Germany2026-06-07
1028Australia2026-05-22
1029Italy2026-06-19
1030Australia2026-06-10
1031Germany2026-06-14
1032Argentina2026-06-01
1033Argentina2026-06-19
1034Russia2026-05-22
1035Argentina2026-05-22
1036Spain2026-06-08
1037Russia2026-06-17
1038Argentina2026-06-14
1039Germany2026-05-21
1040India2026-06-08
1041Germany2026-06-19
1042Spain2026-06-17
1043Spain2026-06-19
1044United Kingdom2026-05-31
1045Canada2026-06-19
1046France2026-06-09
1047Australia2026-05-24
1048United Kingdom2026-05-22
1049France2026-05-25

On-Demand Data

NameIdCountryDate
Rodrigues Campain1000Japan2026-05-29
Johnson Sergi1001Russia2026-06-02
Aruna Figeroa1002Japan2026-06-06
Ashley Doe1003Brazil2026-06-02
Chavez Briddick1004Canada2026-05-25
Antonio Caudy1005Russia2026-05-24
Maria Marrier1006France2026-06-08
Alejandro Perin1007Italy2026-05-21
Isabel Bowley1008Brazil2026-05-21
Wickens Nestle1009Japan2026-06-11
Jeanfrancois Venere1010Canada2026-05-31
Jefferson Schemmer1011Japan2026-06-01
Claire Tollner1012Russia2026-06-18
Faith Gillian1013Brazil2026-06-16
Tony Foller1014Italy2026-06-17
Greenwood Bolognia1015Brazil2026-06-17
Jennifer Amigon1016Canada2026-05-22
Aditya Kusko1017Germany2026-06-02
Johnson Sergi1018Germany2026-05-30
Juan Wieser1019Japan2026-06-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aruna FigeroaCanadaBernardo Dominic QUALIFIED
Maisha RulapaughFranceAnna Fali RENEWAL
James ButtRussiaAsiya Javayant UNQUALIFIED
Silvio SlusarskiFranceStephen Shaw PROPOSAL
Octavia MaletBrazilBernardo Dominic PROPOSAL
Aruna FigeroaSpainXuxue Feng PROPOSAL
Cody SaylorsUnited KingdomOnyama Limba UNQUALIFIED
Darci PoquetteArgentinaStephen Shaw NEGOTIATION
Jeanfrancois VenereJapanIvan Magalhaes NEW
Maisha RulapaughJapanAmy Elsner RENEWAL
Tony FollerIndiaAmy Elsner RENEWAL
Kadeem FlosiArgentinaIoni Bowcher QUALIFIED
Darci PoquetteSpainAmy Elsner PROPOSAL
Adams MorascaGermanyAsiya Javayant RENEWAL
Jeanfrancois VenereArgentinaIvan Magalhaes QUALIFIED
Ashley DoeArgentinaXuxue Feng NEW
Isabel BowleyGermanyIoni Bowcher NEGOTIATION
Leja CaldareraUnited KingdomOnyama Limba QUALIFIED
Isabel BowleyArgentinaOnyama Limba NEGOTIATION
Greenwood BologniaCanadaXuxue Feng QUALIFIED
Mujtaba NickaGermanyIoni Bowcher NEW
Maria MarrierItalyAmy Elsner NEW
Leja CaldareraJapanAmy Elsner UNQUALIFIED
Arvin AlbaresIndiaOnyama Limba NEGOTIATION
Jones VocelkaRussiaBernardo Dominic PROPOSAL
Clifford RimGermanyStephen Shaw RENEWAL
Octavia MaletArgentinaIoni Bowcher QUALIFIED
Jeanfrancois VenereCanadaXuxue Feng UNQUALIFIED
Izzy GarufiGermanyStephen Shaw UNQUALIFIED
Adams MorascaSpainOnyama Limba NEW
Murillo MaletRussiaIvan Magalhaes QUALIFIED
Julie StensethSpainElwin Sharvill PROPOSAL
Jones VocelkaRussiaIoni Bowcher QUALIFIED
Smith GlickUnited KingdomElwin Sharvill RENEWAL
Jennifer AmigonRussiaBernardo Dominic PROPOSAL
Juan WieserRussiaIvan Magalhaes PROPOSAL
Johnson SergiJapanOnyama Limba NEW
Isabel BowleyFranceXuxue Feng NEW
Greenwood BologniaArgentinaOnyama Limba NEW
Aditya KuskoGermanyBernardo Dominic 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>