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
Mayumi KolmetzIndiaAsiya Javayant PROPOSAL
Silvio SlusarskiBrazilIoni Bowcher PROPOSAL
Emily WhobreyItalyIoni Bowcher RENEWAL
Octavia MaletRussiaIoni Bowcher NEGOTIATION
Darci PoquetteJapanIvan Magalhaes UNQUALIFIED
Kaitlin OstroskyItalyIoni Bowcher RENEWAL
Jefferson SchemmerGermanyAsiya Javayant QUALIFIED
Greenwood BologniaAustraliaAnna Fali QUALIFIED
Claire TollnerItalyElwin Sharvill QUALIFIED
Silvio SlusarskiFranceElwin Sharvill RENEWAL
Clifford RimIndiaElwin Sharvill NEW
Salvatore StockhamSpainBernardo Dominic UNQUALIFIED
James ButtFranceAsiya Javayant RENEWAL
Silvio SlusarskiIndiaAmy Elsner NEW
Ricardo GauchoFranceElwin Sharvill UNQUALIFIED
Greenwood BologniaRussiaIoni Bowcher UNQUALIFIED
Clifford RimCanadaXuxue Feng NEGOTIATION
Deepesh ChuiRussiaAnna Fali UNQUALIFIED
Greenwood BologniaGermanyIvan Magalhaes PROPOSAL
Ricardo GauchoJapanBernardo Dominic UNQUALIFIED
Maria MarrierItalyAsiya Javayant QUALIFIED
Jones VocelkaSpainAnna Fali NEW
Cody SaylorsSpainAnna Fali NEW
Rodrigues CampainArgentinaIoni Bowcher RENEWAL
Jeanfrancois VenereFranceAnna Fali NEW
Maria MarrierBrazilXuxue Feng PROPOSAL
Cody SaylorsArgentinaElwin Sharvill RENEWAL
Isabel BowleyItalyAnna Fali PROPOSAL
Wickens NestleCanadaAsiya Javayant PROPOSAL
Antonio CaudyFranceAnna Fali QUALIFIED
Clifford RimBrazilIvan Magalhaes NEGOTIATION
Smith GlickItalyAsiya Javayant PROPOSAL
Jennifer AmigonIndiaAnna Fali UNQUALIFIED
Mujtaba NickaBrazilAmy Elsner NEW
Misaki RoysterRussiaAmy Elsner RENEWAL
Murillo MaletUnited KingdomAmy Elsner RENEWAL
Antonio CaudyJapanAnna Fali QUALIFIED
Aditya KuskoJapanElwin Sharvill PROPOSAL
Kaitlin OstroskyBrazilIoni Bowcher PROPOSAL
Wickens NestleRussiaIvan Magalhaes PROPOSAL
Juan WieserIndiaAsiya Javayant NEGOTIATION
Costa DilliardJapanAmy Elsner QUALIFIED
Isabel BowleyJapanIoni Bowcher NEGOTIATION
Antonio CaudyBrazilAnna Fali UNQUALIFIED
Aditya KuskoGermanyStephen Shaw UNQUALIFIED
Sinclair WaycottJapanAnna Fali UNQUALIFIED
Chavez BriddickIndiaOnyama Limba PROPOSAL
Antonio CaudyAustraliaIoni Bowcher UNQUALIFIED
Aruna FigeroaRussiaOnyama Limba RENEWAL
Smith GlickBrazilAnna Fali PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Sinclair WaycottCanadaOnyama Limba NEGOTIATION
Aditya KuskoSpainElwin Sharvill NEGOTIATION
Maisha RulapaughItalyIoni Bowcher RENEWAL
Ashley DoeRussiaBernardo Dominic QUALIFIED
David DarakjyIndiaXuxue Feng RENEWAL
Misaki RoysterAustraliaIvan Magalhaes NEGOTIATION
Maria MarrierIndiaAmy Elsner NEW
Emily WhobreyJapanBernardo Dominic PROPOSAL
Mujtaba NickaIndiaIvan Magalhaes UNQUALIFIED
Jones VocelkaBrazilAmy Elsner NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Mujtaba NickaBrazil2026-05-03Feltz Printing Service PROPOSAL69Stephen Shaw
1001Wickens NestleItaly2026-04-29Truhlar And Truhlar Attys NEW79Bernardo Dominic
1002Julie StensethRussia2026-05-20Feiner Bros QUALIFIED53Bernardo Dominic
1003Nicolas IturbideFrance2026-04-25Rousseaux, Michael Esq NEGOTIATION77Onyama Limba
1004Sinclair WaycottJapan2026-05-08Benton, John B Jr QUALIFIED74Amy Elsner
1005Chavez BriddickIndia2026-05-09Commercial Press QUALIFIED58Ioni Bowcher
1006Faith GillianAustralia2026-04-25Chanay, Jeffrey A Esq PROPOSAL69Anna Fali
1007Darci PoquetteRussia2026-05-15Dorl, James J Esq NEGOTIATION84Amy Elsner
1008Octavia MaletSpain2026-05-11Commercial Press NEW62Xuxue Feng
1009Murillo MaletBrazil2026-05-05Printing Dimensions NEGOTIATION50Anna Fali
1010Johnson SergiFrance2026-05-20Benton, John B Jr UNQUALIFIED21Ivan Magalhaes
1011James ButtArgentina2026-04-30Morlong Associates QUALIFIED51Stephen Shaw
1012Jeanfrancois VenereBrazil2026-05-20Benton, John B Jr NEGOTIATION77Asiya Javayant
1013Jennifer AmigonUnited Kingdom2026-04-25Chemel, James L Cpa RENEWAL52Elwin Sharvill
1014Darci PoquetteCanada2026-05-20Chanay, Jeffrey A Esq NEGOTIATION70Ivan Magalhaes
1015Leja CaldareraCanada2026-05-17Printing Dimensions NEGOTIATION35Elwin Sharvill
1016Greenwood BologniaJapan2026-05-13Buckley Miller Wright NEW83Onyama Limba
1017Costa DilliardFrance2026-04-24Feiner Bros UNQUALIFIED45Elwin Sharvill
1018Maria MarrierUnited Kingdom2026-05-17Rangoni Of Florence UNQUALIFIED60Stephen Shaw
1019Ashley DoeUnited Kingdom2026-05-18Truhlar And Truhlar Attys RENEWAL66Bernardo Dominic
1020Cody SaylorsItaly2026-04-27Rangoni Of Florence NEGOTIATION64Ivan Magalhaes
1021Costa DilliardUnited Kingdom2026-05-11Chanay, Jeffrey A Esq NEW7Elwin Sharvill
1022Costa DilliardAustralia2026-05-20Benton, John B Jr RENEWAL56Onyama Limba
1023Ivar PaprockiIndia2026-05-19Chemel, James L Cpa NEGOTIATION16Bernardo Dominic
1024Emily WhobreyAustralia2026-05-10Buckley Miller Wright PROPOSAL6Stephen Shaw
1025Maria MarrierBrazil2026-05-09Printing Dimensions NEW22Ioni Bowcher
1026Sinclair WaycottFrance2026-05-20Chapman, Ross E Esq PROPOSAL84Bernardo Dominic
1027Ashley DoeIndia2026-05-02Chemel, James L Cpa NEW73Anna Fali
1028Tony FollerCanada2026-05-14Dorl, James J Esq NEGOTIATION84Ivan Magalhaes
1029Jones VocelkaCanada2026-04-23Chemel, James L Cpa QUALIFIED5Bernardo Dominic
1030James ButtCanada2026-04-23Chapman, Ross E Esq QUALIFIED25Ioni Bowcher
1031Salvatore StockhamBrazil2026-05-02Commercial Press UNQUALIFIED99Elwin Sharvill
1032Jones VocelkaGermany2026-04-30King, Christopher A Esq RENEWAL37Bernardo Dominic
1033Mujtaba NickaSpain2026-05-13Printing Dimensions PROPOSAL20Elwin Sharvill
1034Jones VocelkaAustralia2026-05-05Rangoni Of Florence UNQUALIFIED6Onyama Limba
1035Murillo MaletGermany2026-05-10Feiner Bros QUALIFIED95Elwin Sharvill
1036Maisha RulapaughAustralia2026-05-22Buckley Miller Wright RENEWAL16Xuxue Feng
1037Morrow RutaItaly2026-05-01Rousseaux, Michael Esq RENEWAL11Amy Elsner
1038Aruna FigeroaRussia2026-05-03Feltz Printing Service PROPOSAL0Asiya Javayant
1039Clifford RimFrance2026-04-24Feiner Bros RENEWAL46Xuxue Feng
1040Aruna FigeroaFrance2026-04-26Morlong Associates PROPOSAL78Elwin Sharvill
1041Kaitlin OstroskyRussia2026-05-16Morlong Associates PROPOSAL56Xuxue Feng
1042Smith GlickRussia2026-05-09King, Christopher A Esq QUALIFIED34Onyama Limba
1043Kaitlin OstroskyCanada2026-05-13Feltz Printing Service PROPOSAL97Anna Fali
1044Darci PoquetteArgentina2026-05-15Morlong Associates NEGOTIATION96Elwin Sharvill
1045Greenwood BologniaGermany2026-04-29Benton, John B Jr PROPOSAL44Elwin Sharvill
1046Adams MorascaArgentina2026-05-19Morlong Associates UNQUALIFIED68Ivan Magalhaes
1047Munro FerenczSpain2026-05-17Rousseaux, Michael Esq NEW34Bernardo Dominic
1048Rodrigues CampainJapan2026-05-22Rousseaux, Michael Esq UNQUALIFIED37Xuxue Feng
1049Munro FerenczRussia2026-05-05Commercial Press RENEWAL49Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Nicolas IturbideAustraliaBernardo Dominic PROPOSAL
Julie StensethItalyBernardo Dominic RENEWAL
Smith GlickGermanyAnna Fali NEW
Tony FollerFranceIvan Magalhaes QUALIFIED
Leon OldroydSpainBernardo Dominic UNQUALIFIED
Rodrigues CampainItalyIvan Magalhaes PROPOSAL
Jefferson SchemmerBrazilAmy Elsner NEGOTIATION
Leja CaldareraCanadaStephen Shaw QUALIFIED
Alejandro PerinFranceIoni Bowcher NEW
Smith GlickArgentinaElwin Sharvill NEW
Munro FerenczGermanyBernardo Dominic NEGOTIATION
Ashley DoeBrazilAnna Fali PROPOSAL
Jeanfrancois VenereGermanyAmy Elsner PROPOSAL
Costa DilliardGermanyIoni Bowcher QUALIFIED
Ivar PaprockiRussiaIoni Bowcher QUALIFIED
Claire TollnerItalyStephen Shaw NEW
Aditya KuskoBrazilElwin Sharvill PROPOSAL
Antonio CaudyGermanyBernardo Dominic NEW
Emily WhobreyAustraliaStephen Shaw QUALIFIED
Stacey MacleadGermanyElwin Sharvill PROPOSAL
Izzy GarufiIndiaAmy Elsner RENEWAL
Leja CaldareraItalyIvan Magalhaes NEW
Jeanfrancois VenereRussiaIoni Bowcher PROPOSAL
James ButtRussiaBernardo Dominic NEW
Deepesh ChuiAustraliaElwin Sharvill RENEWAL
Izzy GarufiUnited KingdomIvan Magalhaes NEW
Antonio CaudyItalyBernardo Dominic PROPOSAL
Costa DilliardItalyBernardo Dominic QUALIFIED
Kadeem FlosiJapanAsiya Javayant PROPOSAL
Sinclair WaycottAustraliaBernardo Dominic RENEWAL
Aditya KuskoItalyAnna Fali RENEWAL
Ashley DoeItalyXuxue Feng PROPOSAL
Juan WieserSpainStephen Shaw UNQUALIFIED
Jennifer AmigonCanadaAsiya Javayant QUALIFIED
Maisha RulapaughCanadaAsiya Javayant PROPOSAL
Arvin AlbaresJapanElwin Sharvill PROPOSAL
Julie StensethUnited KingdomOnyama Limba NEW
Julie StensethRussiaAmy Elsner NEW
Wickens NestleBrazilAmy Elsner RENEWAL
Francesco ShinkoUnited KingdomXuxue Feng NEGOTIATION
Octavia MaletJapanOnyama Limba NEGOTIATION
Costa DilliardUnited KingdomAmy Elsner UNQUALIFIED
Faith GillianGermanyIvan Magalhaes QUALIFIED
Ivar PaprockiBrazilAmy Elsner RENEWAL
Cody SaylorsRussiaAmy Elsner PROPOSAL
Faith GillianItalyElwin Sharvill UNQUALIFIED
Kadeem FlosiJapanAsiya Javayant NEW
Mayumi KolmetzGermanyXuxue Feng PROPOSAL
Antonio CaudyRussiaOnyama Limba UNQUALIFIED
Leja CaldareraFranceIoni Bowcher RENEWAL
Frozen Columns
Name
Adams Morasca
Jones Vocelka
Morrow Ruta
Tony Foller
Johnson Sergi
Ricardo Gaucho
Stacey Maclead
Aditya Kusko
Ivar Paprocki
Salvatore Stockham
Ashley Doe
Faith Gillian
Jeanfrancois Venere
Greenwood Bolognia
Ivar Paprocki
Munro Ferencz
Mujtaba Nicka
Munro Ferencz
James Butt
Arvin Albares
Morrow Ruta
Chavez Briddick
Isabel Bowley
Clifford Rim
Johnson Sergi
Costa Dilliard
Maisha Rulapaugh
Julie Stenseth
Ivar Paprocki
Munro Ferencz
Arvin Albares
Munro Ferencz
Julie Stenseth
Jones Vocelka
David Darakjy
Aditya Kusko
Mayumi Kolmetz
Mujtaba Nicka
Wickens Nestle
Kadeem Flosi
James Butt
Johnson Sergi
Darci Poquette
Smith Glick
James Butt
Ivar Paprocki
Jones Vocelka
Mujtaba Nicka
Misaki Royster
Juan Wieser
IdCountryDate
1000Germany2026-05-20
1001Italy2026-05-19
1002Russia2026-05-10
1003United Kingdom2026-05-10
1004Spain2026-05-14
1005Brazil2026-05-05
1006Canada2026-05-22
1007United Kingdom2026-04-30
1008Japan2026-05-13
1009Australia2026-05-17
1010France2026-05-16
1011United Kingdom2026-05-18
1012United Kingdom2026-05-12
1013United Kingdom2026-05-03
1014Argentina2026-05-20
1015Argentina2026-04-29
1016Italy2026-04-25
1017Australia2026-05-01
1018Brazil2026-04-27
1019Germany2026-05-03
1020India2026-05-21
1021India2026-04-29
1022Canada2026-05-15
1023France2026-05-20
1024Spain2026-05-09
1025United Kingdom2026-05-11
1026India2026-04-29
1027Spain2026-04-26
1028Canada2026-05-05
1029Italy2026-05-10
1030Germany2026-05-10
1031Germany2026-05-06
1032Spain2026-05-02
1033India2026-05-07
1034United Kingdom2026-04-24
1035Brazil2026-05-07
1036India2026-05-18
1037Spain2026-05-03
1038Australia2026-05-19
1039United Kingdom2026-05-02
1040United Kingdom2026-05-16
1041Canada2026-05-15
1042Australia2026-05-19
1043Brazil2026-04-29
1044France2026-05-01
1045Brazil2026-05-09
1046Italy2026-05-09
1047Argentina2026-05-03
1048Spain2026-04-25
1049India2026-05-05

