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
Jones VocelkaArgentinaXuxue Feng UNQUALIFIED
Jennifer AmigonJapanIoni Bowcher UNQUALIFIED
Nicolas IturbideAustraliaAmy Elsner RENEWAL
Stacey MacleadSpainElwin Sharvill QUALIFIED
Clifford RimAustraliaElwin Sharvill UNQUALIFIED
Misaki RoysterRussiaAmy Elsner NEGOTIATION
Sinclair WaycottJapanStephen Shaw NEW
Sinclair WaycottIndiaIvan Magalhaes NEW
Jennifer AmigonIndiaBernardo Dominic UNQUALIFIED
Emily WhobreyArgentinaAnna Fali RENEWAL
Faith GillianJapanBernardo Dominic NEW
James ButtGermanyAsiya Javayant PROPOSAL
Murillo MaletRussiaIvan Magalhaes NEW
Claire TollnerJapanAsiya Javayant PROPOSAL
Emily WhobreyCanadaAmy Elsner NEW
Adams MorascaUnited KingdomAnna Fali QUALIFIED
Mujtaba NickaIndiaAsiya Javayant PROPOSAL
James ButtFranceAsiya Javayant UNQUALIFIED
Munro FerenczSpainAnna Fali RENEWAL
Juan WieserFranceStephen Shaw NEGOTIATION
Kadeem FlosiBrazilAnna Fali PROPOSAL
Jones VocelkaAustraliaAmy Elsner RENEWAL
Murillo MaletItalyXuxue Feng RENEWAL
Nicolas IturbideItalyIvan Magalhaes RENEWAL
Aruna FigeroaSpainAmy Elsner UNQUALIFIED
Jefferson SchemmerRussiaIvan Magalhaes UNQUALIFIED
Greenwood BologniaSpainAsiya Javayant QUALIFIED
James ButtCanadaIvan Magalhaes UNQUALIFIED
Aditya KuskoJapanElwin Sharvill QUALIFIED
Mayumi KolmetzGermanyAmy Elsner NEW
Izzy GarufiIndiaIoni Bowcher PROPOSAL
Jeanfrancois VenereSpainIvan Magalhaes QUALIFIED
Aruna FigeroaSpainStephen Shaw UNQUALIFIED
Emily WhobreyItalyAsiya Javayant NEW
Jones VocelkaIndiaAsiya Javayant RENEWAL
Cody SaylorsBrazilElwin Sharvill UNQUALIFIED
Emily WhobreyUnited KingdomAmy Elsner PROPOSAL
Cody SaylorsBrazilAmy Elsner NEGOTIATION
Nicolas IturbideUnited KingdomAsiya Javayant PROPOSAL
Izzy GarufiGermanyElwin Sharvill NEGOTIATION
David DarakjyAustraliaAsiya Javayant PROPOSAL
Izzy GarufiItalyElwin Sharvill PROPOSAL
Salvatore StockhamUnited KingdomAmy Elsner NEGOTIATION
Kadeem FlosiSpainAsiya Javayant NEGOTIATION
David DarakjyGermanyIoni Bowcher UNQUALIFIED
Rodrigues CampainFranceIoni Bowcher NEW
Arvin AlbaresAustraliaXuxue Feng QUALIFIED
Adams MorascaSpainAmy Elsner RENEWAL
Darci PoquetteArgentinaAnna Fali NEGOTIATION
Francesco ShinkoBrazilStephen Shaw QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Alejandro PerinSpainIvan Magalhaes UNQUALIFIED
Antonio CaudyFranceIvan Magalhaes NEW
Munro FerenczUnited KingdomIvan Magalhaes NEGOTIATION
Ivar PaprockiRussiaXuxue Feng NEW
Adams MorascaIndiaStephen Shaw NEGOTIATION
Mayumi KolmetzIndiaIvan Magalhaes NEGOTIATION
Rodrigues CampainSpainXuxue Feng NEGOTIATION
Chavez BriddickUnited KingdomStephen Shaw PROPOSAL
Leja CaldareraAustraliaBernardo Dominic QUALIFIED
Aditya KuskoArgentinaAmy Elsner QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio CaudyGermany2026-05-14Truhlar And Truhlar Attys PROPOSAL19Bernardo Dominic
1001Nicolas IturbideIndia2026-04-24Buckley Miller Wright QUALIFIED45Ioni Bowcher
1002Isabel BowleyAustralia2026-04-23Morlong Associates NEGOTIATION21Xuxue Feng
1003Leja CaldareraItaly2026-04-23Commercial Press QUALIFIED6Amy Elsner
1004Ashley DoeArgentina2026-04-23Benton, John B Jr QUALIFIED19Asiya Javayant
1005Kaitlin OstroskyArgentina2026-05-16Chapman, Ross E Esq NEW71Stephen Shaw
1006Kadeem FlosiIndia2026-05-14Rangoni Of Florence NEGOTIATION71Ivan Magalhaes
1007Claire TollnerJapan2026-04-27Commercial Press NEW36Onyama Limba
1008Emily WhobreyRussia2026-05-05Chemel, James L Cpa NEGOTIATION31Xuxue Feng
1009Silvio SlusarskiUnited Kingdom2026-05-11Buckley Miller Wright RENEWAL73Onyama Limba
1010Murillo MaletBrazil2026-05-15Rangoni Of Florence NEW70Elwin Sharvill
1011Ivar PaprockiArgentina2026-05-10Feltz Printing Service UNQUALIFIED92Stephen Shaw
1012Leon OldroydCanada2026-05-18Printing Dimensions UNQUALIFIED14Xuxue Feng
1013Stacey MacleadFrance2026-04-27Rousseaux, Michael Esq UNQUALIFIED72Onyama Limba
1014Tony FollerSpain2026-05-16Chemel, James L Cpa NEGOTIATION10Ioni Bowcher
1015Stacey MacleadArgentina2026-05-06Rangoni Of Florence NEGOTIATION58Elwin Sharvill
1016Murillo MaletSpain2026-05-22Chanay, Jeffrey A Esq QUALIFIED13Xuxue Feng
1017Smith GlickBrazil2026-05-22Truhlar And Truhlar Attys PROPOSAL80Stephen Shaw
1018Mujtaba NickaFrance2026-05-21Benton, John B Jr NEGOTIATION42Amy Elsner
1019Johnson SergiSpain2026-05-20King, Christopher A Esq QUALIFIED83Anna Fali
1020Murillo MaletRussia2026-05-14Rangoni Of Florence PROPOSAL17Elwin Sharvill
1021Faith GillianSpain2026-05-09King, Christopher A Esq NEW57Ivan Magalhaes
1022Arvin AlbaresFrance2026-05-20Chanay, Jeffrey A Esq PROPOSAL6Ivan Magalhaes
1023Kadeem FlosiJapan2026-04-28Printing Dimensions NEW88Anna Fali
1024Francesco ShinkoFrance2026-04-25Rangoni Of Florence UNQUALIFIED56Ioni Bowcher
1025Aruna FigeroaGermany2026-04-24Printing Dimensions NEW59Xuxue Feng
1026Salvatore StockhamGermany2026-05-10Morlong Associates NEW48Anna Fali
1027Salvatore StockhamJapan2026-04-26Benton, John B Jr NEGOTIATION47Ioni Bowcher
1028Deepesh ChuiCanada2026-05-10Buckley Miller Wright NEGOTIATION48Stephen Shaw
1029Faith GillianRussia2026-05-06Rangoni Of Florence NEGOTIATION65Anna Fali
1030Ricardo GauchoJapan2026-05-14Morlong Associates UNQUALIFIED52Ioni Bowcher
1031Rodrigues CampainBrazil2026-05-18Benton, John B Jr QUALIFIED60Asiya Javayant
1032Emily WhobreyArgentina2026-04-23Buckley Miller Wright UNQUALIFIED53Ivan Magalhaes
1033Jeanfrancois VenereBrazil2026-05-22Chanay, Jeffrey A Esq PROPOSAL46Bernardo Dominic
1034Aika InouyeUnited Kingdom2026-05-22King, Christopher A Esq UNQUALIFIED70Bernardo Dominic
1035Murillo MaletAustralia2026-05-15Rousseaux, Michael Esq UNQUALIFIED77Stephen Shaw
1036Francesco ShinkoArgentina2026-05-08Chanay, Jeffrey A Esq UNQUALIFIED30Xuxue Feng
1037Faith GillianSpain2026-05-19Rousseaux, Michael Esq RENEWAL54Elwin Sharvill
1038Adams MorascaAustralia2026-05-09Printing Dimensions NEGOTIATION33Onyama Limba
1039Jefferson SchemmerBrazil2026-04-29Buckley Miller Wright UNQUALIFIED85Ivan Magalhaes
1040Misaki RoysterSpain2026-05-15Morlong Associates NEGOTIATION38Ioni Bowcher
1041Aika InouyeGermany2026-05-04Benton, John B Jr NEGOTIATION1Amy Elsner
1042Francesco ShinkoJapan2026-05-05Benton, John B Jr NEGOTIATION22Onyama Limba
1043Tony FollerRussia2026-05-05Rousseaux, Michael Esq PROPOSAL6Ioni Bowcher
1044Aika InouyeAustralia2026-05-16Printing Dimensions RENEWAL84Onyama Limba
1045Jennifer AmigonFrance2026-04-29Commercial Press PROPOSAL78Ioni Bowcher
1046Silvio SlusarskiAustralia2026-05-16Buckley Miller Wright QUALIFIED97Onyama Limba
1047Ivar PaprockiAustralia2026-05-17Morlong Associates RENEWAL55Elwin Sharvill
1048Johnson SergiItaly2026-05-04Morlong Associates RENEWAL50Xuxue Feng
1049Jefferson SchemmerIndia2026-04-26Commercial Press NEW32Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Munro FerenczIndiaIvan Magalhaes QUALIFIED
Johnson SergiBrazilElwin Sharvill RENEWAL
Munro FerenczBrazilXuxue Feng RENEWAL
Ivar PaprockiJapanIvan Magalhaes RENEWAL
Smith GlickJapanIvan Magalhaes QUALIFIED
Wickens NestleJapanIvan Magalhaes QUALIFIED
Wickens NestleBrazilStephen Shaw QUALIFIED
Ricardo GauchoItalyElwin Sharvill PROPOSAL
Morrow RutaUnited KingdomXuxue Feng NEW
Nicolas IturbideJapanAsiya Javayant RENEWAL
Costa DilliardSpainAmy Elsner PROPOSAL
Aruna FigeroaAustraliaBernardo Dominic PROPOSAL
Faith GillianJapanIoni Bowcher UNQUALIFIED
Rodrigues CampainFranceAsiya Javayant UNQUALIFIED
Sinclair WaycottAustraliaIoni Bowcher RENEWAL
Costa DilliardSpainAmy Elsner NEGOTIATION
Francesco ShinkoArgentinaAsiya Javayant NEGOTIATION
Aditya KuskoGermanyAsiya Javayant NEW
Maisha RulapaughFranceAsiya Javayant NEGOTIATION
Leja CaldareraJapanBernardo Dominic PROPOSAL
Julie StensethGermanyIoni Bowcher NEGOTIATION
Johnson SergiBrazilIoni Bowcher RENEWAL
Mujtaba NickaRussiaAsiya Javayant UNQUALIFIED
Maisha RulapaughIndiaAmy Elsner NEW
Julie StensethRussiaElwin Sharvill NEGOTIATION
Nicolas IturbideItalyOnyama Limba RENEWAL
Silvio SlusarskiAustraliaBernardo Dominic PROPOSAL
Francesco ShinkoIndiaAsiya Javayant NEW
Julie StensethRussiaStephen Shaw RENEWAL
Silvio SlusarskiJapanAsiya Javayant UNQUALIFIED
Chavez BriddickItalyXuxue Feng RENEWAL
Smith GlickAustraliaAsiya Javayant NEW
Chavez BriddickUnited KingdomXuxue Feng PROPOSAL
Salvatore StockhamUnited KingdomAmy Elsner UNQUALIFIED
Ricardo GauchoJapanAnna Fali QUALIFIED
Octavia MaletIndiaBernardo Dominic PROPOSAL
Smith GlickJapanOnyama Limba UNQUALIFIED
Deepesh ChuiCanadaIoni Bowcher UNQUALIFIED
Julie StensethAustraliaElwin Sharvill UNQUALIFIED
Leon OldroydGermanyIvan Magalhaes RENEWAL
Mayumi KolmetzRussiaElwin Sharvill NEW
Cody SaylorsFranceBernardo Dominic NEW
Julie StensethGermanyIvan Magalhaes NEW
Sinclair WaycottFranceElwin Sharvill UNQUALIFIED
James ButtJapanXuxue Feng RENEWAL
Jeanfrancois VenereFranceStephen Shaw NEGOTIATION
Mayumi KolmetzItalyAmy Elsner UNQUALIFIED
Maria MarrierRussiaAnna Fali UNQUALIFIED
Clifford RimUnited KingdomElwin Sharvill RENEWAL
Wickens NestleArgentinaIoni Bowcher NEW
Frozen Columns
Name
Ashley Doe
Maria Marrier
Jennifer Amigon
Smith Glick
Adams Morasca
Faith Gillian
Deepesh Chui
Mayumi Kolmetz
Misaki Royster
Wickens Nestle
Smith Glick
Maisha Rulapaugh
Octavia Malet
Claire Tollner
Jefferson Schemmer
Aditya Kusko
Jones Vocelka
Juan Wieser
Chavez Briddick
David Darakjy
Leja Caldarera
Emily Whobrey
Octavia Malet
Cody Saylors
Jefferson Schemmer
Smith Glick
Faith Gillian
Munro Ferencz
Emily Whobrey
Rodrigues Campain
Antonio Caudy
Cody Saylors
Nicolas Iturbide
Julie Stenseth
Salvatore Stockham
Salvatore Stockham
Mujtaba Nicka
Arvin Albares
Sinclair Waycott
Costa Dilliard
Octavia Malet
Darci Poquette
Kadeem Flosi
Jefferson Schemmer
Munro Ferencz
Maisha Rulapaugh
Kaitlin Ostrosky
Claire Tollner
Alejandro Perin
Tony Foller
IdCountryDate
1000United Kingdom2026-05-21
1001India2026-04-25
1002Spain2026-05-20
1003Spain2026-05-09
1004United Kingdom2026-05-16
1005Russia2026-04-29
1006France2026-05-20
1007Italy2026-05-10
1008Australia2026-05-18
1009Argentina2026-05-09
1010Argentina2026-04-27
1011Australia2026-04-24
1012Canada2026-05-11
1013India2026-04-30
1014Germany2026-04-27
1015Brazil2026-05-15
1016United Kingdom2026-05-04
1017Russia2026-05-17
1018United Kingdom2026-05-16
1019Japan2026-05-03
1020Japan2026-05-18
1021France2026-04-25
1022Germany2026-05-19
1023Canada2026-05-14
1024India2026-05-20
1025Brazil2026-05-12
1026Germany2026-04-24
1027Canada2026-05-19
1028United Kingdom2026-05-20
1029Germany2026-05-05
1030Canada2026-04-23
1031India2026-05-14
1032Australia2026-05-01
1033Australia2026-05-03
1034Canada2026-05-18
1035India2026-05-15
1036Argentina2026-05-22
1037Spain2026-05-16
1038Germany2026-05-19
1039Russia2026-04-26
1040Japan2026-05-21
1041Australia2026-05-19
1042India2026-05-13
1043Germany2026-05-08
1044Brazil2026-05-16
1045United Kingdom2026-05-10
1046Russia2026-05-12
1047Japan2026-04-29
1048India2026-05-09
1049Japan2026-05-12

