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
Alejandro PerinAustraliaAsiya Javayant NEGOTIATION
Misaki RoysterUnited KingdomXuxue Feng NEW
Aika InouyeJapanBernardo Dominic QUALIFIED
Ricardo GauchoSpainXuxue Feng QUALIFIED
Maria MarrierBrazilElwin Sharvill NEGOTIATION
Misaki RoysterArgentinaIoni Bowcher NEGOTIATION
Jefferson SchemmerIndiaBernardo Dominic PROPOSAL
Emily WhobreyCanadaAsiya Javayant PROPOSAL
Silvio SlusarskiGermanyElwin Sharvill UNQUALIFIED
Nicolas IturbideJapanXuxue Feng PROPOSAL
Clifford RimRussiaOnyama Limba RENEWAL
Deepesh ChuiUnited KingdomOnyama Limba PROPOSAL
Izzy GarufiBrazilIvan Magalhaes UNQUALIFIED
Octavia MaletSpainIvan Magalhaes NEGOTIATION
Wickens NestleArgentinaBernardo Dominic NEGOTIATION
Greenwood BologniaGermanyStephen Shaw UNQUALIFIED
Aditya KuskoCanadaElwin Sharvill UNQUALIFIED
Julie StensethAustraliaIvan Magalhaes RENEWAL
Leja CaldareraIndiaElwin Sharvill RENEWAL
Claire TollnerIndiaOnyama Limba NEW
Sinclair WaycottBrazilAsiya Javayant NEW
Leon OldroydRussiaIoni Bowcher NEGOTIATION
Kaitlin OstroskyGermanyAsiya Javayant NEGOTIATION
Juan WieserSpainXuxue Feng NEGOTIATION
Silvio SlusarskiFranceAsiya Javayant NEGOTIATION
Johnson SergiJapanIoni Bowcher PROPOSAL
Mujtaba NickaCanadaXuxue Feng NEW
Emily WhobreyCanadaAmy Elsner RENEWAL
Cody SaylorsCanadaIvan Magalhaes UNQUALIFIED
Leon OldroydSpainAnna Fali NEW
Ashley DoeAustraliaStephen Shaw RENEWAL
Antonio CaudyCanadaIvan Magalhaes PROPOSAL
David DarakjyArgentinaOnyama Limba NEW
Kaitlin OstroskyJapanIoni Bowcher QUALIFIED
Morrow RutaSpainXuxue Feng UNQUALIFIED
Antonio CaudyAustraliaAnna Fali NEW
Isabel BowleyArgentinaIvan Magalhaes UNQUALIFIED
Juan WieserArgentinaAmy Elsner NEW
Maisha RulapaughIndiaElwin Sharvill NEW
Aruna FigeroaBrazilAnna Fali NEW
Jennifer AmigonAustraliaXuxue Feng UNQUALIFIED
Misaki RoysterJapanElwin Sharvill NEGOTIATION
Maria MarrierUnited KingdomAmy Elsner NEGOTIATION
Stacey MacleadGermanyIoni Bowcher RENEWAL
Stacey MacleadAustraliaIvan Magalhaes UNQUALIFIED
James ButtIndiaOnyama Limba QUALIFIED
Mujtaba NickaIndiaStephen Shaw UNQUALIFIED
Kaitlin OstroskyArgentinaIoni Bowcher RENEWAL
Aditya KuskoGermanyIoni Bowcher RENEWAL
Antonio CaudyRussiaElwin Sharvill UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Jeanfrancois VenereIndiaXuxue Feng RENEWAL
Munro FerenczGermanyOnyama Limba NEGOTIATION
Francesco ShinkoSpainBernardo Dominic PROPOSAL
Ivar PaprockiJapanXuxue Feng PROPOSAL
Kaitlin OstroskyUnited KingdomAsiya Javayant NEW
Salvatore StockhamItalyStephen Shaw QUALIFIED
Nicolas IturbideJapanAsiya Javayant NEW
Izzy GarufiRussiaOnyama Limba RENEWAL
Aika InouyeBrazilAnna Fali RENEWAL
Costa DilliardIndiaXuxue Feng QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Chavez BriddickSpain2026-05-24Feltz Printing Service NEGOTIATION76Onyama Limba
1001Costa DilliardItaly2026-05-01Rangoni Of Florence QUALIFIED73Elwin Sharvill
1002Kaitlin OstroskyFrance2026-05-16Printing Dimensions NEGOTIATION37Ioni Bowcher
1003Stacey MacleadArgentina2026-05-12Chemel, James L Cpa QUALIFIED51Ivan Magalhaes
1004Jones VocelkaAustralia2026-05-13Rangoni Of Florence PROPOSAL95Elwin Sharvill
1005Nicolas IturbideGermany2026-05-15Chanay, Jeffrey A Esq UNQUALIFIED92Onyama Limba
1006Tony FollerArgentina2026-05-13Chanay, Jeffrey A Esq UNQUALIFIED24Ivan Magalhaes
1007Ricardo GauchoFrance2026-05-08Rousseaux, Michael Esq PROPOSAL46Ioni Bowcher
1008Emily WhobreyGermany2026-05-19Truhlar And Truhlar Attys NEGOTIATION80Anna Fali
1009Francesco ShinkoArgentina2026-05-13Truhlar And Truhlar Attys RENEWAL27Ioni Bowcher
1010Maria MarrierRussia2026-04-27Benton, John B Jr QUALIFIED40Anna Fali
1011Aditya KuskoAustralia2026-05-07Chemel, James L Cpa NEGOTIATION5Bernardo Dominic
1012Mayumi KolmetzArgentina2026-05-24Feltz Printing Service RENEWAL71Xuxue Feng
1013Ashley DoeIndia2026-05-20Morlong Associates NEGOTIATION67Stephen Shaw
1014Jeanfrancois VenereRussia2026-05-15Feltz Printing Service UNQUALIFIED24Xuxue Feng
1015Sinclair WaycottItaly2026-04-28Dorl, James J Esq NEW7Ioni Bowcher
1016Munro FerenczRussia2026-05-12Commercial Press NEGOTIATION78Anna Fali
1017Wickens NestleCanada2026-05-15Buckley Miller Wright RENEWAL58Ioni Bowcher
1018Costa DilliardGermany2026-04-26Morlong Associates NEW74Anna Fali
1019Cody SaylorsFrance2026-05-22Truhlar And Truhlar Attys QUALIFIED43Ivan Magalhaes
1020Adams MorascaJapan2026-05-13Truhlar And Truhlar Attys UNQUALIFIED65Xuxue Feng
1021Maisha RulapaughCanada2026-05-01Feiner Bros UNQUALIFIED11Amy Elsner
1022Rodrigues CampainJapan2026-05-16Feiner Bros NEW54Stephen Shaw
1023Aruna FigeroaJapan2026-05-23Benton, John B Jr RENEWAL99Asiya Javayant
1024Sinclair WaycottUnited Kingdom2026-05-24King, Christopher A Esq UNQUALIFIED20Amy Elsner
1025Aruna FigeroaArgentina2026-05-09Commercial Press QUALIFIED17Stephen Shaw
1026Leon OldroydCanada2026-05-05Feiner Bros NEGOTIATION43Xuxue Feng
1027Greenwood BologniaSpain2026-04-27Rousseaux, Michael Esq QUALIFIED7Bernardo Dominic
1028Adams MorascaUnited Kingdom2026-04-29Benton, John B Jr NEGOTIATION10Xuxue Feng
1029Tony FollerItaly2026-05-19Rousseaux, Michael Esq NEW18Stephen Shaw
1030Silvio SlusarskiGermany2026-05-16Feiner Bros UNQUALIFIED27Asiya Javayant
1031Clifford RimSpain2026-05-05Feltz Printing Service RENEWAL95Amy Elsner
1032Stacey MacleadUnited Kingdom2026-04-27Chanay, Jeffrey A Esq NEGOTIATION47Ioni Bowcher
1033Ivar PaprockiCanada2026-05-17Rangoni Of Florence RENEWAL3Xuxue Feng
1034Mayumi KolmetzUnited Kingdom2026-05-03Chemel, James L Cpa PROPOSAL51Asiya Javayant
1035Chavez BriddickFrance2026-05-18Rousseaux, Michael Esq UNQUALIFIED42Anna Fali
1036Ivar PaprockiGermany2026-05-05Benton, John B Jr UNQUALIFIED45Anna Fali
1037Mayumi KolmetzAustralia2026-05-06Feiner Bros NEW35Elwin Sharvill
1038Aika InouyeCanada2026-05-06Feiner Bros NEGOTIATION63Xuxue Feng
1039Ivar PaprockiBrazil2026-05-21Morlong Associates NEW58Stephen Shaw
1040Sinclair WaycottAustralia2026-05-20Dorl, James J Esq RENEWAL15Amy Elsner
1041Jeanfrancois VenereFrance2026-05-18Rousseaux, Michael Esq UNQUALIFIED55Ioni Bowcher
1042Leja CaldareraFrance2026-05-02Chapman, Ross E Esq NEW86Stephen Shaw
1043Faith GillianCanada2026-05-01Truhlar And Truhlar Attys NEW42Asiya Javayant
1044Ashley DoeItaly2026-05-06Morlong Associates QUALIFIED93Bernardo Dominic
1045Antonio CaudyCanada2026-05-02Chemel, James L Cpa NEW11Onyama Limba
1046Jeanfrancois VenereGermany2026-05-20Truhlar And Truhlar Attys UNQUALIFIED3Stephen Shaw
1047Alejandro PerinIndia2026-05-05Benton, John B Jr PROPOSAL39Ivan Magalhaes
1048Claire TollnerItaly2026-05-07Chemel, James L Cpa NEW47Amy Elsner
1049Maisha RulapaughCanada2026-05-12Buckley Miller Wright QUALIFIED82Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Silvio SlusarskiAustraliaAnna Fali PROPOSAL
Aika InouyeJapanAmy Elsner UNQUALIFIED
Salvatore StockhamJapanElwin Sharvill QUALIFIED
Claire TollnerUnited KingdomAnna Fali RENEWAL
Maria MarrierItalyAmy Elsner NEGOTIATION
Adams MorascaSpainAmy Elsner NEGOTIATION
Munro FerenczFranceIoni Bowcher PROPOSAL
Jennifer AmigonArgentinaElwin Sharvill PROPOSAL
Octavia MaletJapanAnna Fali QUALIFIED
Claire TollnerItalyStephen Shaw QUALIFIED
Ricardo GauchoCanadaBernardo Dominic PROPOSAL
Johnson SergiUnited KingdomIvan Magalhaes NEW
Ivar PaprockiSpainOnyama Limba PROPOSAL
Morrow RutaRussiaAnna Fali PROPOSAL
Munro FerenczBrazilIoni Bowcher NEGOTIATION
Jones VocelkaCanadaOnyama Limba QUALIFIED
Kaitlin OstroskyBrazilAsiya Javayant RENEWAL
Adams MorascaAustraliaIoni Bowcher NEW
Murillo MaletSpainElwin Sharvill RENEWAL
Clifford RimFranceXuxue Feng RENEWAL
Claire TollnerAustraliaElwin Sharvill NEGOTIATION
Rodrigues CampainCanadaBernardo Dominic NEW
Clifford RimAustraliaXuxue Feng RENEWAL
Johnson SergiUnited KingdomElwin Sharvill NEGOTIATION
Morrow RutaSpainStephen Shaw NEGOTIATION
Munro FerenczUnited KingdomXuxue Feng UNQUALIFIED
Maisha RulapaughItalyAnna Fali NEGOTIATION
Julie StensethArgentinaIvan Magalhaes NEW
Johnson SergiUnited KingdomOnyama Limba UNQUALIFIED
Emily WhobreyAustraliaIvan Magalhaes UNQUALIFIED
Silvio SlusarskiIndiaXuxue Feng NEW
Misaki RoysterJapanElwin Sharvill NEW
Faith GillianJapanAmy Elsner NEW
Izzy GarufiJapanIoni Bowcher NEW
Salvatore StockhamUnited KingdomAmy Elsner UNQUALIFIED
Costa DilliardFranceAsiya Javayant UNQUALIFIED
Izzy GarufiAustraliaAsiya Javayant QUALIFIED
Tony FollerRussiaAnna Fali PROPOSAL
Mujtaba NickaRussiaBernardo Dominic PROPOSAL
Juan WieserUnited KingdomXuxue Feng RENEWAL
Aditya KuskoItalyIoni Bowcher RENEWAL
Cody SaylorsAustraliaStephen Shaw RENEWAL
Wickens NestleBrazilAnna Fali QUALIFIED
Tony FollerIndiaAsiya Javayant QUALIFIED
Morrow RutaBrazilIvan Magalhaes RENEWAL
Maisha RulapaughItalyElwin Sharvill NEGOTIATION
Alejandro PerinGermanyOnyama Limba NEW
Greenwood BologniaCanadaStephen Shaw NEGOTIATION
Misaki RoysterSpainBernardo Dominic PROPOSAL
Greenwood BologniaSpainElwin Sharvill NEW
Frozen Columns
Name
James Butt
Chavez Briddick
Jefferson Schemmer
Mujtaba Nicka
Maisha Rulapaugh
Octavia Malet
Salvatore Stockham
Jeanfrancois Venere
Juan Wieser
Aika Inouye
Jennifer Amigon
Leon Oldroyd
Aditya Kusko
Emily Whobrey
Nicolas Iturbide
Ashley Doe
Mujtaba Nicka
Wickens Nestle
Aruna Figeroa
Munro Ferencz
Arvin Albares
Antonio Caudy
Maria Marrier
Munro Ferencz
Rodrigues Campain
Ashley Doe
Kaitlin Ostrosky
Kaitlin Ostrosky
Chavez Briddick
Tony Foller
Jeanfrancois Venere
Maria Marrier
Murillo Malet
Adams Morasca
Jeanfrancois Venere
Tony Foller
Jefferson Schemmer
Faith Gillian
Morrow Ruta
Costa Dilliard
Emily Whobrey
Stacey Maclead
Chavez Briddick
Clifford Rim
Ricardo Gaucho
Francesco Shinko
Juan Wieser
Salvatore Stockham
Darci Poquette
Ashley Doe
IdCountryDate
1000Brazil2026-05-16
1001Germany2026-04-29
1002India2026-05-01
1003Australia2026-05-12
1004Brazil2026-05-04
1005United Kingdom2026-05-19
1006Germany2026-05-12
1007Germany2026-05-16
1008France2026-05-22
1009France2026-05-04
1010Germany2026-05-15
1011Brazil2026-05-22
1012United Kingdom2026-05-10
1013Argentina2026-04-28
1014Italy2026-05-01
1015India2026-05-10
1016Spain2026-04-30
1017Australia2026-05-03
1018Japan2026-05-01
1019Spain2026-05-23
1020France2026-05-07
1021Brazil2026-05-24
1022France2026-05-24
1023Australia2026-05-03
1024India2026-05-22
1025Brazil2026-05-22
1026France2026-05-01
1027Russia2026-05-23
1028Spain2026-05-12
1029Brazil2026-05-23
1030India2026-05-06
1031France2026-05-06
1032Russia2026-05-20
1033India2026-04-25
1034Germany2026-05-12
1035India2026-05-17
1036France2026-05-14
1037Brazil2026-05-12
1038Argentina2026-05-03
1039Italy2026-05-03
1040Spain2026-05-21
1041Canada2026-04-29
1042Australia2026-05-16
1043Germany2026-05-15
1044France2026-05-10
1045Italy2026-05-05
1046India2026-05-04
1047France2026-05-19
1048Argentina2026-05-09
1049France2026-05-03

