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
Nicolas IturbideUnited KingdomOnyama Limba UNQUALIFIED
Clifford RimIndiaStephen Shaw QUALIFIED
Aditya KuskoAustraliaAmy Elsner PROPOSAL
Maisha RulapaughAustraliaAsiya Javayant PROPOSAL
Maisha RulapaughSpainXuxue Feng NEW
Johnson SergiIndiaBernardo Dominic PROPOSAL
Mujtaba NickaItalyBernardo Dominic QUALIFIED
Rodrigues CampainSpainStephen Shaw NEW
Cody SaylorsGermanyStephen Shaw UNQUALIFIED
Francesco ShinkoCanadaAmy Elsner PROPOSAL
Murillo MaletArgentinaOnyama Limba RENEWAL
Kaitlin OstroskyBrazilIoni Bowcher NEGOTIATION
Cody SaylorsArgentinaAsiya Javayant RENEWAL
Faith GillianBrazilIvan Magalhaes RENEWAL
Smith GlickFranceIoni Bowcher UNQUALIFIED
James ButtItalyElwin Sharvill NEW
Aika InouyeBrazilOnyama Limba RENEWAL
Stacey MacleadGermanyAnna Fali QUALIFIED
Sinclair WaycottBrazilElwin Sharvill PROPOSAL
Murillo MaletBrazilAnna Fali QUALIFIED
Faith GillianCanadaElwin Sharvill RENEWAL
Alejandro PerinUnited KingdomOnyama Limba PROPOSAL
Stacey MacleadCanadaAmy Elsner UNQUALIFIED
Jeanfrancois VenereGermanyElwin Sharvill NEGOTIATION
Mayumi KolmetzJapanAnna Fali UNQUALIFIED
Kadeem FlosiFranceXuxue Feng NEGOTIATION
Deepesh ChuiFranceElwin Sharvill NEGOTIATION
Munro FerenczFranceOnyama Limba PROPOSAL
Juan WieserFranceAsiya Javayant PROPOSAL
Morrow RutaFranceIvan Magalhaes PROPOSAL
Juan WieserSpainStephen Shaw NEW
Claire TollnerArgentinaAnna Fali QUALIFIED
Ashley DoeFranceXuxue Feng UNQUALIFIED
Adams MorascaGermanyAmy Elsner QUALIFIED
Juan WieserJapanXuxue Feng RENEWAL
Morrow RutaSpainAsiya Javayant QUALIFIED
Claire TollnerGermanyElwin Sharvill NEW
Misaki RoysterItalyXuxue Feng RENEWAL
Mujtaba NickaBrazilStephen Shaw NEGOTIATION
Silvio SlusarskiRussiaIvan Magalhaes UNQUALIFIED
Munro FerenczBrazilIvan Magalhaes QUALIFIED
Adams MorascaBrazilAmy Elsner QUALIFIED
Kaitlin OstroskyRussiaBernardo Dominic NEW
Nicolas IturbideBrazilXuxue Feng NEGOTIATION
Izzy GarufiCanadaBernardo Dominic UNQUALIFIED
Maria MarrierArgentinaAmy Elsner UNQUALIFIED
Silvio SlusarskiIndiaOnyama Limba NEGOTIATION
Antonio CaudyAustraliaAmy Elsner NEGOTIATION
Wickens NestleJapanAmy Elsner PROPOSAL
Mayumi KolmetzSpainXuxue Feng QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Murillo MaletArgentinaAnna Fali RENEWAL
Rodrigues CampainJapanAnna Fali NEGOTIATION
Sinclair WaycottCanadaElwin Sharvill UNQUALIFIED
Octavia MaletArgentinaElwin Sharvill RENEWAL
Ivar PaprockiJapanStephen Shaw QUALIFIED
Salvatore StockhamGermanyAsiya Javayant NEGOTIATION
Isabel BowleyArgentinaStephen Shaw PROPOSAL
Claire TollnerRussiaAmy Elsner NEGOTIATION
Rodrigues CampainCanadaIvan Magalhaes PROPOSAL
Faith GillianFranceElwin Sharvill PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Murillo MaletAustralia2026-04-26Truhlar And Truhlar Attys QUALIFIED57Ivan Magalhaes
1001Francesco ShinkoUnited Kingdom2026-05-09Rousseaux, Michael Esq UNQUALIFIED73Bernardo Dominic
1002Misaki RoysterAustralia2026-05-02Chanay, Jeffrey A Esq PROPOSAL25Bernardo Dominic
1003Antonio CaudyGermany2026-04-24Rousseaux, Michael Esq QUALIFIED59Xuxue Feng
1004Wickens NestleSpain2026-05-16Truhlar And Truhlar Attys NEGOTIATION30Elwin Sharvill
1005Murillo MaletGermany2026-04-30Truhlar And Truhlar Attys UNQUALIFIED96Anna Fali
1006Costa DilliardAustralia2026-05-19Commercial Press QUALIFIED64Elwin Sharvill
1007Smith GlickAustralia2026-05-03Printing Dimensions UNQUALIFIED39Amy Elsner
1008Misaki RoysterAustralia2026-05-18Chanay, Jeffrey A Esq QUALIFIED64Xuxue Feng
1009Alejandro PerinUnited Kingdom2026-05-18Feiner Bros UNQUALIFIED65Ioni Bowcher
1010Tony FollerJapan2026-04-29Feltz Printing Service NEW0Anna Fali
1011Wickens NestleBrazil2026-05-06Chemel, James L Cpa UNQUALIFIED97Stephen Shaw
1012Munro FerenczAustralia2026-05-13Commercial Press UNQUALIFIED95Ioni Bowcher
1013Emily WhobreyUnited Kingdom2026-05-21Morlong Associates RENEWAL25Elwin Sharvill
1014Jeanfrancois VenereGermany2026-05-15Buckley Miller Wright PROPOSAL86Amy Elsner
1015Kaitlin OstroskyBrazil2026-05-03Chapman, Ross E Esq PROPOSAL13Asiya Javayant
1016Jefferson SchemmerIndia2026-05-05Feiner Bros RENEWAL55Bernardo Dominic
1017Cody SaylorsArgentina2026-05-21Commercial Press QUALIFIED51Bernardo Dominic
1018Nicolas IturbideUnited Kingdom2026-05-21Buckley Miller Wright NEW57Stephen Shaw
1019Costa DilliardGermany2026-05-19Rousseaux, Michael Esq NEW99Anna Fali
1020Antonio CaudyCanada2026-04-26Chemel, James L Cpa NEW82Ioni Bowcher
1021Aruna FigeroaIndia2026-04-30Feiner Bros NEGOTIATION16Ioni Bowcher
1022Darci PoquetteRussia2026-04-29Rousseaux, Michael Esq UNQUALIFIED72Amy Elsner
1023Jones VocelkaRussia2026-05-02Benton, John B Jr RENEWAL70Ioni Bowcher
1024Claire TollnerCanada2026-04-29Chapman, Ross E Esq UNQUALIFIED33Onyama Limba
1025Jennifer AmigonGermany2026-05-17Benton, John B Jr UNQUALIFIED87Bernardo Dominic
1026Nicolas IturbideJapan2026-05-16Feiner Bros UNQUALIFIED84Xuxue Feng
1027Jefferson SchemmerIndia2026-05-18King, Christopher A Esq PROPOSAL74Asiya Javayant
1028David DarakjyAustralia2026-05-15Benton, John B Jr NEW39Ivan Magalhaes
1029Jefferson SchemmerSpain2026-05-11Printing Dimensions PROPOSAL24Stephen Shaw
1030Johnson SergiArgentina2026-04-25Rangoni Of Florence PROPOSAL51Bernardo Dominic
1031Emily WhobreyJapan2026-05-06Feltz Printing Service PROPOSAL6Ivan Magalhaes
1032Chavez BriddickCanada2026-05-15King, Christopher A Esq QUALIFIED10Bernardo Dominic
1033Misaki RoysterSpain2026-05-06Benton, John B Jr NEW76Onyama Limba
1034Ricardo GauchoSpain2026-05-14Feltz Printing Service UNQUALIFIED70Onyama Limba
1035Izzy GarufiCanada2026-05-22Feiner Bros NEGOTIATION74Anna Fali
1036Octavia MaletIndia2026-05-04Feltz Printing Service NEGOTIATION10Onyama Limba
1037Kadeem FlosiCanada2026-05-07Buckley Miller Wright QUALIFIED78Anna Fali
1038Kadeem FlosiCanada2026-05-14Buckley Miller Wright QUALIFIED20Elwin Sharvill
1039Francesco ShinkoArgentina2026-05-23Rousseaux, Michael Esq UNQUALIFIED79Ioni Bowcher
1040Munro FerenczIndia2026-05-05Chapman, Ross E Esq NEW93Xuxue Feng
1041Leon OldroydIndia2026-04-28Benton, John B Jr NEGOTIATION97Bernardo Dominic
1042Greenwood BologniaCanada2026-05-20Buckley Miller Wright NEGOTIATION13Anna Fali
1043Francesco ShinkoCanada2026-05-15Chemel, James L Cpa NEW84Asiya Javayant
1044James ButtGermany2026-05-23Chanay, Jeffrey A Esq PROPOSAL20Stephen Shaw
1045Isabel BowleyUnited Kingdom2026-05-19Buckley Miller Wright PROPOSAL16Onyama Limba
1046Kaitlin OstroskyCanada2026-05-19Benton, John B Jr QUALIFIED81Xuxue Feng
1047Munro FerenczFrance2026-05-03Commercial Press PROPOSAL91Xuxue Feng
1048Aika InouyeBrazil2026-05-16Benton, John B Jr RENEWAL21Elwin Sharvill
1049Wickens NestleArgentina2026-05-20Benton, John B Jr RENEWAL45Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Costa DilliardArgentinaIvan Magalhaes RENEWAL
Juan WieserGermanyIvan Magalhaes RENEWAL
Darci PoquetteRussiaIoni Bowcher PROPOSAL
Maria MarrierJapanAsiya Javayant PROPOSAL
Arvin AlbaresUnited KingdomAsiya Javayant PROPOSAL
Salvatore StockhamIndiaBernardo Dominic RENEWAL
Antonio CaudyItalyIoni Bowcher PROPOSAL
Jeanfrancois VenereSpainAnna Fali PROPOSAL
Antonio CaudyRussiaOnyama Limba RENEWAL
Claire TollnerArgentinaAnna Fali UNQUALIFIED
Maisha RulapaughItalyIoni Bowcher NEGOTIATION
Kaitlin OstroskyUnited KingdomXuxue Feng NEGOTIATION
Greenwood BologniaArgentinaIvan Magalhaes NEGOTIATION
Izzy GarufiFranceStephen Shaw NEW
Alejandro PerinItalyOnyama Limba UNQUALIFIED
Jefferson SchemmerSpainStephen Shaw QUALIFIED
Maria MarrierFranceOnyama Limba NEGOTIATION
Sinclair WaycottCanadaAnna Fali NEW
Emily WhobreyCanadaOnyama Limba PROPOSAL
Jennifer AmigonBrazilBernardo Dominic NEGOTIATION
Johnson SergiBrazilOnyama Limba NEW
Johnson SergiSpainAmy Elsner RENEWAL
Kadeem FlosiRussiaElwin Sharvill PROPOSAL
Francesco ShinkoCanadaAsiya Javayant PROPOSAL
Darci PoquetteJapanXuxue Feng QUALIFIED
Jefferson SchemmerArgentinaIoni Bowcher NEGOTIATION
Ashley DoeGermanyIoni Bowcher NEW
Izzy GarufiItalyAsiya Javayant NEGOTIATION
Mujtaba NickaIndiaIvan Magalhaes NEW
Ivar PaprockiGermanyStephen Shaw RENEWAL
Octavia MaletItalyIvan Magalhaes RENEWAL
Faith GillianItalyStephen Shaw NEGOTIATION
Faith GillianIndiaXuxue Feng PROPOSAL
Leon OldroydCanadaXuxue Feng PROPOSAL
Nicolas IturbideJapanAnna Fali QUALIFIED
Silvio SlusarskiUnited KingdomIvan Magalhaes RENEWAL
Deepesh ChuiJapanAmy Elsner NEGOTIATION
Morrow RutaSpainIoni Bowcher PROPOSAL
Clifford RimUnited KingdomAsiya Javayant RENEWAL
Mayumi KolmetzUnited KingdomAsiya Javayant UNQUALIFIED
Leon OldroydItalyElwin Sharvill PROPOSAL
Wickens NestleSpainStephen Shaw QUALIFIED
Morrow RutaJapanIoni Bowcher QUALIFIED
Ivar PaprockiItalyBernardo Dominic QUALIFIED
Antonio CaudyIndiaIvan Magalhaes NEW
Maisha RulapaughArgentinaAmy Elsner PROPOSAL
Claire TollnerSpainStephen Shaw QUALIFIED
James ButtJapanIvan Magalhaes NEGOTIATION
Julie StensethGermanyIoni Bowcher UNQUALIFIED
Smith GlickBrazilIoni Bowcher RENEWAL
Frozen Columns
Name
Nicolas Iturbide
Silvio Slusarski
Kadeem Flosi
Stacey Maclead
Nicolas Iturbide
Murillo Malet
Leon Oldroyd
Aruna Figeroa
Misaki Royster
Rodrigues Campain
Antonio Caudy
Jones Vocelka
Leja Caldarera
Arvin Albares
Greenwood Bolognia
Deepesh Chui
Julie Stenseth
Costa Dilliard
Julie Stenseth
Jefferson Schemmer
Chavez Briddick
Mujtaba Nicka
Ashley Doe
Antonio Caudy
Kadeem Flosi
Isabel Bowley
Morrow Ruta
Kadeem Flosi
Stacey Maclead
Rodrigues Campain
Smith Glick
Greenwood Bolognia
Leja Caldarera
Arvin Albares
Alejandro Perin
Kaitlin Ostrosky
Ivar Paprocki
Emily Whobrey
Antonio Caudy
Kaitlin Ostrosky
Isabel Bowley
David Darakjy
Wickens Nestle
James Butt
Octavia Malet
Clifford Rim
Maisha Rulapaugh
Jeanfrancois Venere
Ashley Doe
Misaki Royster
IdCountryDate
1000Argentina2026-04-25
1001India2026-05-04
1002France2026-05-11
1003Italy2026-04-28
1004Australia2026-05-14
1005Italy2026-04-24
1006India2026-05-16
1007Brazil2026-05-05
1008Japan2026-04-28
1009Canada2026-05-11
1010Argentina2026-04-26
1011India2026-05-23
1012United Kingdom2026-05-19
1013United Kingdom2026-04-24
1014Canada2026-04-25
1015United Kingdom2026-05-08
1016Brazil2026-05-23
1017Italy2026-05-17
1018Japan2026-05-08
1019Brazil2026-05-15
1020Germany2026-05-21
1021Germany2026-05-12
1022Japan2026-04-25
1023Germany2026-05-23
1024Brazil2026-05-11
1025India2026-05-18
1026India2026-05-14
1027India2026-04-28
1028Argentina2026-04-26
1029United Kingdom2026-04-25
1030Spain2026-05-14
1031Brazil2026-05-23
1032Argentina2026-04-30
1033Brazil2026-05-06
1034Canada2026-05-20
1035India2026-05-08
1036Australia2026-05-10
1037Australia2026-05-12
1038Argentina2026-05-15
1039India2026-04-29
1040France2026-04-29
1041Brazil2026-05-05
1042Canada2026-05-17
1043Germany2026-05-05
1044Brazil2026-05-01
1045Italy2026-05-13
1046Brazil2026-05-10
1047Brazil2026-05-11
1048France2026-05-15
1049France2026-04-28

