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
Johnson SergiUnited KingdomIoni Bowcher NEGOTIATION
David DarakjyUnited KingdomElwin Sharvill NEGOTIATION
Isabel BowleyRussiaAmy Elsner PROPOSAL
Costa DilliardArgentinaElwin Sharvill PROPOSAL
Smith GlickAustraliaAmy Elsner NEW
Mujtaba NickaItalyIoni Bowcher PROPOSAL
Costa DilliardJapanIoni Bowcher RENEWAL
Rodrigues CampainUnited KingdomElwin Sharvill UNQUALIFIED
Clifford RimJapanElwin Sharvill NEW
Antonio CaudyArgentinaIoni Bowcher PROPOSAL
Cody SaylorsGermanyAnna Fali RENEWAL
Emily WhobreyBrazilAmy Elsner UNQUALIFIED
Octavia MaletIndiaIvan Magalhaes RENEWAL
Mujtaba NickaBrazilStephen Shaw NEGOTIATION
Mujtaba NickaIndiaStephen Shaw NEGOTIATION
Julie StensethUnited KingdomIvan Magalhaes NEW
Ashley DoeUnited KingdomOnyama Limba PROPOSAL
Johnson SergiFranceOnyama Limba NEGOTIATION
Arvin AlbaresSpainXuxue Feng UNQUALIFIED
Juan WieserRussiaXuxue Feng UNQUALIFIED
Aruna FigeroaJapanAsiya Javayant NEGOTIATION
James ButtRussiaOnyama Limba PROPOSAL
Nicolas IturbideBrazilAsiya Javayant NEGOTIATION
Murillo MaletBrazilAmy Elsner RENEWAL
Sinclair WaycottArgentinaAmy Elsner NEGOTIATION
Salvatore StockhamRussiaAmy Elsner QUALIFIED
Kadeem FlosiGermanyIvan Magalhaes QUALIFIED
Greenwood BologniaUnited KingdomIoni Bowcher PROPOSAL
Claire TollnerIndiaIvan Magalhaes NEGOTIATION
David DarakjyGermanyXuxue Feng RENEWAL
Alejandro PerinAustraliaIvan Magalhaes UNQUALIFIED
Darci PoquetteArgentinaStephen Shaw NEW
Jeanfrancois VenereSpainXuxue Feng PROPOSAL
Misaki RoysterIndiaXuxue Feng QUALIFIED
Nicolas IturbideAustraliaStephen Shaw NEW
Faith GillianArgentinaBernardo Dominic QUALIFIED
Emily WhobreyItalyIvan Magalhaes UNQUALIFIED
Jennifer AmigonGermanyAmy Elsner NEW
Chavez BriddickCanadaOnyama Limba RENEWAL
Ivar PaprockiBrazilAnna Fali NEGOTIATION
Cody SaylorsAustraliaXuxue Feng PROPOSAL
James ButtJapanIvan Magalhaes NEGOTIATION
Arvin AlbaresAustraliaAsiya Javayant UNQUALIFIED
Aika InouyeFranceBernardo Dominic NEW
Misaki RoysterIndiaStephen Shaw UNQUALIFIED
Adams MorascaCanadaAnna Fali UNQUALIFIED
Morrow RutaIndiaIvan Magalhaes UNQUALIFIED
Izzy GarufiRussiaBernardo Dominic QUALIFIED
Leon OldroydJapanBernardo Dominic RENEWAL
Adams MorascaFranceBernardo Dominic QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Salvatore StockhamItalyStephen Shaw NEGOTIATION
Kadeem FlosiUnited KingdomBernardo Dominic UNQUALIFIED
Aditya KuskoJapanStephen Shaw QUALIFIED
David DarakjyAustraliaAsiya Javayant UNQUALIFIED
Jones VocelkaSpainAsiya Javayant RENEWAL
Izzy GarufiAustraliaIoni Bowcher PROPOSAL
Antonio CaudyArgentinaIvan Magalhaes QUALIFIED
Claire TollnerRussiaAsiya Javayant NEW
Kaitlin OstroskyRussiaBernardo Dominic PROPOSAL
Izzy GarufiGermanyAmy Elsner UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Murillo MaletCanada2026-03-31Rangoni Of Florence QUALIFIED9Xuxue Feng
1001Kaitlin OstroskyItaly2026-04-12Feiner Bros PROPOSAL21Stephen Shaw
1002Chavez BriddickItaly2026-04-21Benton, John B Jr PROPOSAL62Onyama Limba
1003Silvio SlusarskiSpain2026-04-02Benton, John B Jr RENEWAL29Amy Elsner
1004Claire TollnerJapan2026-04-24Feltz Printing Service PROPOSAL72Asiya Javayant
1005Isabel BowleyGermany2026-04-01Feltz Printing Service NEGOTIATION8Asiya Javayant
1006Julie StensethGermany2026-04-16Chemel, James L Cpa UNQUALIFIED65Stephen Shaw
1007Aditya KuskoIndia2026-04-12Chanay, Jeffrey A Esq PROPOSAL72Onyama Limba
1008Silvio SlusarskiFrance2026-04-07Chemel, James L Cpa NEGOTIATION21Amy Elsner
1009Costa DilliardSpain2026-03-29Chapman, Ross E Esq RENEWAL61Elwin Sharvill
1010Murillo MaletAustralia2026-04-22Chanay, Jeffrey A Esq NEGOTIATION48Xuxue Feng
1011Salvatore StockhamCanada2026-04-09Rangoni Of Florence NEGOTIATION10Amy Elsner
1012Leon OldroydSpain2026-04-13Chanay, Jeffrey A Esq NEGOTIATION49Anna Fali
1013Salvatore StockhamRussia2026-04-04Feltz Printing Service NEW37Xuxue Feng
1014Kadeem FlosiFrance2026-04-18Benton, John B Jr QUALIFIED93Onyama Limba
1015Francesco ShinkoGermany2026-04-25Buckley Miller Wright NEW69Anna Fali
1016Morrow RutaGermany2026-04-18Chapman, Ross E Esq NEW74Asiya Javayant
1017Mayumi KolmetzSpain2026-04-11Chemel, James L Cpa RENEWAL92Stephen Shaw
1018James ButtArgentina2026-04-11Feiner Bros NEGOTIATION89Anna Fali
1019Maisha RulapaughBrazil2026-04-01Benton, John B Jr NEW90Onyama Limba
1020Morrow RutaUnited Kingdom2026-04-22Printing Dimensions NEGOTIATION79Onyama Limba
1021Murillo MaletSpain2026-04-21Morlong Associates UNQUALIFIED91Asiya Javayant
1022Chavez BriddickUnited Kingdom2026-04-25Morlong Associates NEW29Amy Elsner
1023Nicolas IturbideFrance2026-04-06Rousseaux, Michael Esq NEW45Bernardo Dominic
1024Antonio CaudyIndia2026-04-06Printing Dimensions UNQUALIFIED37Onyama Limba
1025Murillo MaletIndia2026-04-23Chemel, James L Cpa QUALIFIED89Asiya Javayant
1026Mayumi KolmetzAustralia2026-04-20Truhlar And Truhlar Attys NEW47Elwin Sharvill
1027Chavez BriddickFrance2026-03-30Feiner Bros NEW14Amy Elsner
1028Nicolas IturbideGermany2026-04-06Rangoni Of Florence NEW4Xuxue Feng
1029Tony FollerCanada2026-04-19Dorl, James J Esq NEW11Xuxue Feng
1030Juan WieserFrance2026-04-24Rangoni Of Florence PROPOSAL18Ioni Bowcher
1031Clifford RimCanada2026-03-29Dorl, James J Esq PROPOSAL32Asiya Javayant
1032Izzy GarufiUnited Kingdom2026-04-18Commercial Press NEW32Bernardo Dominic
1033Costa DilliardGermany2026-04-15Feiner Bros NEGOTIATION74Ivan Magalhaes
1034Leja CaldareraBrazil2026-04-08Printing Dimensions RENEWAL87Elwin Sharvill
1035Maria MarrierIndia2026-04-12Morlong Associates QUALIFIED28Amy Elsner
1036Deepesh ChuiRussia2026-04-12King, Christopher A Esq NEW82Elwin Sharvill
1037Adams MorascaIndia2026-04-15Chemel, James L Cpa NEW18Amy Elsner
1038Leon OldroydRussia2026-04-03Buckley Miller Wright NEW33Ioni Bowcher
1039Kaitlin OstroskyArgentina2026-04-09Morlong Associates NEGOTIATION84Ivan Magalhaes
1040Aruna FigeroaRussia2026-03-31Chapman, Ross E Esq RENEWAL95Elwin Sharvill
1041Silvio SlusarskiAustralia2026-04-11Commercial Press PROPOSAL88Anna Fali
1042Jeanfrancois VenereJapan2026-03-30Morlong Associates QUALIFIED43Stephen Shaw
1043Cody SaylorsAustralia2026-04-16Benton, John B Jr RENEWAL73Ivan Magalhaes
1044Rodrigues CampainFrance2026-04-18Printing Dimensions RENEWAL64Amy Elsner
1045Aditya KuskoArgentina2026-03-29Benton, John B Jr NEGOTIATION29Anna Fali
1046Aruna FigeroaRussia2026-04-19Buckley Miller Wright PROPOSAL39Xuxue Feng
1047Ashley DoeJapan2026-04-20Commercial Press PROPOSAL11Ivan Magalhaes
1048Emily WhobreySpain2026-04-17King, Christopher A Esq PROPOSAL37Stephen Shaw
1049Silvio SlusarskiSpain2026-04-05King, Christopher A Esq RENEWAL6Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Aditya KuskoFranceStephen Shaw RENEWAL
Jeanfrancois VenereAustraliaOnyama Limba NEW
Salvatore StockhamFranceStephen Shaw NEGOTIATION
Maisha RulapaughAustraliaXuxue Feng NEGOTIATION
Costa DilliardItalyAmy Elsner NEGOTIATION
David DarakjyRussiaOnyama Limba NEW
Deepesh ChuiCanadaXuxue Feng NEGOTIATION
Emily WhobreySpainAnna Fali QUALIFIED
Arvin AlbaresItalyIoni Bowcher RENEWAL
Claire TollnerUnited KingdomOnyama Limba RENEWAL
Faith GillianSpainIvan Magalhaes UNQUALIFIED
Munro FerenczJapanBernardo Dominic NEGOTIATION
Smith GlickSpainAsiya Javayant RENEWAL
Claire TollnerSpainAsiya Javayant PROPOSAL
Darci PoquetteGermanyXuxue Feng QUALIFIED
Cody SaylorsRussiaElwin Sharvill NEGOTIATION
Rodrigues CampainFranceStephen Shaw NEGOTIATION
Jones VocelkaCanadaStephen Shaw NEGOTIATION
Jefferson SchemmerFranceOnyama Limba NEW
Jennifer AmigonSpainIoni Bowcher NEGOTIATION
Kaitlin OstroskyItalyAnna Fali UNQUALIFIED
Leja CaldareraIndiaAnna Fali QUALIFIED
Wickens NestleRussiaStephen Shaw RENEWAL
Silvio SlusarskiUnited KingdomAmy Elsner NEW
Arvin AlbaresUnited KingdomXuxue Feng NEW
Faith GillianIndiaStephen Shaw NEW
Ivar PaprockiRussiaAnna Fali PROPOSAL
Izzy GarufiFranceAnna Fali UNQUALIFIED
Misaki RoysterRussiaAnna Fali NEW
Aruna FigeroaBrazilAmy Elsner NEW
Misaki RoysterIndiaStephen Shaw PROPOSAL
Clifford RimArgentinaIvan Magalhaes PROPOSAL
Jennifer AmigonJapanXuxue Feng NEW
David DarakjyFranceBernardo Dominic RENEWAL
Arvin AlbaresItalyBernardo Dominic NEW
Greenwood BologniaArgentinaAsiya Javayant QUALIFIED
Silvio SlusarskiGermanyStephen Shaw QUALIFIED
Morrow RutaUnited KingdomAnna Fali NEW
Jefferson SchemmerBrazilStephen Shaw RENEWAL
Aruna FigeroaFranceOnyama Limba UNQUALIFIED
Smith GlickBrazilAsiya Javayant PROPOSAL
Jefferson SchemmerItalyOnyama Limba PROPOSAL
Nicolas IturbideRussiaStephen Shaw NEW
Faith GillianCanadaStephen Shaw NEW
Tony FollerGermanyElwin Sharvill PROPOSAL
Morrow RutaItalyIoni Bowcher NEW
Salvatore StockhamFranceXuxue Feng NEW
Greenwood BologniaJapanAnna Fali NEGOTIATION
Ivar PaprockiJapanIvan Magalhaes NEGOTIATION
Arvin AlbaresAustraliaOnyama Limba NEW
Frozen Columns
Name
Ivar Paprocki
Kaitlin Ostrosky
Jefferson Schemmer
Leon Oldroyd
Greenwood Bolognia
Leon Oldroyd
Emily Whobrey
Sinclair Waycott
Jefferson Schemmer
Stacey Maclead
Adams Morasca
Clifford Rim
Maisha Rulapaugh
Francesco Shinko
Salvatore Stockham
Faith Gillian
Kadeem Flosi
Isabel Bowley
David Darakjy
Jefferson Schemmer
Kaitlin Ostrosky
Wickens Nestle
Julie Stenseth
Stacey Maclead
Leja Caldarera
Maria Marrier
Salvatore Stockham
Antonio Caudy
Ivar Paprocki
Wickens Nestle
Stacey Maclead
Isabel Bowley
Kaitlin Ostrosky
Misaki Royster
Julie Stenseth
Claire Tollner
Leja Caldarera
James Butt
Darci Poquette
Costa Dilliard
Maisha Rulapaugh
Stacey Maclead
Jennifer Amigon
Cody Saylors
Greenwood Bolognia
Morrow Ruta
Adams Morasca
Juan Wieser
Jefferson Schemmer
Alejandro Perin
IdCountryDate
1000Canada2026-04-14
1001Germany2026-04-07
1002Argentina2026-04-18
1003France2026-04-11
1004India2026-04-13
1005Spain2026-04-02
1006Australia2026-04-04
1007India2026-04-10
1008Argentina2026-04-27
1009Brazil2026-04-08
1010Argentina2026-04-05
1011Canada2026-04-15
1012Argentina2026-04-25
1013India2026-04-09
1014Japan2026-04-23
1015Germany2026-03-29
1016Canada2026-04-10
1017Japan2026-04-21
1018Germany2026-04-18
1019India2026-04-07
1020France2026-04-19
1021France2026-04-19
1022Brazil2026-04-27
1023India2026-04-10
1024Japan2026-03-30
1025Italy2026-04-03
1026Japan2026-04-01
1027Argentina2026-04-22
1028Brazil2026-03-30
1029India2026-04-22
1030Australia2026-04-18
1031United Kingdom2026-04-24
1032Germany2026-04-16
1033France2026-04-12
1034Brazil2026-04-26
1035United Kingdom2026-04-04
1036India2026-04-21
1037Argentina2026-03-31
1038Japan2026-04-24
1039India2026-04-03
1040Australia2026-03-30
1041India2026-03-30
1042Italy2026-04-14
1043Italy2026-04-22
1044Canada2026-04-26
1045Australia2026-03-29
1046Brazil2026-03-31
1047Canada2026-04-18
1048Italy2026-04-21
1049India2026-04-05

