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
Julie StensethAustraliaIoni Bowcher QUALIFIED
Ashley DoeJapanXuxue Feng NEGOTIATION
Costa DilliardSpainAnna Fali NEGOTIATION
Octavia MaletGermanyStephen Shaw NEW
Jones VocelkaArgentinaXuxue Feng NEW
Aruna FigeroaJapanIvan Magalhaes QUALIFIED
Arvin AlbaresCanadaIvan Magalhaes PROPOSAL
Jefferson SchemmerJapanIoni Bowcher QUALIFIED
Smith GlickJapanBernardo Dominic NEW
Antonio CaudyJapanIvan Magalhaes RENEWAL
Octavia MaletJapanXuxue Feng RENEWAL
Jefferson SchemmerGermanyAnna Fali NEW
Morrow RutaRussiaAsiya Javayant NEW
Sinclair WaycottIndiaOnyama Limba UNQUALIFIED
Morrow RutaUnited KingdomIoni Bowcher RENEWAL
James ButtAustraliaIoni Bowcher NEW
Silvio SlusarskiGermanyXuxue Feng PROPOSAL
Izzy GarufiSpainIoni Bowcher NEW
Smith GlickItalyAnna Fali QUALIFIED
Nicolas IturbideJapanXuxue Feng NEGOTIATION
David DarakjyJapanElwin Sharvill PROPOSAL
Jeanfrancois VenereIndiaElwin Sharvill UNQUALIFIED
Ricardo GauchoSpainAmy Elsner NEGOTIATION
Antonio CaudyItalyElwin Sharvill UNQUALIFIED
Tony FollerGermanyIvan Magalhaes RENEWAL
Stacey MacleadAustraliaStephen Shaw QUALIFIED
Tony FollerJapanElwin Sharvill NEGOTIATION
Claire TollnerCanadaIoni Bowcher PROPOSAL
Maria MarrierBrazilXuxue Feng NEGOTIATION
Smith GlickUnited KingdomBernardo Dominic RENEWAL
Chavez BriddickFranceIoni Bowcher NEW
Smith GlickIndiaIvan Magalhaes RENEWAL
Ivar PaprockiSpainXuxue Feng UNQUALIFIED
Costa DilliardJapanAmy Elsner NEW
Faith GillianSpainAnna Fali UNQUALIFIED
Stacey MacleadGermanyAmy Elsner NEW
Wickens NestleFranceAsiya Javayant RENEWAL
Deepesh ChuiItalyIvan Magalhaes QUALIFIED
Francesco ShinkoGermanyAmy Elsner NEW
Emily WhobreyArgentinaBernardo Dominic NEGOTIATION
Claire TollnerArgentinaOnyama Limba QUALIFIED
Antonio CaudyIndiaAmy Elsner NEW
Johnson SergiUnited KingdomAsiya Javayant RENEWAL
Greenwood BologniaSpainStephen Shaw PROPOSAL
Ricardo GauchoGermanyStephen Shaw RENEWAL
Juan WieserJapanAmy Elsner PROPOSAL
Morrow RutaGermanyElwin Sharvill RENEWAL
Munro FerenczRussiaOnyama Limba PROPOSAL
Wickens NestleBrazilIvan Magalhaes NEW
Juan WieserJapanBernardo Dominic UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Maria MarrierUnited KingdomAsiya Javayant PROPOSAL
Stacey MacleadAustraliaStephen Shaw QUALIFIED
Sinclair WaycottAustraliaAnna Fali UNQUALIFIED
Isabel BowleyCanadaIvan Magalhaes RENEWAL
Adams MorascaJapanAnna Fali RENEWAL
James ButtJapanIoni Bowcher PROPOSAL
Maisha RulapaughArgentinaAsiya Javayant RENEWAL
Salvatore StockhamArgentinaOnyama Limba NEGOTIATION
Nicolas IturbideBrazilBernardo Dominic UNQUALIFIED
Salvatore StockhamUnited KingdomAmy Elsner NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000James ButtGermany2026-04-18Truhlar And Truhlar Attys QUALIFIED80Ivan Magalhaes
1001Stacey MacleadItaly2026-04-24Feltz Printing Service NEGOTIATION73Amy Elsner
1002Aika InouyeBrazil2026-04-28Buckley Miller Wright NEW21Onyama Limba
1003Jennifer AmigonAustralia2026-04-19Printing Dimensions NEGOTIATION43Asiya Javayant
1004Aditya KuskoSpain2026-05-05Chemel, James L Cpa RENEWAL83Amy Elsner
1005Ashley DoeSpain2026-05-05Commercial Press NEW58Ioni Bowcher
1006Alejandro PerinGermany2026-04-20Feltz Printing Service NEW13Ivan Magalhaes
1007Clifford RimArgentina2026-04-23Feltz Printing Service NEW60Anna Fali
1008Aika InouyeBrazil2026-04-17Rousseaux, Michael Esq PROPOSAL34Bernardo Dominic
1009David DarakjyRussia2026-04-21Rangoni Of Florence RENEWAL76Ioni Bowcher
1010Maria MarrierBrazil2026-04-30Chemel, James L Cpa UNQUALIFIED35Elwin Sharvill
1011Clifford RimIndia2026-05-13Truhlar And Truhlar Attys RENEWAL87Xuxue Feng
1012Faith GillianBrazil2026-04-21Feltz Printing Service NEW4Amy Elsner
1013Aruna FigeroaFrance2026-04-24Benton, John B Jr NEW55Onyama Limba
1014Salvatore StockhamFrance2026-04-21Chemel, James L Cpa NEGOTIATION83Ioni Bowcher
1015Murillo MaletSpain2026-04-27Benton, John B Jr NEW6Elwin Sharvill
1016Isabel BowleyIndia2026-04-25Rousseaux, Michael Esq RENEWAL39Amy Elsner
1017Darci PoquetteJapan2026-05-10Buckley Miller Wright NEW7Xuxue Feng
1018Faith GillianBrazil2026-04-21King, Christopher A Esq NEW42Xuxue Feng
1019Adams MorascaArgentina2026-05-10Dorl, James J Esq PROPOSAL71Xuxue Feng
1020Salvatore StockhamFrance2026-04-19King, Christopher A Esq NEGOTIATION42Onyama Limba
1021Mayumi KolmetzUnited Kingdom2026-04-23Chemel, James L Cpa RENEWAL51Xuxue Feng
1022David DarakjyItaly2026-04-20Rangoni Of Florence RENEWAL93Ioni Bowcher
1023Murillo MaletUnited Kingdom2026-04-22Dorl, James J Esq NEW23Asiya Javayant
1024Misaki RoysterItaly2026-04-26Printing Dimensions PROPOSAL63Asiya Javayant
1025Deepesh ChuiUnited Kingdom2026-05-12Buckley Miller Wright QUALIFIED79Stephen Shaw
1026Arvin AlbaresRussia2026-05-02Feltz Printing Service QUALIFIED16Bernardo Dominic
1027Izzy GarufiCanada2026-04-23Feltz Printing Service RENEWAL36Elwin Sharvill
1028Johnson SergiArgentina2026-05-02Chanay, Jeffrey A Esq RENEWAL13Amy Elsner
1029Tony FollerIndia2026-05-08Feltz Printing Service UNQUALIFIED85Ioni Bowcher
1030Wickens NestleJapan2026-04-19Chemel, James L Cpa PROPOSAL1Onyama Limba
1031Deepesh ChuiFrance2026-05-03Printing Dimensions PROPOSAL9Xuxue Feng
1032Jennifer AmigonRussia2026-05-07Chanay, Jeffrey A Esq RENEWAL62Elwin Sharvill
1033Morrow RutaCanada2026-05-08King, Christopher A Esq NEW77Ivan Magalhaes
1034Chavez BriddickAustralia2026-04-17Benton, John B Jr PROPOSAL71Onyama Limba
1035Arvin AlbaresUnited Kingdom2026-04-23Chanay, Jeffrey A Esq RENEWAL26Ioni Bowcher
1036Jefferson SchemmerGermany2026-04-28Truhlar And Truhlar Attys NEW2Bernardo Dominic
1037Ashley DoeGermany2026-05-05Chemel, James L Cpa NEGOTIATION44Bernardo Dominic
1038Smith GlickArgentina2026-05-13Commercial Press NEW37Amy Elsner
1039Stacey MacleadFrance2026-04-27King, Christopher A Esq QUALIFIED80Asiya Javayant
1040Kadeem FlosiGermany2026-04-21Truhlar And Truhlar Attys PROPOSAL91Onyama Limba
1041Juan WieserRussia2026-04-29Morlong Associates NEW69Ivan Magalhaes
1042Leon OldroydSpain2026-04-30King, Christopher A Esq NEGOTIATION76Elwin Sharvill
1043Maria MarrierItaly2026-04-17Chemel, James L Cpa NEW37Ioni Bowcher
1044James ButtIndia2026-04-17Chanay, Jeffrey A Esq UNQUALIFIED35Ivan Magalhaes
1045Ivar PaprockiSpain2026-04-22Feiner Bros NEW39Bernardo Dominic
1046Aditya KuskoAustralia2026-04-22Printing Dimensions NEW40Elwin Sharvill
1047Ricardo GauchoCanada2026-05-05Rangoni Of Florence PROPOSAL49Ioni Bowcher
1048Antonio CaudyBrazil2026-05-09Chemel, James L Cpa PROPOSAL94Amy Elsner
1049Francesco ShinkoSpain2026-05-10Commercial Press RENEWAL35Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Darci PoquetteItalyAnna Fali NEW
Maria MarrierGermanyIoni Bowcher NEW
Aika InouyeJapanElwin Sharvill QUALIFIED
Misaki RoysterAustraliaAnna Fali NEW
Nicolas IturbideRussiaXuxue Feng UNQUALIFIED
Jones VocelkaUnited KingdomXuxue Feng PROPOSAL
Aruna FigeroaAustraliaBernardo Dominic RENEWAL
Izzy GarufiIndiaAsiya Javayant PROPOSAL
Johnson SergiAustraliaIvan Magalhaes PROPOSAL
Izzy GarufiJapanIoni Bowcher UNQUALIFIED
Cody SaylorsAustraliaStephen Shaw NEGOTIATION
Aditya KuskoGermanyIoni Bowcher NEW
Emily WhobreyIndiaStephen Shaw UNQUALIFIED
Leja CaldareraUnited KingdomXuxue Feng UNQUALIFIED
Maisha RulapaughCanadaOnyama Limba QUALIFIED
Francesco ShinkoJapanXuxue Feng QUALIFIED
Jennifer AmigonAustraliaOnyama Limba QUALIFIED
David DarakjyGermanyAsiya Javayant NEGOTIATION
Chavez BriddickCanadaStephen Shaw QUALIFIED
Greenwood BologniaAustraliaElwin Sharvill PROPOSAL
Maisha RulapaughGermanyAmy Elsner NEW
Smith GlickFranceAsiya Javayant RENEWAL
Jeanfrancois VenereCanadaIoni Bowcher RENEWAL
Arvin AlbaresUnited KingdomAnna Fali PROPOSAL
Jennifer AmigonGermanyAsiya Javayant UNQUALIFIED
Izzy GarufiJapanIvan Magalhaes RENEWAL
Aruna FigeroaCanadaStephen Shaw PROPOSAL
Cody SaylorsGermanyElwin Sharvill NEGOTIATION
Jones VocelkaArgentinaOnyama Limba UNQUALIFIED
Maria MarrierIndiaStephen Shaw QUALIFIED
Octavia MaletArgentinaAsiya Javayant UNQUALIFIED
Nicolas IturbideBrazilIvan Magalhaes RENEWAL
Wickens NestleIndiaElwin Sharvill UNQUALIFIED
Mayumi KolmetzFranceBernardo Dominic NEW
Kaitlin OstroskySpainOnyama Limba NEW
David DarakjyJapanBernardo Dominic NEGOTIATION
Salvatore StockhamItalyElwin Sharvill QUALIFIED
Adams MorascaCanadaAmy Elsner RENEWAL
Silvio SlusarskiAustraliaBernardo Dominic QUALIFIED
Ricardo GauchoItalyStephen Shaw RENEWAL
Costa DilliardArgentinaStephen Shaw QUALIFIED
Julie StensethRussiaIoni Bowcher RENEWAL
Juan WieserFranceIoni Bowcher NEGOTIATION
Salvatore StockhamFranceIoni Bowcher QUALIFIED
Munro FerenczIndiaAmy Elsner UNQUALIFIED
Ricardo GauchoFranceIoni Bowcher NEGOTIATION
Maria MarrierJapanIvan Magalhaes PROPOSAL
Deepesh ChuiCanadaAmy Elsner QUALIFIED
Leja CaldareraRussiaAnna Fali NEW
Jefferson SchemmerItalyElwin Sharvill NEGOTIATION
Frozen Columns
Name
Ricardo Gaucho
Jennifer Amigon
Leja Caldarera
Silvio Slusarski
Maria Marrier
Faith Gillian
Cody Saylors
Misaki Royster
Chavez Briddick
Stacey Maclead
Emily Whobrey
Ashley Doe
Darci Poquette
Maria Marrier
Darci Poquette
Jennifer Amigon
Tony Foller
Kadeem Flosi
Morrow Ruta
Nicolas Iturbide
Nicolas Iturbide
Julie Stenseth
Adams Morasca
Clifford Rim
Cody Saylors
Arvin Albares
David Darakjy
Ivar Paprocki
Julie Stenseth
David Darakjy
Darci Poquette
Aika Inouye
Faith Gillian
David Darakjy
Claire Tollner
Ricardo Gaucho
Darci Poquette
Julie Stenseth
Rodrigues Campain
Isabel Bowley
Johnson Sergi
Jennifer Amigon
Aika Inouye
David Darakjy
Jones Vocelka
Ashley Doe
Salvatore Stockham
Ivar Paprocki
Faith Gillian
Jeanfrancois Venere
IdCountryDate
1000Argentina2026-04-26
1001Russia2026-05-02
1002Canada2026-04-26
1003United Kingdom2026-05-04
1004Canada2026-04-20
1005Argentina2026-04-26
1006Australia2026-05-01
1007Argentina2026-04-15
1008Argentina2026-05-14
1009Japan2026-04-18
1010United Kingdom2026-04-21
1011India2026-04-20
1012India2026-05-08
1013United Kingdom2026-05-07
1014Italy2026-04-24
1015United Kingdom2026-04-17
1016Argentina2026-05-05
1017France2026-05-04
1018India2026-04-20
1019Japan2026-04-17
1020United Kingdom2026-04-20
1021Argentina2026-04-19
1022Argentina2026-04-27
1023Australia2026-05-09
1024Japan2026-04-29
1025Argentina2026-04-28
1026France2026-04-30
1027Russia2026-04-21
1028Spain2026-05-08
1029Argentina2026-04-22
1030Canada2026-05-12
1031Canada2026-04-19
1032Argentina2026-05-07
1033Italy2026-04-25
1034Brazil2026-05-02
1035Australia2026-04-21
1036United Kingdom2026-04-27
1037Germany2026-04-29
1038Japan2026-05-10
1039Germany2026-04-30
1040Canada2026-05-03
1041Italy2026-04-27
1042Italy2026-05-08
1043Russia2026-05-10
1044India2026-05-11
1045Australia2026-05-03
1046Australia2026-04-26
1047Germany2026-04-17
1048Canada2026-05-08
1049United Kingdom2026-05-08