On-Demand Data

NameIdCountryDate
Silvio Slusarski1000Spain2026-05-01
Sinclair Waycott1001India2026-05-23
Izzy Garufi1002Australia2026-05-18
Jefferson Schemmer1003Spain2026-05-01
Deepesh Chui1004Italy2026-05-01
Murillo Malet1005France2026-04-29
Alejandro Perin1006Brazil2026-05-15
Deepesh Chui1007United Kingdom2026-05-08
Cody Saylors1008Germany2026-05-08
Kaitlin Ostrosky1009Argentina2026-05-11
Kadeem Flosi1010France2026-05-01
Isabel Bowley1011India2026-05-20
James Butt1012Russia2026-05-11
Jones Vocelka1013Brazil2026-04-26
Mujtaba Nicka1014India2026-05-07
Stacey Maclead1015United Kingdom2026-05-01
Stacey Maclead1016India2026-05-22
Clifford Rim1017Italy2026-05-07
Leja Caldarera1018Germany2026-05-10
Mujtaba Nicka1019Japan2026-05-01
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maria MarrierRussiaBernardo Dominic UNQUALIFIED
Aruna FigeroaSpainBernardo Dominic PROPOSAL
Kadeem FlosiBrazilAnna Fali QUALIFIED
Emily WhobreySpainElwin Sharvill PROPOSAL
Deepesh ChuiFranceIoni Bowcher NEW
Leja CaldareraSpainIvan Magalhaes PROPOSAL
Rodrigues CampainUnited KingdomIvan Magalhaes RENEWAL
Munro FerenczArgentinaAmy Elsner NEGOTIATION
Jennifer AmigonRussiaAmy Elsner RENEWAL
Stacey MacleadIndiaIvan Magalhaes NEGOTIATION
Octavia MaletUnited KingdomAsiya Javayant NEW
Francesco ShinkoAustraliaIoni Bowcher RENEWAL
Ricardo GauchoAustraliaIvan Magalhaes QUALIFIED
Francesco ShinkoIndiaAmy Elsner NEW
Isabel BowleyCanadaAsiya Javayant PROPOSAL
Munro FerenczBrazilBernardo Dominic PROPOSAL
Alejandro PerinUnited KingdomAnna Fali UNQUALIFIED
Cody SaylorsCanadaAsiya Javayant UNQUALIFIED
Julie StensethAustraliaStephen Shaw RENEWAL
Jones VocelkaItalyAmy Elsner QUALIFIED
Smith GlickFranceAsiya Javayant PROPOSAL
Mujtaba NickaRussiaAnna Fali PROPOSAL
Jeanfrancois VenereGermanyAmy Elsner PROPOSAL
Rodrigues CampainSpainOnyama Limba PROPOSAL
Maisha RulapaughCanadaAmy Elsner NEW
Munro FerenczAustraliaIoni Bowcher PROPOSAL
Nicolas IturbideIndiaBernardo Dominic RENEWAL
Morrow RutaArgentinaAnna Fali NEW
Alejandro PerinBrazilOnyama Limba QUALIFIED
Rodrigues CampainGermanyAsiya Javayant QUALIFIED
Murillo MaletSpainElwin Sharvill NEW
Kaitlin OstroskyAustraliaAsiya Javayant PROPOSAL
Isabel BowleyCanadaOnyama Limba QUALIFIED
Silvio SlusarskiAustraliaIoni Bowcher UNQUALIFIED
Costa DilliardAustraliaAsiya Javayant PROPOSAL
Aditya KuskoIndiaIvan Magalhaes RENEWAL
Salvatore StockhamBrazilIoni Bowcher RENEWAL
Smith GlickJapanOnyama Limba PROPOSAL
Costa DilliardRussiaXuxue Feng NEW
Jennifer AmigonFranceIoni Bowcher PROPOSAL

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