On-Demand Data

NameIdCountryDate
Silvio Slusarski1000Brazil2026-04-24
Alejandro Perin1001France2026-04-25
Rodrigues Campain1002Brazil2026-05-08
Faith Gillian1003France2026-05-21
Alejandro Perin1004Japan2026-05-22
Kadeem Flosi1005France2026-05-07
Chavez Briddick1006Spain2026-05-01
Salvatore Stockham1007Spain2026-04-28
Maria Marrier1008Argentina2026-04-28
Rodrigues Campain1009Brazil2026-04-26
Johnson Sergi1010Australia2026-05-11
Aditya Kusko1011Italy2026-04-29
Costa Dilliard1012India2026-05-14
James Butt1013France2026-05-08
Silvio Slusarski1014United Kingdom2026-05-10
David Darakjy1015Spain2026-05-03
Kaitlin Ostrosky1016Italy2026-04-23
Arvin Albares1017Germany2026-05-21
James Butt1018France2026-04-28
Maisha Rulapaugh1019Japan2026-05-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Faith GillianUnited KingdomIvan Magalhaes QUALIFIED
Ivar PaprockiArgentinaAsiya Javayant UNQUALIFIED
Chavez BriddickGermanyElwin Sharvill QUALIFIED
Morrow RutaArgentinaOnyama Limba QUALIFIED
Misaki RoysterUnited KingdomOnyama Limba NEGOTIATION
Jones VocelkaBrazilAmy Elsner NEW
Ricardo GauchoCanadaAnna Fali UNQUALIFIED
Maisha RulapaughItalyIvan Magalhaes RENEWAL
Smith GlickJapanBernardo Dominic QUALIFIED
Emily WhobreyAustraliaIoni Bowcher QUALIFIED
Jeanfrancois VenereJapanBernardo Dominic PROPOSAL
Deepesh ChuiGermanyElwin Sharvill UNQUALIFIED
Cody SaylorsIndiaStephen Shaw RENEWAL
Leja CaldareraFranceAnna Fali RENEWAL
Silvio SlusarskiIndiaAnna Fali RENEWAL
Arvin AlbaresJapanXuxue Feng RENEWAL
Rodrigues CampainCanadaOnyama Limba QUALIFIED
Morrow RutaSpainOnyama Limba NEW
Costa DilliardItalyIvan Magalhaes NEW
Maisha RulapaughUnited KingdomAsiya Javayant QUALIFIED
Julie StensethBrazilXuxue Feng RENEWAL
Aika InouyeCanadaXuxue Feng QUALIFIED
Salvatore StockhamArgentinaStephen Shaw QUALIFIED
Sinclair WaycottAustraliaAnna Fali PROPOSAL
Cody SaylorsJapanXuxue Feng RENEWAL
Nicolas IturbideArgentinaBernardo Dominic NEGOTIATION
Stacey MacleadJapanElwin Sharvill NEGOTIATION
Claire TollnerBrazilStephen Shaw UNQUALIFIED
Costa DilliardCanadaElwin Sharvill NEW
Rodrigues CampainSpainIoni Bowcher PROPOSAL
Smith GlickBrazilAnna Fali PROPOSAL
Jennifer AmigonGermanyBernardo Dominic PROPOSAL
Aika InouyeSpainOnyama Limba QUALIFIED
Aditya KuskoItalyElwin Sharvill NEGOTIATION
James ButtIndiaStephen Shaw NEW
Aika InouyeAustraliaAsiya Javayant PROPOSAL
Maisha RulapaughItalyXuxue Feng PROPOSAL
David DarakjySpainOnyama Limba QUALIFIED
Maisha RulapaughBrazilElwin Sharvill PROPOSAL
Chavez BriddickIndiaElwin Sharvill NEW

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