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
Faith GillianCanadaAnna Fali QUALIFIED
Julie StensethRussiaOnyama Limba UNQUALIFIED
Costa DilliardArgentinaOnyama Limba RENEWAL
Leon OldroydAustraliaBernardo Dominic NEW
Aruna FigeroaItalyXuxue Feng RENEWAL
Munro FerenczCanadaStephen Shaw PROPOSAL
Greenwood BologniaJapanBernardo Dominic PROPOSAL
Costa DilliardUnited KingdomOnyama Limba PROPOSAL
Smith GlickFranceOnyama Limba NEW
Ashley DoeAustraliaAnna Fali QUALIFIED
Tony FollerRussiaOnyama Limba PROPOSAL
Costa DilliardRussiaAsiya Javayant UNQUALIFIED
Jefferson SchemmerFranceBernardo Dominic RENEWAL
Alejandro PerinItalyIvan Magalhaes NEGOTIATION
Jeanfrancois VenereItalyBernardo Dominic UNQUALIFIED
Maria MarrierAustraliaAmy Elsner NEGOTIATION
Darci PoquetteFranceAnna Fali UNQUALIFIED
Rodrigues CampainItalyElwin Sharvill PROPOSAL
Aika InouyeBrazilIoni Bowcher UNQUALIFIED
Aika InouyeUnited KingdomAsiya Javayant PROPOSAL
Octavia MaletUnited KingdomOnyama Limba UNQUALIFIED
Misaki RoysterCanadaStephen Shaw NEGOTIATION
Clifford RimArgentinaIvan Magalhaes RENEWAL
Munro FerenczIndiaOnyama Limba QUALIFIED
Munro FerenczCanadaElwin Sharvill NEGOTIATION
Jefferson SchemmerRussiaBernardo Dominic PROPOSAL
Adams MorascaBrazilStephen Shaw UNQUALIFIED
Arvin AlbaresIndiaBernardo Dominic NEGOTIATION
Isabel BowleyJapanIvan Magalhaes NEGOTIATION
Aruna FigeroaArgentinaAnna Fali NEW
Claire TollnerBrazilAmy Elsner NEW
Alejandro PerinAustraliaOnyama Limba QUALIFIED
Wickens NestleItalyBernardo Dominic RENEWAL
Jefferson SchemmerGermanyBernardo Dominic UNQUALIFIED
Francesco ShinkoArgentinaElwin Sharvill NEW
Nicolas IturbideArgentinaXuxue Feng UNQUALIFIED
Smith GlickIndiaElwin Sharvill RENEWAL
Leon OldroydGermanyIvan Magalhaes UNQUALIFIED
Julie StensethBrazilXuxue Feng NEGOTIATION
Kadeem FlosiCanadaStephen Shaw NEGOTIATION
Greenwood BologniaUnited KingdomElwin Sharvill NEGOTIATION
Mayumi KolmetzIndiaOnyama Limba QUALIFIED
Wickens NestleSpainIvan Magalhaes NEGOTIATION
Aditya KuskoIndiaAsiya Javayant QUALIFIED
Ricardo GauchoIndiaIvan Magalhaes UNQUALIFIED
Francesco ShinkoUnited KingdomAnna Fali NEW
Kadeem FlosiAustraliaXuxue Feng NEGOTIATION
Julie StensethUnited KingdomAmy Elsner PROPOSAL
Cody SaylorsArgentinaAsiya Javayant NEGOTIATION
Mujtaba NickaUnited KingdomXuxue Feng RENEWAL
Horizontal
NameCountryRepresentativeStatus
Salvatore StockhamJapanElwin Sharvill PROPOSAL
Wickens NestleBrazilIvan Magalhaes PROPOSAL
Jones VocelkaArgentinaAnna Fali NEW
Adams MorascaCanadaStephen Shaw RENEWAL
Ashley DoeGermanyAnna Fali NEGOTIATION
Emily WhobreyRussiaXuxue Feng UNQUALIFIED
Julie StensethUnited KingdomAnna Fali QUALIFIED
Jones VocelkaFranceIvan Magalhaes UNQUALIFIED
Sinclair WaycottItalyXuxue Feng PROPOSAL
Aditya KuskoJapanXuxue Feng RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio CaudyFrance2025-10-27Feltz Printing Service NEW63Elwin Sharvill
1001Francesco ShinkoItaly2025-10-19Chapman, Ross E Esq PROPOSAL47Ivan Magalhaes
1002Misaki RoysterArgentina2025-10-07Feltz Printing Service UNQUALIFIED95Asiya Javayant
1003Aditya KuskoCanada2025-10-08Feltz Printing Service RENEWAL65Anna Fali
1004Cody SaylorsIndia2025-10-28Morlong Associates NEW46Bernardo Dominic
1005Alejandro PerinJapan2025-10-26Benton, John B Jr PROPOSAL67Elwin Sharvill
1006Kadeem FlosiUnited Kingdom2025-11-01Chanay, Jeffrey A Esq QUALIFIED35Xuxue Feng
1007Antonio CaudySpain2025-11-04Rangoni Of Florence QUALIFIED68Stephen Shaw
1008Aditya KuskoUnited Kingdom2025-10-09King, Christopher A Esq RENEWAL30Onyama Limba
1009Francesco ShinkoFrance2025-10-29Feiner Bros QUALIFIED67Onyama Limba
1010Jennifer AmigonBrazil2025-10-13Chapman, Ross E Esq QUALIFIED51Onyama Limba
1011Darci PoquetteFrance2025-10-31Feltz Printing Service RENEWAL87Onyama Limba
1012Clifford RimFrance2025-11-01Feltz Printing Service NEW16Ivan Magalhaes
1013Darci PoquetteJapan2025-10-12Rangoni Of Florence PROPOSAL65Amy Elsner
1014Leon OldroydJapan2025-10-30Feiner Bros NEW98Ioni Bowcher
1015Tony FollerCanada2025-11-02Dorl, James J Esq RENEWAL89Stephen Shaw
1016Ricardo GauchoSpain2025-10-21Chemel, James L Cpa PROPOSAL52Asiya Javayant
1017Alejandro PerinBrazil2025-10-21Chemel, James L Cpa UNQUALIFIED7Stephen Shaw
1018Johnson SergiRussia2025-10-21Feiner Bros NEGOTIATION3Ioni Bowcher
1019Arvin AlbaresBrazil2025-10-22Morlong Associates UNQUALIFIED90Onyama Limba
1020Johnson SergiAustralia2025-10-26King, Christopher A Esq UNQUALIFIED18Ioni Bowcher
1021Rodrigues CampainFrance2025-10-13Morlong Associates NEGOTIATION45Ivan Magalhaes
1022Costa DilliardItaly2025-10-23King, Christopher A Esq QUALIFIED38Ivan Magalhaes
1023Jeanfrancois VenereFrance2025-10-15Chemel, James L Cpa QUALIFIED10Elwin Sharvill
1024Ashley DoeItaly2025-10-07Chanay, Jeffrey A Esq UNQUALIFIED17Stephen Shaw
1025Costa DilliardFrance2025-11-01Chanay, Jeffrey A Esq NEW54Asiya Javayant
1026Nicolas IturbideRussia2025-10-31Chanay, Jeffrey A Esq PROPOSAL36Asiya Javayant
1027Stacey MacleadJapan2025-10-26Chanay, Jeffrey A Esq UNQUALIFIED84Onyama Limba
1028Juan WieserAustralia2025-10-22Benton, John B Jr RENEWAL49Anna Fali
1029Munro FerenczAustralia2025-10-17Benton, John B Jr NEGOTIATION23Asiya Javayant
1030Jeanfrancois VenereGermany2025-10-13Feltz Printing Service UNQUALIFIED85Elwin Sharvill
1031Costa DilliardJapan2025-10-31Chemel, James L Cpa NEW45Ivan Magalhaes
1032Jones VocelkaItaly2025-10-27Truhlar And Truhlar Attys NEW18Asiya Javayant
1033Aika InouyeJapan2025-10-10Feltz Printing Service PROPOSAL14Ivan Magalhaes
1034Mayumi KolmetzArgentina2025-10-24Truhlar And Truhlar Attys NEGOTIATION45Asiya Javayant
1035Mujtaba NickaRussia2025-11-02Dorl, James J Esq RENEWAL68Xuxue Feng
1036Sinclair WaycottGermany2025-10-07Dorl, James J Esq PROPOSAL66Asiya Javayant
1037Faith GillianRussia2025-10-15King, Christopher A Esq NEW66Amy Elsner
1038Adams MorascaGermany2025-10-27Dorl, James J Esq UNQUALIFIED69Ivan Magalhaes
1039Leon OldroydArgentina2025-11-03Commercial Press PROPOSAL41Anna Fali
1040Antonio CaudySpain2025-10-15Benton, John B Jr QUALIFIED80Bernardo Dominic
1041Ashley DoeCanada2025-11-04Buckley Miller Wright NEW9Ioni Bowcher
1042Maisha RulapaughFrance2025-11-03Feiner Bros NEGOTIATION91Stephen Shaw
1043Kaitlin OstroskyBrazil2025-10-30Printing Dimensions QUALIFIED24Ioni Bowcher
1044Mujtaba NickaCanada2025-10-18Benton, John B Jr NEW92Asiya Javayant
1045Murillo MaletArgentina2025-10-20Chemel, James L Cpa NEGOTIATION22Xuxue Feng
1046Aika InouyeRussia2025-10-23Feltz Printing Service UNQUALIFIED3Amy Elsner
1047Ivar PaprockiRussia2025-10-13Chemel, James L Cpa PROPOSAL63Amy Elsner
1048Leja CaldareraJapan2025-10-09Chapman, Ross E Esq RENEWAL19Xuxue Feng
1049Murillo MaletFrance2025-10-09Morlong Associates PROPOSAL7Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Claire TollnerArgentinaBernardo Dominic PROPOSAL
Mayumi KolmetzBrazilXuxue Feng NEW
Greenwood BologniaIndiaStephen Shaw NEW
Kadeem FlosiAustraliaIoni Bowcher PROPOSAL
Smith GlickArgentinaAsiya Javayant QUALIFIED
Claire TollnerFranceIvan Magalhaes UNQUALIFIED
Alejandro PerinAustraliaOnyama Limba NEW
Aruna FigeroaAustraliaBernardo Dominic NEGOTIATION
Kaitlin OstroskyJapanAsiya Javayant NEW
James ButtSpainOnyama Limba UNQUALIFIED
Francesco ShinkoUnited KingdomXuxue Feng QUALIFIED
Stacey MacleadItalyElwin Sharvill UNQUALIFIED
Jennifer AmigonFranceIvan Magalhaes NEGOTIATION
Clifford RimBrazilIvan Magalhaes NEGOTIATION
Deepesh ChuiItalyStephen Shaw PROPOSAL
Ricardo GauchoGermanyStephen Shaw NEGOTIATION
James ButtItalyAsiya Javayant PROPOSAL
Stacey MacleadGermanyAmy Elsner NEGOTIATION
Claire TollnerJapanIoni Bowcher NEW
Ashley DoeJapanAmy Elsner PROPOSAL
Nicolas IturbideJapanOnyama Limba RENEWAL
Ivar PaprockiAustraliaStephen Shaw QUALIFIED
Leja CaldareraItalyAnna Fali NEGOTIATION
Jefferson SchemmerGermanyAnna Fali NEW
Clifford RimAustraliaAmy Elsner RENEWAL
Maisha RulapaughJapanIoni Bowcher RENEWAL
Maria MarrierItalyAsiya Javayant UNQUALIFIED
Claire TollnerArgentinaIvan Magalhaes RENEWAL
Aruna FigeroaUnited KingdomAnna Fali UNQUALIFIED
Faith GillianCanadaIoni Bowcher UNQUALIFIED
Cody SaylorsBrazilXuxue Feng RENEWAL
Costa DilliardCanadaAmy Elsner QUALIFIED
Octavia MaletJapanElwin Sharvill NEW
Wickens NestleCanadaIvan Magalhaes UNQUALIFIED
Darci PoquetteBrazilElwin Sharvill RENEWAL
Arvin AlbaresRussiaAmy Elsner QUALIFIED
Aditya KuskoAustraliaAsiya Javayant QUALIFIED
Mujtaba NickaBrazilAmy Elsner QUALIFIED
Jeanfrancois VenereIndiaAmy Elsner QUALIFIED
Kaitlin OstroskyArgentinaAmy Elsner NEW
Aruna FigeroaRussiaAmy Elsner PROPOSAL
Deepesh ChuiCanadaAsiya Javayant RENEWAL
Ivar PaprockiSpainBernardo Dominic RENEWAL
Ashley DoeSpainAmy Elsner NEGOTIATION
Antonio CaudyArgentinaAnna Fali NEGOTIATION
Francesco ShinkoAustraliaOnyama Limba UNQUALIFIED
Aditya KuskoUnited KingdomIvan Magalhaes RENEWAL
Isabel BowleyFranceAmy Elsner NEGOTIATION
Juan WieserSpainXuxue Feng NEGOTIATION
Leon OldroydRussiaElwin Sharvill NEW
Frozen Columns
Name
Isabel Bowley
Faith Gillian
Chavez Briddick
Aditya Kusko
Wickens Nestle
Chavez Briddick
Francesco Shinko
Kadeem Flosi
Leja Caldarera
Chavez Briddick
Smith Glick
Aditya Kusko
Silvio Slusarski
Claire Tollner
Jefferson Schemmer
Leon Oldroyd
Leon Oldroyd
Chavez Briddick
Emily Whobrey
David Darakjy
Kaitlin Ostrosky
Stacey Maclead
Ricardo Gaucho
Sinclair Waycott
Wickens Nestle
Jennifer Amigon
Nicolas Iturbide
Cody Saylors
Antonio Caudy
Salvatore Stockham
Arvin Albares
Salvatore Stockham
Chavez Briddick
Munro Ferencz
Juan Wieser
Francesco Shinko
Francesco Shinko
Rodrigues Campain
Nicolas Iturbide
Jennifer Amigon
Juan Wieser
Mayumi Kolmetz
Claire Tollner
Adams Morasca
Julie Stenseth
Leon Oldroyd
Cody Saylors
Stacey Maclead
Murillo Malet
Maisha Rulapaugh
IdCountryDate
1000Canada2025-10-23
1001Australia2025-10-24
1002Brazil2025-11-01
1003Spain2025-10-25
1004Japan2025-10-25
1005Brazil2025-10-12
1006Japan2025-10-25
1007Australia2025-10-08
1008United Kingdom2025-11-04
1009Australia2025-10-14
1010Japan2025-10-20
1011France2025-10-30
1012Spain2025-11-01
1013Italy2025-10-25
1014Germany2025-10-16
1015Italy2025-10-09
1016Germany2025-10-12
1017United Kingdom2025-10-16
1018Australia2025-11-05
1019Australia2025-10-22
1020Japan2025-10-12
1021Argentina2025-10-25
1022India2025-11-03
1023Russia2025-10-07
1024Russia2025-10-26
1025India2025-10-27
1026India2025-10-14
1027Germany2025-10-18
1028France2025-10-16
1029France2025-10-26
1030Australia2025-10-13
1031France2025-10-23
1032Russia2025-10-08
1033United Kingdom2025-10-08
1034Germany2025-10-31
1035Spain2025-10-09
1036Canada2025-11-03
1037Australia2025-10-21
1038France2025-10-23
1039Italy2025-10-10
1040Argentina2025-10-26
1041Australia2025-10-24
1042Japan2025-10-10
1043Australia2025-10-12
1044United Kingdom2025-10-18
1045Japan2025-10-26
1046Russia2025-11-01
1047France2025-10-07
1048Argentina2025-11-02
1049France2025-10-30