On-Demand Data

NameIdCountryDate
Leon Oldroyd1000Australia2026-04-25
Antonio Caudy1001France2026-05-05
Jefferson Schemmer1002Russia2026-04-30
Alejandro Perin1003Japan2026-04-25
Costa Dilliard1004Germany2026-05-06
Mujtaba Nicka1005Germany2026-05-03
Francesco Shinko1006Spain2026-05-02
Octavia Malet1007Germany2026-04-28
Leja Caldarera1008Spain2026-05-07
Aika Inouye1009Spain2026-04-23
Maisha Rulapaugh1010Australia2026-04-23
Jones Vocelka1011Argentina2026-05-20
Murillo Malet1012Canada2026-05-16
Murillo Malet1013Australia2026-05-19
Jefferson Schemmer1014Spain2026-04-25
Morrow Ruta1015Argentina2026-04-29
Costa Dilliard1016Japan2026-05-05
Aruna Figeroa1017France2026-05-19
Ashley Doe1018India2026-05-08
Smith Glick1019France2026-05-19
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Costa DilliardGermanyBernardo Dominic QUALIFIED
Darci PoquetteFranceAsiya Javayant QUALIFIED
Aika InouyeItalyIvan Magalhaes QUALIFIED
Izzy GarufiRussiaXuxue Feng QUALIFIED
Leon OldroydUnited KingdomIoni Bowcher UNQUALIFIED
Aditya KuskoArgentinaIoni Bowcher NEGOTIATION
Maisha RulapaughSpainAnna Fali RENEWAL
Ricardo GauchoUnited KingdomAnna Fali UNQUALIFIED
Stacey MacleadArgentinaAsiya Javayant NEW
Clifford RimIndiaStephen Shaw QUALIFIED
Salvatore StockhamGermanyAnna Fali QUALIFIED
Jefferson SchemmerCanadaAsiya Javayant PROPOSAL
James ButtRussiaXuxue Feng PROPOSAL
Leon OldroydSpainIvan Magalhaes NEW
Julie StensethUnited KingdomStephen Shaw QUALIFIED
Arvin AlbaresAustraliaStephen Shaw RENEWAL
Tony FollerItalyAsiya Javayant NEW
Leon OldroydGermanyStephen Shaw PROPOSAL
Cody SaylorsRussiaStephen Shaw QUALIFIED
Isabel BowleyGermanyStephen Shaw RENEWAL
Arvin AlbaresCanadaXuxue Feng UNQUALIFIED
Aika InouyeArgentinaAmy Elsner NEGOTIATION
Arvin AlbaresGermanyAmy Elsner NEW
Maria MarrierCanadaOnyama Limba PROPOSAL
Costa DilliardIndiaBernardo Dominic QUALIFIED
Leja CaldareraArgentinaIoni Bowcher RENEWAL
Claire TollnerGermanyAnna Fali NEW
Sinclair WaycottSpainAsiya Javayant QUALIFIED
Chavez BriddickRussiaElwin Sharvill NEW
Johnson SergiRussiaAsiya Javayant PROPOSAL
Juan WieserAustraliaElwin Sharvill NEW
Arvin AlbaresCanadaElwin Sharvill RENEWAL
Wickens NestleSpainAmy Elsner NEGOTIATION
James ButtSpainXuxue Feng NEW
Munro FerenczAustraliaIoni Bowcher RENEWAL
David DarakjyFranceIvan Magalhaes PROPOSAL
Greenwood BologniaRussiaAnna Fali UNQUALIFIED
Ashley DoeItalyOnyama Limba NEGOTIATION
Leon OldroydSpainElwin Sharvill NEW
Ashley DoeJapanElwin Sharvill QUALIFIED

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