On-Demand Data

NameIdCountryDate
Leon Oldroyd1000Germany2026-05-18
Leja Caldarera1001Brazil2026-05-21
Morrow Ruta1002Brazil2026-05-15
Wickens Nestle1003Japan2026-05-14
Claire Tollner1004Germany2026-05-21
Leon Oldroyd1005France2026-05-04
Greenwood Bolognia1006Spain2026-04-29
Aditya Kusko1007Japan2026-04-26
Darci Poquette1008Japan2026-04-26
Wickens Nestle1009Italy2026-05-23
Jeanfrancois Venere1010Japan2026-05-20
Ivar Paprocki1011Brazil2026-05-05
Clifford Rim1012Brazil2026-05-02
Greenwood Bolognia1013United Kingdom2026-05-13
Ashley Doe1014Russia2026-05-14
Alejandro Perin1015Italy2026-05-20
Maisha Rulapaugh1016India2026-04-30
Cody Saylors1017Australia2026-05-19
Greenwood Bolognia1018Australia2026-05-22
Julie Stenseth1019Spain2026-05-11
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Rodrigues CampainArgentinaAmy Elsner PROPOSAL
Julie StensethSpainOnyama Limba RENEWAL
Nicolas IturbideRussiaIoni Bowcher NEW
Darci PoquetteSpainOnyama Limba QUALIFIED
Chavez BriddickJapanXuxue Feng NEW
Ivar PaprockiGermanyAnna Fali RENEWAL
Morrow RutaSpainAsiya Javayant RENEWAL
Morrow RutaBrazilOnyama Limba QUALIFIED
Salvatore StockhamFranceElwin Sharvill PROPOSAL
Leja CaldareraCanadaOnyama Limba NEW
Jones VocelkaArgentinaBernardo Dominic QUALIFIED
Jefferson SchemmerCanadaAsiya Javayant NEW
Leja CaldareraRussiaIoni Bowcher RENEWAL
David DarakjyRussiaStephen Shaw RENEWAL
Isabel BowleyRussiaIoni Bowcher UNQUALIFIED
Rodrigues CampainArgentinaElwin Sharvill QUALIFIED
Mayumi KolmetzCanadaIvan Magalhaes NEW
Antonio CaudyRussiaStephen Shaw QUALIFIED
Maisha RulapaughBrazilOnyama Limba NEGOTIATION
Julie StensethSpainAsiya Javayant PROPOSAL
Jones VocelkaBrazilIvan Magalhaes QUALIFIED
Salvatore StockhamArgentinaIvan Magalhaes PROPOSAL
Murillo MaletIndiaAmy Elsner RENEWAL
Octavia MaletSpainOnyama Limba RENEWAL
Clifford RimBrazilStephen Shaw UNQUALIFIED
Jennifer AmigonUnited KingdomStephen Shaw RENEWAL
Maria MarrierGermanyIvan Magalhaes NEGOTIATION
Murillo MaletJapanAmy Elsner PROPOSAL
Misaki RoysterIndiaAnna Fali NEGOTIATION
Leon OldroydIndiaAnna Fali NEGOTIATION
Kaitlin OstroskyUnited KingdomAsiya Javayant UNQUALIFIED
Costa DilliardUnited KingdomIoni Bowcher RENEWAL
Leja CaldareraItalyAsiya Javayant QUALIFIED
Julie StensethGermanyAnna Fali PROPOSAL
Aditya KuskoCanadaBernardo Dominic QUALIFIED
Claire TollnerSpainIoni Bowcher PROPOSAL
Tony FollerJapanXuxue Feng RENEWAL
Antonio CaudyJapanAmy Elsner RENEWAL
Aruna FigeroaGermanyIvan Magalhaes QUALIFIED
Clifford RimJapanIoni 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>