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
Francesco ShinkoRussiaAnna Fali RENEWAL
Stacey MacleadUnited KingdomOnyama Limba QUALIFIED
Arvin AlbaresBrazilBernardo Dominic NEGOTIATION
Francesco ShinkoUnited KingdomAnna Fali UNQUALIFIED
Jefferson SchemmerBrazilAnna Fali QUALIFIED
Octavia MaletArgentinaElwin Sharvill QUALIFIED
Francesco ShinkoAustraliaElwin Sharvill UNQUALIFIED
Aruna FigeroaBrazilAmy Elsner UNQUALIFIED
Misaki RoysterArgentinaElwin Sharvill NEW
Wickens NestleCanadaXuxue Feng NEW
Rodrigues CampainRussiaAnna Fali NEW
Jennifer AmigonBrazilBernardo Dominic UNQUALIFIED
James ButtRussiaXuxue Feng NEW
Deepesh ChuiRussiaXuxue Feng NEGOTIATION
Aika InouyeCanadaStephen Shaw PROPOSAL
Darci PoquetteItalyBernardo Dominic PROPOSAL
Ivar PaprockiBrazilIvan Magalhaes PROPOSAL
Maisha RulapaughCanadaAnna Fali RENEWAL
Aika InouyeIndiaStephen Shaw NEW
Jefferson SchemmerBrazilBernardo Dominic PROPOSAL
James ButtGermanyAnna Fali NEGOTIATION
David DarakjyItalyIvan Magalhaes NEGOTIATION
Emily WhobreyGermanyAnna Fali NEGOTIATION
Kaitlin OstroskySpainIvan Magalhaes QUALIFIED
Adams MorascaUnited KingdomAmy Elsner NEGOTIATION
Leon OldroydArgentinaElwin Sharvill PROPOSAL
Ashley DoeAustraliaAmy Elsner RENEWAL
Jeanfrancois VenereArgentinaAmy Elsner QUALIFIED
Jennifer AmigonCanadaXuxue Feng RENEWAL
Greenwood BologniaGermanyAsiya Javayant NEGOTIATION
Salvatore StockhamItalyElwin Sharvill RENEWAL
Misaki RoysterJapanAnna Fali NEW
Salvatore StockhamGermanyAmy Elsner NEW
Julie StensethUnited KingdomIvan Magalhaes QUALIFIED
Mayumi KolmetzUnited KingdomAsiya Javayant UNQUALIFIED
Mayumi KolmetzAustraliaBernardo Dominic QUALIFIED
Murillo MaletFranceElwin Sharvill RENEWAL
Leja CaldareraSpainIvan Magalhaes NEGOTIATION
Sinclair WaycottBrazilAsiya Javayant NEW
Murillo MaletCanadaXuxue Feng RENEWAL
Octavia MaletFranceAsiya Javayant QUALIFIED
Munro FerenczSpainAmy Elsner QUALIFIED
Greenwood BologniaAustraliaIvan Magalhaes PROPOSAL
Mujtaba NickaCanadaStephen Shaw PROPOSAL
Smith GlickSpainElwin Sharvill UNQUALIFIED
Tony FollerGermanyIoni Bowcher NEGOTIATION
David DarakjyItalyAnna Fali RENEWAL
Adams MorascaGermanyElwin Sharvill NEGOTIATION
Ivar PaprockiSpainAnna Fali PROPOSAL
Jefferson SchemmerJapanIvan Magalhaes UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Rodrigues CampainBrazilStephen Shaw NEGOTIATION
Clifford RimItalyXuxue Feng UNQUALIFIED
Antonio CaudyFranceAnna Fali PROPOSAL
Misaki RoysterIndiaStephen Shaw QUALIFIED
Deepesh ChuiFranceAmy Elsner NEW
Francesco ShinkoItalyBernardo Dominic RENEWAL
Aika InouyeArgentinaAsiya Javayant NEW
James ButtBrazilStephen Shaw UNQUALIFIED
Darci PoquetteCanadaIvan Magalhaes NEW
Arvin AlbaresUnited KingdomIoni Bowcher UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Johnson SergiItaly2026-06-17Commercial Press NEW28Ivan Magalhaes
1001Kadeem FlosiBrazil2026-06-18Truhlar And Truhlar Attys NEGOTIATION96Onyama Limba
1002Smith GlickGermany2026-06-18King, Christopher A Esq NEW95Elwin Sharvill
1003Octavia MaletIndia2026-06-04Chanay, Jeffrey A Esq RENEWAL16Ioni Bowcher
1004Ashley DoeJapan2026-06-14Rousseaux, Michael Esq NEW74Asiya Javayant
1005David DarakjyRussia2026-05-25Commercial Press PROPOSAL7Elwin Sharvill
1006Maria MarrierIndia2026-06-02Commercial Press QUALIFIED33Elwin Sharvill
1007Julie StensethSpain2026-06-02Rangoni Of Florence QUALIFIED37Xuxue Feng
1008Mayumi KolmetzJapan2026-06-07Feiner Bros RENEWAL21Xuxue Feng
1009Ashley DoeCanada2026-06-17Feltz Printing Service RENEWAL11Anna Fali
1010Mayumi KolmetzCanada2026-05-27Chanay, Jeffrey A Esq UNQUALIFIED98Asiya Javayant
1011Emily WhobreyArgentina2026-05-30Feltz Printing Service RENEWAL41Stephen Shaw
1012Clifford RimFrance2026-06-14Morlong Associates NEGOTIATION53Bernardo Dominic
1013Cody SaylorsSpain2026-06-02Dorl, James J Esq NEGOTIATION62Ivan Magalhaes
1014David DarakjySpain2026-06-10Commercial Press UNQUALIFIED10Onyama Limba
1015Jefferson SchemmerBrazil2026-06-16Chapman, Ross E Esq PROPOSAL21Amy Elsner
1016Jennifer AmigonItaly2026-06-01Feiner Bros UNQUALIFIED31Onyama Limba
1017Emily WhobreyArgentina2026-06-06King, Christopher A Esq QUALIFIED43Onyama Limba
1018Murillo MaletSpain2026-06-08Rangoni Of Florence QUALIFIED53Elwin Sharvill
1019Antonio CaudyFrance2026-05-26Chemel, James L Cpa QUALIFIED90Xuxue Feng
1020Octavia MaletSpain2026-06-02Feltz Printing Service UNQUALIFIED1Asiya Javayant
1021Smith GlickUnited Kingdom2026-06-13Buckley Miller Wright QUALIFIED31Onyama Limba
1022Julie StensethArgentina2026-05-26Printing Dimensions UNQUALIFIED83Anna Fali
1023Misaki RoysterIndia2026-05-25Dorl, James J Esq NEGOTIATION87Bernardo Dominic
1024Arvin AlbaresArgentina2026-05-26Printing Dimensions PROPOSAL39Stephen Shaw
1025Wickens NestleJapan2026-06-08Dorl, James J Esq RENEWAL61Bernardo Dominic
1026Greenwood BologniaIndia2026-05-22Dorl, James J Esq NEGOTIATION25Anna Fali
1027Izzy GarufiBrazil2026-05-28Dorl, James J Esq NEGOTIATION30Elwin Sharvill
1028James ButtFrance2026-06-19Rousseaux, Michael Esq PROPOSAL50Anna Fali
1029Maria MarrierFrance2026-05-22Chemel, James L Cpa PROPOSAL47Onyama Limba
1030Stacey MacleadJapan2026-06-01Morlong Associates UNQUALIFIED34Asiya Javayant
1031James ButtItaly2026-05-22Chanay, Jeffrey A Esq NEW35Xuxue Feng
1032Jefferson SchemmerRussia2026-06-10Dorl, James J Esq QUALIFIED67Ioni Bowcher
1033Octavia MaletUnited Kingdom2026-06-19Buckley Miller Wright PROPOSAL4Anna Fali
1034Kaitlin OstroskyUnited Kingdom2026-06-15Commercial Press NEW55Ioni Bowcher
1035Octavia MaletCanada2026-06-13Morlong Associates NEW78Amy Elsner
1036Tony FollerAustralia2026-05-23King, Christopher A Esq NEGOTIATION70Xuxue Feng
1037Wickens NestleArgentina2026-06-06Morlong Associates RENEWAL50Anna Fali
1038Aruna FigeroaGermany2026-06-01Chapman, Ross E Esq NEW3Bernardo Dominic
1039Salvatore StockhamArgentina2026-05-25Feltz Printing Service UNQUALIFIED38Stephen Shaw
1040Costa DilliardAustralia2026-05-30Morlong Associates UNQUALIFIED0Ioni Bowcher
1041Jefferson SchemmerGermany2026-06-08Rangoni Of Florence NEW62Xuxue Feng
1042Greenwood BologniaCanada2026-06-08Feltz Printing Service UNQUALIFIED51Xuxue Feng
1043Ivar PaprockiUnited Kingdom2026-05-23Rangoni Of Florence NEGOTIATION52Onyama Limba
1044Juan WieserArgentina2026-06-10Commercial Press NEW14Stephen Shaw
1045Smith GlickArgentina2026-05-30King, Christopher A Esq QUALIFIED7Ivan Magalhaes
1046Francesco ShinkoCanada2026-05-30Feiner Bros UNQUALIFIED98Amy Elsner
1047Stacey MacleadBrazil2026-05-29Feltz Printing Service QUALIFIED12Bernardo Dominic
1048Octavia MaletUnited Kingdom2026-05-23Feiner Bros QUALIFIED93Anna Fali
1049Rodrigues CampainCanada2026-06-13Rangoni Of Florence QUALIFIED41Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Ashley DoeGermanyElwin Sharvill PROPOSAL
Adams MorascaIndiaStephen Shaw RENEWAL
Aika InouyeFranceIoni Bowcher UNQUALIFIED
Cody SaylorsArgentinaBernardo Dominic NEW
Julie StensethGermanyIoni Bowcher UNQUALIFIED
Jeanfrancois VenereIndiaIoni Bowcher UNQUALIFIED
Antonio CaudyItalyBernardo Dominic RENEWAL
Kadeem FlosiFranceIvan Magalhaes NEW
James ButtGermanyAmy Elsner RENEWAL
Darci PoquetteFranceAsiya Javayant NEGOTIATION
Juan WieserAustraliaAnna Fali NEGOTIATION
Emily WhobreyFranceElwin Sharvill RENEWAL
Aruna FigeroaIndiaIvan Magalhaes NEGOTIATION
Jefferson SchemmerJapanAsiya Javayant UNQUALIFIED
Deepesh ChuiUnited KingdomIoni Bowcher PROPOSAL
Darci PoquetteGermanyAsiya Javayant NEGOTIATION
Silvio SlusarskiRussiaIvan Magalhaes PROPOSAL
Jennifer AmigonUnited KingdomIoni Bowcher UNQUALIFIED
David DarakjyAustraliaAnna Fali UNQUALIFIED
Adams MorascaJapanAsiya Javayant NEGOTIATION
James ButtItalyAsiya Javayant UNQUALIFIED
Julie StensethFranceOnyama Limba RENEWAL
Johnson SergiJapanAnna Fali PROPOSAL
Jeanfrancois VenereItalyOnyama Limba RENEWAL
Salvatore StockhamAustraliaIvan Magalhaes RENEWAL
Morrow RutaItalyBernardo Dominic UNQUALIFIED
Cody SaylorsCanadaOnyama Limba NEW
Isabel BowleyUnited KingdomElwin Sharvill PROPOSAL
Ricardo GauchoJapanAmy Elsner NEGOTIATION
Aruna FigeroaItalyElwin Sharvill NEW
Misaki RoysterFranceXuxue Feng UNQUALIFIED
Ricardo GauchoJapanAmy Elsner NEW
Maisha RulapaughAustraliaAnna Fali PROPOSAL
Aditya KuskoArgentinaXuxue Feng QUALIFIED
Jones VocelkaCanadaStephen Shaw PROPOSAL
Mujtaba NickaItalyXuxue Feng UNQUALIFIED
Wickens NestleCanadaElwin Sharvill NEW
Ashley DoeGermanyAnna Fali NEGOTIATION
Wickens NestleRussiaStephen Shaw NEW
Misaki RoysterAustraliaXuxue Feng PROPOSAL
Arvin AlbaresSpainAmy Elsner RENEWAL
Jefferson SchemmerGermanyStephen Shaw RENEWAL
Deepesh ChuiFranceBernardo Dominic NEW
Wickens NestleGermanyAsiya Javayant QUALIFIED
Jennifer AmigonBrazilStephen Shaw RENEWAL
Maisha RulapaughFranceAnna Fali NEW
Munro FerenczJapanOnyama Limba NEGOTIATION
Jones VocelkaUnited KingdomXuxue Feng UNQUALIFIED
Alejandro PerinAustraliaAmy Elsner NEW
Antonio CaudySpainIvan Magalhaes UNQUALIFIED
Frozen Columns
Name
Juan Wieser
Salvatore Stockham
Leon Oldroyd
Jones Vocelka
Maria Marrier
Leja Caldarera
Octavia Malet
Alejandro Perin
Munro Ferencz
Johnson Sergi
Juan Wieser
Claire Tollner
James Butt
David Darakjy
Octavia Malet
Stacey Maclead
Ashley Doe
Johnson Sergi
Silvio Slusarski
Smith Glick
Izzy Garufi
Ricardo Gaucho
Darci Poquette
Salvatore Stockham
Julie Stenseth
Mujtaba Nicka
Julie Stenseth
Izzy Garufi
Ivar Paprocki
Deepesh Chui
Ivar Paprocki
Munro Ferencz
Sinclair Waycott
Ashley Doe
Jefferson Schemmer
Morrow Ruta
Antonio Caudy
Emily Whobrey
Emily Whobrey
Antonio Caudy
Salvatore Stockham
Misaki Royster
Stacey Maclead
Francesco Shinko
Rodrigues Campain
Munro Ferencz
Darci Poquette
Jeanfrancois Venere
Leja Caldarera
Jones Vocelka
IdCountryDate
1000Italy2026-06-03
1001Spain2026-06-16
1002Australia2026-05-28
1003France2026-06-17
1004Australia2026-06-14
1005Russia2026-05-23
1006Japan2026-06-01
1007Germany2026-06-12
1008United Kingdom2026-05-29
1009Canada2026-05-27
1010Russia2026-05-22
1011Canada2026-06-08
1012France2026-06-12
1013Australia2026-06-16
1014India2026-06-18
1015Canada2026-06-05
1016Brazil2026-05-27
1017Argentina2026-05-31
1018Brazil2026-06-02
1019Argentina2026-06-19
1020Argentina2026-05-27
1021Italy2026-06-10
1022Argentina2026-06-01
1023Argentina2026-05-27
1024France2026-06-02
1025France2026-05-31
1026Italy2026-06-18
1027Russia2026-05-23
1028Russia2026-05-24
1029Russia2026-05-26
1030Brazil2026-05-31
1031Argentina2026-05-26
1032Canada2026-06-06
1033United Kingdom2026-05-27
1034United Kingdom2026-06-03
1035United Kingdom2026-05-26
1036France2026-06-07
1037Spain2026-06-01
1038Spain2026-06-16
1039Australia2026-06-04
1040Brazil2026-06-07
1041United Kingdom2026-06-06
1042Italy2026-06-14
1043Canada2026-06-10
1044India2026-06-01
1045Australia2026-06-11
1046France2026-06-06
1047France2026-06-06
1048Argentina2026-06-05
1049Spain2026-05-28