On-Demand Data

NameIdCountryDate
Costa Dilliard1000Italy2025-11-04
Silvio Slusarski1001Canada2025-10-24
Julie Stenseth1002Canada2025-10-28
Emily Whobrey1003Italy2025-10-11
Smith Glick1004France2025-10-28
Chavez Briddick1005Japan2025-10-14
Antonio Caudy1006Australia2025-10-28
Mayumi Kolmetz1007Russia2025-11-04
Chavez Briddick1008Japan2025-10-11
Claire Tollner1009India2025-10-30
Costa Dilliard1010Spain2025-10-19
Darci Poquette1011India2025-10-25
Jefferson Schemmer1012Italy2025-11-02
Jones Vocelka1013France2025-10-20
Emily Whobrey1014Argentina2025-10-14
Jones Vocelka1015France2025-10-27
Ricardo Gaucho1016Japan2025-10-30
Maria Marrier1017Canada2025-10-17
Antonio Caudy1018United Kingdom2025-11-02
Antonio Caudy1019Spain2025-10-19
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mayumi KolmetzJapanXuxue Feng UNQUALIFIED
Izzy GarufiRussiaAmy Elsner NEW
Mujtaba NickaBrazilIoni Bowcher RENEWAL
Silvio SlusarskiBrazilAnna Fali UNQUALIFIED
Sinclair WaycottFranceBernardo Dominic QUALIFIED
Johnson SergiCanadaAmy Elsner UNQUALIFIED
Arvin AlbaresAustraliaXuxue Feng NEGOTIATION
Costa DilliardRussiaAnna Fali NEW
Tony FollerArgentinaBernardo Dominic NEGOTIATION
Salvatore StockhamGermanyElwin Sharvill QUALIFIED
Stacey MacleadJapanOnyama Limba NEGOTIATION
Arvin AlbaresIndiaBernardo Dominic PROPOSAL
Julie StensethCanadaAnna Fali QUALIFIED
Mujtaba NickaCanadaAsiya Javayant PROPOSAL
Chavez BriddickItalyAnna Fali PROPOSAL
Maria MarrierSpainOnyama Limba PROPOSAL
Deepesh ChuiGermanyStephen Shaw NEGOTIATION
Wickens NestleJapanAmy Elsner PROPOSAL
Smith GlickJapanElwin Sharvill UNQUALIFIED
Johnson SergiJapanIoni Bowcher QUALIFIED
Cody SaylorsUnited KingdomAnna Fali QUALIFIED
Murillo MaletFranceOnyama Limba NEGOTIATION
Leja CaldareraUnited KingdomIvan Magalhaes PROPOSAL
Misaki RoysterFranceAsiya Javayant NEW
Ashley DoeUnited KingdomIvan Magalhaes RENEWAL
Darci PoquetteSpainAnna Fali NEGOTIATION
Cody SaylorsSpainStephen Shaw QUALIFIED
Wickens NestleArgentinaAsiya Javayant PROPOSAL
Munro FerenczIndiaIoni Bowcher RENEWAL
Jeanfrancois VenereCanadaStephen Shaw QUALIFIED
Jefferson SchemmerSpainOnyama Limba UNQUALIFIED
Tony FollerUnited KingdomBernardo Dominic UNQUALIFIED
Nicolas IturbideCanadaXuxue Feng UNQUALIFIED
Cody SaylorsGermanyAmy Elsner PROPOSAL
Chavez BriddickJapanAmy Elsner PROPOSAL
Mujtaba NickaIndiaAnna Fali QUALIFIED
Emily WhobreyBrazilAmy Elsner PROPOSAL
Stacey MacleadIndiaAsiya Javayant NEGOTIATION
Darci PoquetteGermanyAmy Elsner PROPOSAL
Clifford RimGermanyIoni 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>