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
Aika InouyeItalyAsiya Javayant NEGOTIATION
Emily WhobreyAustraliaIvan Magalhaes NEGOTIATION
Jennifer AmigonIndiaIoni Bowcher PROPOSAL
Stacey MacleadSpainStephen Shaw RENEWAL
Mayumi KolmetzCanadaIvan Magalhaes RENEWAL
Deepesh ChuiGermanyAmy Elsner PROPOSAL
Nicolas IturbideFranceAmy Elsner RENEWAL
Jones VocelkaSpainOnyama Limba QUALIFIED
Antonio CaudyJapanXuxue Feng PROPOSAL
Salvatore StockhamJapanAnna Fali UNQUALIFIED
Salvatore StockhamArgentinaAnna Fali PROPOSAL
Faith GillianSpainIoni Bowcher NEGOTIATION
Morrow RutaSpainIvan Magalhaes UNQUALIFIED
Claire TollnerRussiaIvan Magalhaes NEGOTIATION
Emily WhobreyRussiaOnyama Limba NEGOTIATION
Silvio SlusarskiAustraliaOnyama Limba RENEWAL
Kadeem FlosiArgentinaBernardo Dominic QUALIFIED
Leja CaldareraAustraliaIoni Bowcher QUALIFIED
Stacey MacleadArgentinaIvan Magalhaes RENEWAL
Jeanfrancois VenereJapanAmy Elsner QUALIFIED
Juan WieserArgentinaOnyama Limba UNQUALIFIED
Wickens NestleCanadaOnyama Limba PROPOSAL
Smith GlickAustraliaBernardo Dominic UNQUALIFIED
Salvatore StockhamCanadaAnna Fali NEW
Smith GlickJapanIoni Bowcher NEW
Clifford RimIndiaXuxue Feng UNQUALIFIED
Chavez BriddickSpainIvan Magalhaes PROPOSAL
Faith GillianRussiaAnna Fali NEW
Arvin AlbaresBrazilOnyama Limba PROPOSAL
Arvin AlbaresArgentinaAnna Fali RENEWAL
Maria MarrierFranceIvan Magalhaes PROPOSAL
Salvatore StockhamBrazilAsiya Javayant PROPOSAL
David DarakjyFranceAnna Fali NEW
Clifford RimUnited KingdomAmy Elsner UNQUALIFIED
Salvatore StockhamFranceBernardo Dominic UNQUALIFIED
Claire TollnerFranceAnna Fali RENEWAL
Octavia MaletAustraliaAsiya Javayant UNQUALIFIED
Morrow RutaJapanIoni Bowcher NEW
Ricardo GauchoGermanyIoni Bowcher PROPOSAL
Morrow RutaIndiaAmy Elsner NEW
Silvio SlusarskiCanadaOnyama Limba RENEWAL
Munro FerenczJapanAnna Fali NEW
Aika InouyeJapanElwin Sharvill QUALIFIED
Ivar PaprockiJapanIvan Magalhaes UNQUALIFIED
Juan WieserArgentinaAnna Fali RENEWAL
Faith GillianGermanyOnyama Limba RENEWAL
Maisha RulapaughSpainXuxue Feng UNQUALIFIED
Francesco ShinkoCanadaOnyama Limba NEW
Kaitlin OstroskyRussiaIvan Magalhaes RENEWAL
Emily WhobreyCanadaAmy Elsner PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Leja CaldareraItalyIvan Magalhaes PROPOSAL
Murillo MaletItalyElwin Sharvill UNQUALIFIED
Costa DilliardItalyOnyama Limba QUALIFIED
Octavia MaletArgentinaElwin Sharvill NEGOTIATION
Clifford RimIndiaAnna Fali QUALIFIED
Faith GillianCanadaIvan Magalhaes PROPOSAL
Ricardo GauchoUnited KingdomStephen Shaw RENEWAL
Chavez BriddickFranceAmy Elsner PROPOSAL
Murillo MaletSpainStephen Shaw NEGOTIATION
Adams MorascaCanadaAsiya Javayant QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maria MarrierSpain2026-05-18Rangoni Of Florence NEGOTIATION11Xuxue Feng
1001Aruna FigeroaIndia2026-05-05Buckley Miller Wright NEGOTIATION65Ivan Magalhaes
1002Jones VocelkaCanada2026-05-08Morlong Associates PROPOSAL8Amy Elsner
1003Tony FollerFrance2026-04-27Rangoni Of Florence QUALIFIED11Xuxue Feng
1004Izzy GarufiItaly2026-05-03Chemel, James L Cpa QUALIFIED99Anna Fali
1005Aditya KuskoAustralia2026-05-09Rangoni Of Florence UNQUALIFIED61Asiya Javayant
1006David DarakjyBrazil2026-05-12Chanay, Jeffrey A Esq RENEWAL29Asiya Javayant
1007Morrow RutaUnited Kingdom2026-05-14King, Christopher A Esq NEGOTIATION2Asiya Javayant
1008Darci PoquetteArgentina2026-05-17Rangoni Of Florence UNQUALIFIED40Bernardo Dominic
1009Kaitlin OstroskyItaly2026-05-07Chanay, Jeffrey A Esq PROPOSAL83Bernardo Dominic
1010Antonio CaudyJapan2026-05-16Chapman, Ross E Esq UNQUALIFIED34Amy Elsner
1011Isabel BowleyFrance2026-04-30Morlong Associates UNQUALIFIED51Elwin Sharvill
1012Leja CaldareraRussia2026-05-01Commercial Press NEW75Amy Elsner
1013Misaki RoysterArgentina2026-05-13Rousseaux, Michael Esq UNQUALIFIED49Asiya Javayant
1014Faith GillianItaly2026-05-18Printing Dimensions NEGOTIATION79Amy Elsner
1015Mujtaba NickaSpain2026-04-28Rousseaux, Michael Esq RENEWAL65Anna Fali
1016Mujtaba NickaIndia2026-04-24Truhlar And Truhlar Attys NEGOTIATION37Elwin Sharvill
1017Aruna FigeroaArgentina2026-05-02Printing Dimensions NEW30Stephen Shaw
1018Octavia MaletBrazil2026-05-08Commercial Press NEW93Ioni Bowcher
1019Morrow RutaRussia2026-05-07Morlong Associates PROPOSAL56Asiya Javayant
1020Izzy GarufiUnited Kingdom2026-05-08Commercial Press NEW82Bernardo Dominic
1021Murillo MaletCanada2026-05-15Commercial Press NEW31Amy Elsner
1022Jones VocelkaJapan2026-05-16King, Christopher A Esq RENEWAL31Ioni Bowcher
1023Aika InouyeAustralia2026-05-19Dorl, James J Esq NEW10Asiya Javayant
1024Nicolas IturbideAustralia2026-05-01King, Christopher A Esq RENEWAL30Anna Fali
1025Jeanfrancois VenereBrazil2026-05-15Rousseaux, Michael Esq PROPOSAL95Ioni Bowcher
1026Aditya KuskoRussia2026-05-11Benton, John B Jr NEW51Xuxue Feng
1027Ivar PaprockiBrazil2026-05-21Rousseaux, Michael Esq QUALIFIED20Bernardo Dominic
1028Adams MorascaFrance2026-05-13Commercial Press RENEWAL61Asiya Javayant
1029Silvio SlusarskiGermany2026-05-22Feiner Bros PROPOSAL83Ivan Magalhaes
1030Rodrigues CampainJapan2026-05-18Morlong Associates RENEWAL39Ioni Bowcher
1031Juan WieserAustralia2026-05-21Morlong Associates UNQUALIFIED90Stephen Shaw
1032Silvio SlusarskiArgentina2026-05-05Rangoni Of Florence NEGOTIATION26Onyama Limba
1033Emily WhobreyArgentina2026-05-15Rousseaux, Michael Esq NEW3Onyama Limba
1034Cody SaylorsItaly2026-05-01Truhlar And Truhlar Attys NEGOTIATION54Asiya Javayant
1035Francesco ShinkoArgentina2026-05-17Buckley Miller Wright QUALIFIED0Elwin Sharvill
1036Ivar PaprockiBrazil2026-05-10Chapman, Ross E Esq NEW8Anna Fali
1037Maisha RulapaughSpain2026-05-17Feiner Bros RENEWAL64Ivan Magalhaes
1038Antonio CaudyIndia2026-05-01Chapman, Ross E Esq UNQUALIFIED40Asiya Javayant
1039Leon OldroydCanada2026-05-15Rangoni Of Florence UNQUALIFIED51Amy Elsner
1040Deepesh ChuiJapan2026-05-13Morlong Associates RENEWAL40Amy Elsner
1041Aditya KuskoCanada2026-04-25Feiner Bros NEGOTIATION98Xuxue Feng
1042Greenwood BologniaRussia2026-05-11Benton, John B Jr QUALIFIED56Onyama Limba
1043Greenwood BologniaArgentina2026-05-09King, Christopher A Esq UNQUALIFIED61Asiya Javayant
1044Smith GlickRussia2026-05-04Morlong Associates RENEWAL12Elwin Sharvill
1045Munro FerenczFrance2026-05-21Commercial Press QUALIFIED49Stephen Shaw
1046Deepesh ChuiItaly2026-05-07Chapman, Ross E Esq QUALIFIED64Amy Elsner
1047Greenwood BologniaGermany2026-05-03Benton, John B Jr QUALIFIED71Anna Fali
1048Claire TollnerRussia2026-05-04Morlong Associates NEW10Ivan Magalhaes
1049Misaki RoysterAustralia2026-05-02Benton, John B Jr QUALIFIED83Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Wickens NestleItalyAsiya Javayant NEGOTIATION
Octavia MaletFranceElwin Sharvill UNQUALIFIED
Morrow RutaUnited KingdomBernardo Dominic PROPOSAL
Maria MarrierUnited KingdomAnna Fali NEW
Chavez BriddickCanadaAnna Fali NEGOTIATION
Maisha RulapaughUnited KingdomStephen Shaw RENEWAL
Ashley DoeCanadaStephen Shaw UNQUALIFIED
Juan WieserIndiaXuxue Feng QUALIFIED
Misaki RoysterJapanIvan Magalhaes QUALIFIED
Cody SaylorsItalyBernardo Dominic QUALIFIED
Jeanfrancois VenereItalyElwin Sharvill UNQUALIFIED
Morrow RutaUnited KingdomAmy Elsner UNQUALIFIED
Munro FerenczCanadaOnyama Limba QUALIFIED
Leja CaldareraAustraliaAsiya Javayant PROPOSAL
Murillo MaletRussiaStephen Shaw NEW
Cody SaylorsAustraliaStephen Shaw NEW
Chavez BriddickUnited KingdomIvan Magalhaes PROPOSAL
Leon OldroydJapanIvan Magalhaes NEW
Kadeem FlosiGermanyAsiya Javayant NEW
Mayumi KolmetzIndiaOnyama Limba UNQUALIFIED
Morrow RutaArgentinaXuxue Feng NEGOTIATION
Ivar PaprockiJapanBernardo Dominic NEW
Octavia MaletSpainStephen Shaw QUALIFIED
Francesco ShinkoIndiaStephen Shaw UNQUALIFIED
Nicolas IturbideAustraliaElwin Sharvill QUALIFIED
Kaitlin OstroskyFranceOnyama Limba NEW
Chavez BriddickFranceXuxue Feng PROPOSAL
Mayumi KolmetzJapanAsiya Javayant QUALIFIED
Emily WhobreyAustraliaOnyama Limba NEGOTIATION
Arvin AlbaresGermanyAmy Elsner QUALIFIED
James ButtRussiaAmy Elsner NEGOTIATION
Leja CaldareraItalyElwin Sharvill UNQUALIFIED
Rodrigues CampainCanadaIoni Bowcher NEGOTIATION
Johnson SergiCanadaOnyama Limba NEGOTIATION
Julie StensethUnited KingdomAnna Fali NEGOTIATION
Juan WieserCanadaAnna Fali RENEWAL
Johnson SergiBrazilAnna Fali QUALIFIED
Julie StensethItalyAnna Fali QUALIFIED
Ricardo GauchoArgentinaOnyama Limba NEGOTIATION
Francesco ShinkoCanadaBernardo Dominic UNQUALIFIED
Mujtaba NickaCanadaStephen Shaw NEW
Wickens NestleBrazilAnna Fali QUALIFIED
Deepesh ChuiItalyIvan Magalhaes NEGOTIATION
Ashley DoeGermanyAmy Elsner RENEWAL
Alejandro PerinFranceAsiya Javayant UNQUALIFIED
Wickens NestleJapanElwin Sharvill QUALIFIED
Francesco ShinkoArgentinaIvan Magalhaes RENEWAL
Juan WieserUnited KingdomAmy Elsner RENEWAL
Arvin AlbaresSpainStephen Shaw UNQUALIFIED
Wickens NestleRussiaOnyama Limba RENEWAL
Frozen Columns
Name
Mayumi Kolmetz
Isabel Bowley
Alejandro Perin
Costa Dilliard
Deepesh Chui
Isabel Bowley
Deepesh Chui
Isabel Bowley
Faith Gillian
Salvatore Stockham
Jeanfrancois Venere
David Darakjy
Claire Tollner
Mayumi Kolmetz
Tony Foller
Morrow Ruta
Sinclair Waycott
Ricardo Gaucho
Julie Stenseth
Tony Foller
Costa Dilliard
Ivar Paprocki
Adams Morasca
Ricardo Gaucho
Murillo Malet
Misaki Royster
Stacey Maclead
Greenwood Bolognia
Mujtaba Nicka
Francesco Shinko
Greenwood Bolognia
Wickens Nestle
Deepesh Chui
Jennifer Amigon
Sinclair Waycott
Wickens Nestle
Octavia Malet
Ivar Paprocki
James Butt
Leon Oldroyd
Kaitlin Ostrosky
Alejandro Perin
Chavez Briddick
Aika Inouye
Sinclair Waycott
Tony Foller
Francesco Shinko
James Butt
Alejandro Perin
Maria Marrier
IdCountryDate
1000Canada2026-05-13
1001Germany2026-04-27
1002Brazil2026-05-04
1003Argentina2026-04-30
1004United Kingdom2026-05-10
1005Japan2026-04-25
1006Australia2026-05-06
1007Argentina2026-05-04
1008Russia2026-05-09
1009France2026-05-11
1010Japan2026-05-01
1011Argentina2026-05-18
1012Australia2026-05-01
1013Russia2026-05-08
1014India2026-05-15
1015Russia2026-05-15
1016Germany2026-04-24
1017India2026-04-29
1018Canada2026-05-10
1019Russia2026-05-02
1020United Kingdom2026-05-15
1021United Kingdom2026-05-21
1022Russia2026-05-06
1023France2026-04-29
1024Argentina2026-05-13
1025Canada2026-04-26
1026Italy2026-05-04
1027Japan2026-04-30
1028France2026-04-29
1029Spain2026-05-11
1030Australia2026-04-29
1031India2026-04-30
1032Brazil2026-04-23
1033Australia2026-05-13
1034Spain2026-04-28
1035Argentina2026-05-22
1036United Kingdom2026-05-13
1037Japan2026-05-10
1038India2026-05-01
1039France2026-05-20
1040Spain2026-04-27
1041Canada2026-04-27
1042Australia2026-05-07
1043Spain2026-05-11
1044France2026-05-12
1045India2026-05-18
1046Australia2026-05-10
1047India2026-04-27
1048France2026-05-20
1049Australia2026-05-13