On-Demand Data

NameIdCountryDate
James Butt1000Japan2026-06-14
Nicolas Iturbide1001Spain2026-05-28
Rodrigues Campain1002Russia2026-06-11
Tony Foller1003Argentina2026-05-24
Sinclair Waycott1004Spain2026-06-14
Smith Glick1005India2026-06-07
Salvatore Stockham1006Spain2026-06-07
Claire Tollner1007Japan2026-05-24
Faith Gillian1008Italy2026-05-30
Antonio Caudy1009Japan2026-05-26
Darci Poquette1010Spain2026-05-23
Leon Oldroyd1011Germany2026-05-29
Misaki Royster1012Argentina2026-05-31
Sinclair Waycott1013Italy2026-06-12
Isabel Bowley1014Italy2026-05-24
Clifford Rim1015Spain2026-06-06
Maisha Rulapaugh1016Australia2026-06-05
Adams Morasca1017France2026-06-05
Clifford Rim1018Italy2026-06-15
Aditya Kusko1019Australia2026-06-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Faith GillianRussiaBernardo Dominic NEW
Octavia MaletFranceIoni Bowcher QUALIFIED
Antonio CaudyItalyStephen Shaw PROPOSAL
Leja CaldareraGermanyAnna Fali NEGOTIATION
Murillo MaletBrazilXuxue Feng RENEWAL
Chavez BriddickCanadaStephen Shaw PROPOSAL
Julie StensethSpainAmy Elsner NEGOTIATION
Chavez BriddickItalyStephen Shaw UNQUALIFIED
Johnson SergiJapanAmy Elsner QUALIFIED
Silvio SlusarskiAustraliaElwin Sharvill QUALIFIED
Aika InouyeJapanIvan Magalhaes NEW
Johnson SergiRussiaAsiya Javayant RENEWAL
Cody SaylorsIndiaIoni Bowcher PROPOSAL
Costa DilliardJapanIoni Bowcher RENEWAL
Deepesh ChuiItalyIoni Bowcher NEGOTIATION
Maisha RulapaughJapanAmy Elsner UNQUALIFIED
David DarakjySpainAmy Elsner NEGOTIATION
Jennifer AmigonAustraliaIvan Magalhaes NEW
Faith GillianArgentinaElwin Sharvill UNQUALIFIED
Emily WhobreyArgentinaElwin Sharvill NEGOTIATION
Jones VocelkaAustraliaXuxue Feng PROPOSAL
Claire TollnerSpainIvan Magalhaes PROPOSAL
Octavia MaletAustraliaBernardo Dominic RENEWAL
David DarakjySpainAmy Elsner UNQUALIFIED
Deepesh ChuiCanadaStephen Shaw PROPOSAL
Jennifer AmigonGermanyAsiya Javayant QUALIFIED
Claire TollnerUnited KingdomBernardo Dominic NEW
Murillo MaletBrazilXuxue Feng UNQUALIFIED
Adams MorascaJapanAsiya Javayant NEW
Jones VocelkaFranceAmy Elsner NEW
Sinclair WaycottBrazilOnyama Limba NEGOTIATION
Mujtaba NickaFranceBernardo Dominic NEGOTIATION
Arvin AlbaresGermanyIoni Bowcher RENEWAL
Morrow RutaItalyIoni Bowcher RENEWAL
Claire TollnerCanadaIoni Bowcher RENEWAL
Smith GlickBrazilStephen Shaw UNQUALIFIED
Francesco ShinkoBrazilAnna Fali NEGOTIATION
Faith GillianItalyOnyama Limba UNQUALIFIED
Salvatore StockhamUnited KingdomXuxue Feng QUALIFIED
Nicolas IturbideGermanyStephen 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>