On-Demand Data

NameIdCountryDate
Silvio Slusarski1000Canada2026-05-06
Alejandro Perin1001Russia2026-04-26
Salvatore Stockham1002India2026-05-03
Aruna Figeroa1003United Kingdom2026-04-26
Maria Marrier1004India2026-04-30
Costa Dilliard1005Australia2026-05-09
Nicolas Iturbide1006Australia2026-04-28
Juan Wieser1007Brazil2026-04-22
Mayumi Kolmetz1008Canada2026-05-08
Kadeem Flosi1009Japan2026-04-17
Jones Vocelka1010India2026-04-27
Maisha Rulapaugh1011Spain2026-04-15
Clifford Rim1012Canada2026-04-28
Julie Stenseth1013United Kingdom2026-04-25
Ashley Doe1014Argentina2026-05-08
Clifford Rim1015India2026-04-15
David Darakjy1016Italy2026-04-27
Adams Morasca1017Argentina2026-04-29
Ashley Doe1018Australia2026-04-15
Chavez Briddick1019India2026-05-03
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maria MarrierFranceStephen Shaw UNQUALIFIED
Jennifer AmigonUnited KingdomIvan Magalhaes UNQUALIFIED
Cody SaylorsCanadaStephen Shaw NEGOTIATION
Wickens NestleBrazilIvan Magalhaes QUALIFIED
Smith GlickArgentinaAsiya Javayant RENEWAL
Izzy GarufiJapanAsiya Javayant UNQUALIFIED
Clifford RimJapanXuxue Feng PROPOSAL
Ricardo GauchoArgentinaIvan Magalhaes QUALIFIED
Leja CaldareraCanadaXuxue Feng NEW
Jones VocelkaUnited KingdomBernardo Dominic RENEWAL
Mayumi KolmetzIndiaAmy Elsner UNQUALIFIED
Munro FerenczRussiaIoni Bowcher QUALIFIED
Julie StensethGermanyBernardo Dominic RENEWAL
Jennifer AmigonBrazilIoni Bowcher QUALIFIED
Juan WieserGermanyOnyama Limba UNQUALIFIED
Wickens NestleSpainElwin Sharvill NEW
Jefferson SchemmerRussiaElwin Sharvill NEW
Alejandro PerinFranceBernardo Dominic NEGOTIATION
Isabel BowleyIndiaAmy Elsner UNQUALIFIED
Chavez BriddickItalyElwin Sharvill NEW
Ricardo GauchoArgentinaBernardo Dominic RENEWAL
Jennifer AmigonUnited KingdomIvan Magalhaes PROPOSAL
Murillo MaletJapanAmy Elsner UNQUALIFIED
Adams MorascaAustraliaAsiya Javayant PROPOSAL
Leon OldroydBrazilAnna Fali NEW
Clifford RimUnited KingdomXuxue Feng NEGOTIATION
Rodrigues CampainRussiaAmy Elsner PROPOSAL
Smith GlickSpainIvan Magalhaes UNQUALIFIED
Johnson SergiRussiaElwin Sharvill RENEWAL
Morrow RutaIndiaAmy Elsner NEGOTIATION
Smith GlickArgentinaIvan Magalhaes PROPOSAL
Leja CaldareraJapanOnyama Limba PROPOSAL
Faith GillianJapanIoni Bowcher NEW
Tony FollerJapanAnna Fali NEGOTIATION
Sinclair WaycottArgentinaIoni Bowcher UNQUALIFIED
Chavez BriddickSpainBernardo Dominic QUALIFIED
Kadeem FlosiArgentinaAmy Elsner RENEWAL
Morrow RutaGermanyAnna Fali PROPOSAL
Juan WieserGermanyStephen Shaw RENEWAL
Cody SaylorsSpainOnyama Limba 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>