On-Demand Data

NameIdCountryDate
David Darakjy1000Brazil2026-05-12
Maisha Rulapaugh1001Japan2026-04-26
Mujtaba Nicka1002Brazil2026-04-28
Julie Stenseth1003Canada2026-05-20
Morrow Ruta1004Argentina2026-05-11
Emily Whobrey1005Italy2026-05-22
Kaitlin Ostrosky1006Canada2026-04-28
Murillo Malet1007India2026-04-23
Murillo Malet1008India2026-05-01
Julie Stenseth1009Australia2026-04-25
Arvin Albares1010Argentina2026-04-27
Clifford Rim1011Russia2026-04-24
Murillo Malet1012Spain2026-05-06
Ivar Paprocki1013Argentina2026-05-07
Misaki Royster1014France2026-05-17
Aditya Kusko1015Japan2026-04-29
Kadeem Flosi1016Argentina2026-05-14
Juan Wieser1017Brazil2026-05-08
Claire Tollner1018Italy2026-05-21
Darci Poquette1019Spain2026-04-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Wickens NestleIndiaElwin Sharvill NEW
Alejandro PerinCanadaAsiya Javayant PROPOSAL
Julie StensethJapanIvan Magalhaes NEW
Johnson SergiGermanyStephen Shaw NEW
Maisha RulapaughIndiaOnyama Limba RENEWAL
Aruna FigeroaArgentinaAsiya Javayant PROPOSAL
Stacey MacleadArgentinaOnyama Limba NEW
Silvio SlusarskiBrazilOnyama Limba NEW
Ashley DoeSpainAsiya Javayant NEGOTIATION
Tony FollerIndiaOnyama Limba UNQUALIFIED
Leon OldroydItalyIoni Bowcher PROPOSAL
Morrow RutaAustraliaElwin Sharvill UNQUALIFIED
Juan WieserFranceAmy Elsner QUALIFIED
Isabel BowleyIndiaStephen Shaw NEGOTIATION
Stacey MacleadJapanAmy Elsner RENEWAL
Jeanfrancois VenereUnited KingdomAnna Fali RENEWAL
Jefferson SchemmerSpainAnna Fali RENEWAL
Kaitlin OstroskyRussiaXuxue Feng NEGOTIATION
Ivar PaprockiFranceIvan Magalhaes NEW
Chavez BriddickJapanOnyama Limba NEW
Ivar PaprockiFranceAmy Elsner QUALIFIED
Stacey MacleadItalyStephen Shaw RENEWAL
Kadeem FlosiSpainIvan Magalhaes PROPOSAL
Smith GlickUnited KingdomIvan Magalhaes RENEWAL
Aika InouyeItalyAmy Elsner PROPOSAL
Sinclair WaycottFranceBernardo Dominic UNQUALIFIED
Darci PoquetteFranceOnyama Limba NEW
Morrow RutaUnited KingdomXuxue Feng PROPOSAL
Stacey MacleadRussiaStephen Shaw UNQUALIFIED
Maria MarrierRussiaAsiya Javayant UNQUALIFIED
Nicolas IturbideArgentinaOnyama Limba QUALIFIED
James ButtIndiaIvan Magalhaes NEGOTIATION
Stacey MacleadIndiaXuxue Feng RENEWAL
Kadeem FlosiSpainElwin Sharvill NEGOTIATION
Aditya KuskoGermanyAnna Fali PROPOSAL
Jennifer AmigonCanadaAsiya Javayant PROPOSAL
Cody SaylorsCanadaElwin Sharvill NEW
Greenwood BologniaArgentinaAmy Elsner QUALIFIED
Cody SaylorsItalyIoni Bowcher NEGOTIATION
Ricardo GauchoGermanyStephen 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>