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
Ivar PaprockiCanadaIvan Magalhaes NEGOTIATION
Aditya KuskoCanadaAsiya Javayant NEW
Jeanfrancois VenereArgentinaAmy Elsner RENEWAL
Jones VocelkaFranceAsiya Javayant QUALIFIED
Tony FollerFranceAmy Elsner RENEWAL
Jennifer AmigonFranceAmy Elsner QUALIFIED
Chavez BriddickItalyBernardo Dominic QUALIFIED
Maisha RulapaughItalyStephen Shaw UNQUALIFIED
Alejandro PerinSpainIoni Bowcher RENEWAL
Julie StensethAustraliaAsiya Javayant UNQUALIFIED
Emily WhobreySpainStephen Shaw PROPOSAL
Julie StensethGermanyAmy Elsner NEW
Cody SaylorsCanadaOnyama Limba UNQUALIFIED
Darci PoquetteAustraliaIoni Bowcher NEGOTIATION
Emily WhobreyAustraliaIvan Magalhaes NEGOTIATION
Clifford RimRussiaElwin Sharvill RENEWAL
Cody SaylorsRussiaBernardo Dominic NEW
Aruna FigeroaGermanyBernardo Dominic UNQUALIFIED
Wickens NestleItalyBernardo Dominic PROPOSAL
Tony FollerIndiaXuxue Feng UNQUALIFIED
Munro FerenczItalyIoni Bowcher QUALIFIED
Wickens NestleArgentinaStephen Shaw NEW
Maisha RulapaughJapanAnna Fali NEGOTIATION
Francesco ShinkoIndiaIvan Magalhaes UNQUALIFIED
Claire TollnerCanadaStephen Shaw QUALIFIED
Mujtaba NickaArgentinaBernardo Dominic RENEWAL
Octavia MaletIndiaXuxue Feng UNQUALIFIED
Aruna FigeroaJapanAnna Fali NEGOTIATION
Morrow RutaArgentinaOnyama Limba NEW
Julie StensethIndiaIvan Magalhaes RENEWAL
Leon OldroydUnited KingdomAsiya Javayant NEW
Ashley DoeCanadaXuxue Feng RENEWAL
Stacey MacleadRussiaIvan Magalhaes QUALIFIED
Stacey MacleadRussiaAnna Fali RENEWAL
Ivar PaprockiArgentinaElwin Sharvill NEGOTIATION
Isabel BowleyBrazilIoni Bowcher QUALIFIED
Julie StensethBrazilAmy Elsner UNQUALIFIED
Kaitlin OstroskyUnited KingdomAnna Fali QUALIFIED
Ivar PaprockiAustraliaIvan Magalhaes RENEWAL
Aruna FigeroaItalyElwin Sharvill RENEWAL
Silvio SlusarskiFranceAsiya Javayant QUALIFIED
Greenwood BologniaBrazilXuxue Feng NEGOTIATION
Ashley DoeRussiaIoni Bowcher PROPOSAL
Alejandro PerinUnited KingdomOnyama Limba UNQUALIFIED
Misaki RoysterUnited KingdomAsiya Javayant NEW
Aruna FigeroaIndiaStephen Shaw NEW
Aruna FigeroaCanadaAmy Elsner NEGOTIATION
Maisha RulapaughAustraliaStephen Shaw PROPOSAL
Antonio CaudyUnited KingdomAnna Fali RENEWAL
Faith GillianAustraliaBernardo Dominic NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Jones VocelkaRussiaBernardo Dominic QUALIFIED
Faith GillianIndiaAsiya Javayant NEGOTIATION
Aditya KuskoItalyElwin Sharvill UNQUALIFIED
Jeanfrancois VenereJapanBernardo Dominic NEGOTIATION
Julie StensethIndiaOnyama Limba QUALIFIED
Jennifer AmigonFranceStephen Shaw UNQUALIFIED
Izzy GarufiJapanElwin Sharvill RENEWAL
Faith GillianCanadaElwin Sharvill PROPOSAL
Mayumi KolmetzCanadaOnyama Limba NEGOTIATION
Morrow RutaIndiaAnna Fali UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Faith GillianItaly2026-05-16Feiner Bros RENEWAL44Bernardo Dominic
1001Leon OldroydJapan2026-05-22Chanay, Jeffrey A Esq RENEWAL16Elwin Sharvill
1002Munro FerenczUnited Kingdom2026-05-06Morlong Associates QUALIFIED65Ivan Magalhaes
1003Kaitlin OstroskyFrance2026-05-12Buckley Miller Wright NEW43Amy Elsner
1004Deepesh ChuiCanada2026-05-09Feiner Bros PROPOSAL77Amy Elsner
1005Aditya KuskoArgentina2026-05-15Rangoni Of Florence RENEWAL75Ivan Magalhaes
1006Aika InouyeAustralia2026-05-05Chemel, James L Cpa RENEWAL92Anna Fali
1007Chavez BriddickBrazil2026-05-04Dorl, James J Esq NEW50Ioni Bowcher
1008Jennifer AmigonBrazil2026-05-22Commercial Press NEGOTIATION33Asiya Javayant
1009Mayumi KolmetzItaly2026-05-11Dorl, James J Esq RENEWAL29Ioni Bowcher
1010Mayumi KolmetzRussia2026-05-07Printing Dimensions PROPOSAL5Onyama Limba
1011Costa DilliardArgentina2026-05-13Truhlar And Truhlar Attys NEW12Ioni Bowcher
1012Rodrigues CampainFrance2026-05-23Chemel, James L Cpa NEW23Elwin Sharvill
1013Cody SaylorsUnited Kingdom2026-05-06King, Christopher A Esq PROPOSAL30Stephen Shaw
1014Rodrigues CampainUnited Kingdom2026-05-10Chemel, James L Cpa NEW71Ivan Magalhaes
1015Sinclair WaycottCanada2026-05-03Chanay, Jeffrey A Esq PROPOSAL79Anna Fali
1016Stacey MacleadJapan2026-05-04Dorl, James J Esq UNQUALIFIED90Onyama Limba
1017Johnson SergiRussia2026-05-13Rousseaux, Michael Esq NEGOTIATION33Xuxue Feng
1018Morrow RutaJapan2026-05-29Feiner Bros NEGOTIATION88Asiya Javayant
1019Wickens NestleUnited Kingdom2026-05-09Feiner Bros QUALIFIED16Asiya Javayant
1020Octavia MaletAustralia2026-05-07Buckley Miller Wright PROPOSAL37Asiya Javayant
1021Julie StensethJapan2026-05-12Chapman, Ross E Esq UNQUALIFIED83Amy Elsner
1022Morrow RutaCanada2026-05-17King, Christopher A Esq QUALIFIED1Stephen Shaw
1023Aruna FigeroaGermany2026-05-19Rousseaux, Michael Esq RENEWAL68Anna Fali
1024Adams MorascaBrazil2026-05-19Chemel, James L Cpa NEW73Bernardo Dominic
1025Mujtaba NickaUnited Kingdom2026-05-10Chapman, Ross E Esq QUALIFIED34Ivan Magalhaes
1026Murillo MaletItaly2026-05-23Chanay, Jeffrey A Esq QUALIFIED80Anna Fali
1027Maria MarrierItaly2026-05-28Morlong Associates UNQUALIFIED1Bernardo Dominic
1028Aruna FigeroaIndia2026-05-24Chapman, Ross E Esq PROPOSAL28Xuxue Feng
1029Alejandro PerinBrazil2026-05-10Commercial Press PROPOSAL92Stephen Shaw
1030Arvin AlbaresCanada2026-05-20Dorl, James J Esq RENEWAL29Ivan Magalhaes
1031Tony FollerIndia2026-05-30Feiner Bros NEGOTIATION31Asiya Javayant
1032Emily WhobreyUnited Kingdom2026-05-09Truhlar And Truhlar Attys NEGOTIATION47Anna Fali
1033Kadeem FlosiGermany2026-05-28Printing Dimensions NEGOTIATION77Asiya Javayant
1034Ricardo GauchoIndia2026-05-25Chapman, Ross E Esq PROPOSAL32Amy Elsner
1035Morrow RutaIndia2026-05-19Rousseaux, Michael Esq NEGOTIATION93Onyama Limba
1036Nicolas IturbideItaly2026-05-12Chapman, Ross E Esq UNQUALIFIED20Asiya Javayant
1037Claire TollnerCanada2026-05-30Benton, John B Jr RENEWAL77Xuxue Feng
1038Leon OldroydFrance2026-05-10Printing Dimensions NEGOTIATION94Ioni Bowcher
1039Smith GlickArgentina2026-05-26Buckley Miller Wright NEW81Asiya Javayant
1040Costa DilliardUnited Kingdom2026-05-28Morlong Associates PROPOSAL17Xuxue Feng
1041Stacey MacleadCanada2026-05-25Rangoni Of Florence RENEWAL61Amy Elsner
1042Mayumi KolmetzCanada2026-05-15Chemel, James L Cpa RENEWAL80Elwin Sharvill
1043Adams MorascaRussia2026-05-05King, Christopher A Esq QUALIFIED17Amy Elsner
1044Johnson SergiArgentina2026-05-12Rousseaux, Michael Esq QUALIFIED11Elwin Sharvill
1045Jefferson SchemmerUnited Kingdom2026-05-09King, Christopher A Esq RENEWAL13Stephen Shaw
1046Juan WieserArgentina2026-05-24Feiner Bros QUALIFIED6Elwin Sharvill
1047Faith GillianBrazil2026-05-20Feltz Printing Service RENEWAL91Ivan Magalhaes
1048Emily WhobreyIndia2026-05-12Morlong Associates NEW32Stephen Shaw
1049David DarakjyArgentina2026-05-20Buckley Miller Wright UNQUALIFIED51Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Cody SaylorsFranceAsiya Javayant PROPOSAL
Cody SaylorsGermanyXuxue Feng NEGOTIATION
Maisha RulapaughIndiaAsiya Javayant QUALIFIED
Rodrigues CampainSpainStephen Shaw PROPOSAL
Adams MorascaUnited KingdomOnyama Limba NEGOTIATION
Sinclair WaycottGermanyOnyama Limba QUALIFIED
Emily WhobreyItalyIvan Magalhaes UNQUALIFIED
Misaki RoysterBrazilXuxue Feng RENEWAL
Antonio CaudyGermanyBernardo Dominic QUALIFIED
Mayumi KolmetzAustraliaIvan Magalhaes RENEWAL
Alejandro PerinBrazilBernardo Dominic QUALIFIED
Silvio SlusarskiJapanElwin Sharvill UNQUALIFIED
Jones VocelkaAustraliaElwin Sharvill PROPOSAL
Ashley DoeAustraliaOnyama Limba UNQUALIFIED
Deepesh ChuiItalyAmy Elsner NEGOTIATION
James ButtCanadaIvan Magalhaes RENEWAL
Tony FollerJapanBernardo Dominic NEGOTIATION
Maria MarrierJapanXuxue Feng NEW
Stacey MacleadIndiaAsiya Javayant PROPOSAL
Deepesh ChuiJapanAsiya Javayant UNQUALIFIED
Claire TollnerUnited KingdomIoni Bowcher QUALIFIED
Cody SaylorsUnited KingdomXuxue Feng UNQUALIFIED
Rodrigues CampainSpainElwin Sharvill RENEWAL
Salvatore StockhamJapanIoni Bowcher PROPOSAL
Darci PoquetteItalyIoni Bowcher QUALIFIED
Aika InouyeAustraliaElwin Sharvill UNQUALIFIED
Wickens NestleUnited KingdomXuxue Feng RENEWAL
Maria MarrierSpainXuxue Feng RENEWAL
Kadeem FlosiIndiaAnna Fali RENEWAL
Ivar PaprockiGermanyAmy Elsner NEW
Aruna FigeroaUnited KingdomAmy Elsner RENEWAL
Munro FerenczRussiaAsiya Javayant UNQUALIFIED
Stacey MacleadArgentinaElwin Sharvill PROPOSAL
Smith GlickJapanOnyama Limba UNQUALIFIED
Jennifer AmigonGermanyAsiya Javayant RENEWAL
Aditya KuskoBrazilAsiya Javayant QUALIFIED
Juan WieserFranceAmy Elsner RENEWAL
Jennifer AmigonSpainXuxue Feng NEGOTIATION
Jones VocelkaUnited KingdomAnna Fali UNQUALIFIED
Leja CaldareraFranceAmy Elsner NEW
Claire TollnerSpainBernardo Dominic NEW
Ivar PaprockiArgentinaElwin Sharvill PROPOSAL
Darci PoquetteFranceBernardo Dominic RENEWAL
Munro FerenczJapanStephen Shaw RENEWAL
Munro FerenczCanadaXuxue Feng RENEWAL
Aruna FigeroaRussiaStephen Shaw NEGOTIATION
Rodrigues CampainItalyAsiya Javayant UNQUALIFIED
Arvin AlbaresSpainAnna Fali NEGOTIATION
Antonio CaudyFranceElwin Sharvill UNQUALIFIED
Francesco ShinkoIndiaElwin Sharvill NEGOTIATION
Frozen Columns
Name
Adams Morasca
David Darakjy
Jones Vocelka
Misaki Royster
Juan Wieser
Jeanfrancois Venere
Emily Whobrey
Aditya Kusko
Adams Morasca
Misaki Royster
Juan Wieser
Aditya Kusko
Morrow Ruta
Alejandro Perin
Jefferson Schemmer
Francesco Shinko
Darci Poquette
Claire Tollner
Faith Gillian
Aditya Kusko
Francesco Shinko
Maisha Rulapaugh
Deepesh Chui
Kadeem Flosi
Aditya Kusko
Munro Ferencz
James Butt
Kaitlin Ostrosky
Leon Oldroyd
Misaki Royster
Emily Whobrey
Jefferson Schemmer
Aruna Figeroa
Deepesh Chui
Jones Vocelka
Antonio Caudy
Deepesh Chui
Emily Whobrey
Julie Stenseth
Juan Wieser
Izzy Garufi
Maria Marrier
Faith Gillian
Alejandro Perin
David Darakjy
Alejandro Perin
Rodrigues Campain
Clifford Rim
Claire Tollner
Emily Whobrey
IdCountryDate
1000Argentina2026-05-29
1001Australia2026-05-09
1002Brazil2026-05-04
1003Canada2026-05-19
1004India2026-05-22
1005Germany2026-05-30
1006Italy2026-05-04
1007India2026-05-28
1008India2026-05-16
1009India2026-05-21
1010Russia2026-05-15
1011United Kingdom2026-05-10
1012Brazil2026-05-06
1013Russia2026-05-24
1014Canada2026-05-07
1015Japan2026-05-12
1016Australia2026-05-03
1017Spain2026-05-12
1018United Kingdom2026-05-22
1019France2026-05-19
1020United Kingdom2026-05-18
1021Canada2026-05-26
1022Germany2026-05-17
1023Brazil2026-05-17
1024Russia2026-05-26
1025Italy2026-05-06
1026India2026-05-03
1027Italy2026-05-30
1028Argentina2026-05-21
1029Germany2026-05-14
1030Brazil2026-05-06
1031Germany2026-05-19
1032United Kingdom2026-05-08
1033India2026-05-05
1034India2026-05-29
1035Australia2026-05-29
1036Argentina2026-05-22
1037Germany2026-05-09
1038Germany2026-05-27
1039Italy2026-05-11
1040Brazil2026-05-27
1041Spain2026-05-17
1042India2026-05-26
1043Germany2026-05-18
1044India2026-05-31
1045Brazil2026-05-20
1046Argentina2026-05-04
1047Australia2026-05-21
1048Brazil2026-05-07
1049France2026-05-23