On-Demand Data

NameIdCountryDate
Ivar Paprocki1000United Kingdom2026-04-02
Clifford Rim1001Russia2026-03-30
Wickens Nestle1002Canada2026-04-06
Cody Saylors1003Germany2026-03-30
Salvatore Stockham1004United Kingdom2026-04-27
Julie Stenseth1005Italy2026-04-15
Kadeem Flosi1006Italy2026-04-26
Ashley Doe1007Australia2026-04-26
Arvin Albares1008Spain2026-04-02
Salvatore Stockham1009France2026-04-15
Murillo Malet1010Canada2026-04-23
Silvio Slusarski1011Australia2026-04-19
Maria Marrier1012Japan2026-04-22
Maria Marrier1013Russia2026-04-20
Ricardo Gaucho1014Canada2026-04-20
Jeanfrancois Venere1015Japan2026-03-29
Emily Whobrey1016Russia2026-04-10
Ricardo Gaucho1017Canada2026-04-05
Jefferson Schemmer1018France2026-04-20
Aruna Figeroa1019Brazil2026-04-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Nicolas IturbideAustraliaXuxue Feng UNQUALIFIED
Jones VocelkaCanadaOnyama Limba UNQUALIFIED
Emily WhobreyItalyAnna Fali NEW
Darci PoquetteItalyElwin Sharvill UNQUALIFIED
Claire TollnerSpainAmy Elsner PROPOSAL
Alejandro PerinFranceStephen Shaw PROPOSAL
Clifford RimSpainBernardo Dominic PROPOSAL
Claire TollnerSpainXuxue Feng NEGOTIATION
Chavez BriddickItalyOnyama Limba UNQUALIFIED
Francesco ShinkoJapanAmy Elsner NEGOTIATION
Wickens NestleJapanOnyama Limba NEW
Deepesh ChuiItalyBernardo Dominic QUALIFIED
Ivar PaprockiGermanyIoni Bowcher UNQUALIFIED
Arvin AlbaresSpainIoni Bowcher NEW
Cody SaylorsIndiaXuxue Feng UNQUALIFIED
Salvatore StockhamSpainAnna Fali RENEWAL
Mujtaba NickaUnited KingdomIvan Magalhaes PROPOSAL
Jones VocelkaSpainOnyama Limba NEGOTIATION
Jennifer AmigonSpainAmy Elsner RENEWAL
Munro FerenczIndiaAmy Elsner QUALIFIED
Ricardo GauchoAustraliaIoni Bowcher NEGOTIATION
Salvatore StockhamAustraliaAnna Fali NEW
Ricardo GauchoItalyAnna Fali UNQUALIFIED
Silvio SlusarskiUnited KingdomBernardo Dominic NEGOTIATION
Leon OldroydJapanIvan Magalhaes NEW
Munro FerenczUnited KingdomAnna Fali RENEWAL
Leja CaldareraGermanyElwin Sharvill NEW
Murillo MaletItalyOnyama Limba UNQUALIFIED
Emily WhobreyAustraliaBernardo Dominic NEGOTIATION
Costa DilliardSpainIvan Magalhaes QUALIFIED
Aika InouyeUnited KingdomAmy Elsner QUALIFIED
Faith GillianSpainOnyama Limba NEGOTIATION
James ButtArgentinaIoni Bowcher RENEWAL
Octavia MaletSpainAnna Fali QUALIFIED
Chavez BriddickSpainOnyama Limba PROPOSAL
James ButtGermanyAnna Fali QUALIFIED
Costa DilliardAustraliaAmy Elsner NEW
Rodrigues CampainCanadaAsiya Javayant NEGOTIATION
Murillo MaletRussiaIvan Magalhaes NEGOTIATION
Smith GlickCanadaIoni Bowcher UNQUALIFIED

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