On-Demand Data

NameIdCountryDate
Claire Tollner1000Germany2026-05-23
Jeanfrancois Venere1001India2026-05-07
Izzy Garufi1002Argentina2026-05-08
Rodrigues Campain1003United Kingdom2026-05-06
Smith Glick1004United Kingdom2026-05-15
Ivar Paprocki1005Italy2026-05-21
Francesco Shinko1006Argentina2026-05-05
Darci Poquette1007Canada2026-05-06
Emily Whobrey1008Canada2026-05-13
Mayumi Kolmetz1009Germany2026-05-22
Clifford Rim1010Brazil2026-05-15
Julie Stenseth1011Argentina2026-05-19
Salvatore Stockham1012Japan2026-05-22
Sinclair Waycott1013Australia2026-05-22
Claire Tollner1014Italy2026-05-09
Jefferson Schemmer1015India2026-05-23
Jennifer Amigon1016Italy2026-05-11
Ricardo Gaucho1017Brazil2026-05-22
Nicolas Iturbide1018Italy2026-05-17
Kaitlin Ostrosky1019Australia2026-05-12
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Isabel BowleyFranceAnna Fali NEW
Munro FerenczArgentinaIoni Bowcher UNQUALIFIED
Kadeem FlosiIndiaAsiya Javayant PROPOSAL
Sinclair WaycottJapanAsiya Javayant UNQUALIFIED
Ricardo GauchoSpainStephen Shaw NEW
James ButtJapanStephen Shaw NEW
Jennifer AmigonCanadaAnna Fali NEGOTIATION
Ricardo GauchoAustraliaStephen Shaw QUALIFIED
Costa DilliardSpainAsiya Javayant PROPOSAL
Mayumi KolmetzRussiaBernardo Dominic NEW
Smith GlickBrazilIvan Magalhaes NEW
Ivar PaprockiBrazilStephen Shaw RENEWAL
Rodrigues CampainRussiaIoni Bowcher QUALIFIED
Antonio CaudyGermanyIvan Magalhaes PROPOSAL
Emily WhobreyIndiaAnna Fali UNQUALIFIED
Chavez BriddickRussiaIvan Magalhaes PROPOSAL
Claire TollnerAustraliaStephen Shaw UNQUALIFIED
Aditya KuskoItalyIoni Bowcher NEGOTIATION
Adams MorascaFranceAmy Elsner QUALIFIED
Nicolas IturbideCanadaXuxue Feng UNQUALIFIED
Clifford RimIndiaAnna Fali NEW
Ricardo GauchoIndiaIoni Bowcher PROPOSAL
Juan WieserCanadaAmy Elsner PROPOSAL
Aruna FigeroaFranceBernardo Dominic QUALIFIED
Greenwood BologniaCanadaStephen Shaw QUALIFIED
Julie StensethCanadaXuxue Feng NEGOTIATION
Munro FerenczSpainIvan Magalhaes UNQUALIFIED
Johnson SergiFranceStephen Shaw RENEWAL
Julie StensethJapanIvan Magalhaes UNQUALIFIED
Claire TollnerRussiaXuxue Feng PROPOSAL
Faith GillianArgentinaOnyama Limba QUALIFIED
Wickens NestleCanadaAsiya Javayant PROPOSAL
Kaitlin OstroskyRussiaAnna Fali NEGOTIATION
Julie StensethItalyIvan Magalhaes NEW
Costa DilliardRussiaAsiya Javayant NEW
Deepesh ChuiSpainStephen Shaw UNQUALIFIED
Leon OldroydItalyAmy Elsner QUALIFIED
Morrow RutaArgentinaBernardo Dominic NEW
Kaitlin OstroskyAustraliaIvan Magalhaes NEW
Alejandro PerinJapanAsiya Javayant 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>