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
Aruna FigeroaGermanyBernardo Dominic RENEWAL
Nicolas IturbideCanadaStephen Shaw NEW
Clifford RimFranceAsiya Javayant NEW
Adams MorascaBrazilElwin Sharvill PROPOSAL
Juan WieserFranceXuxue Feng RENEWAL
Darci PoquetteJapanElwin Sharvill RENEWAL
Kaitlin OstroskyUnited KingdomIvan Magalhaes PROPOSAL
Jeanfrancois VenereCanadaElwin Sharvill NEW
Juan WieserArgentinaElwin Sharvill UNQUALIFIED
Cody SaylorsJapanXuxue Feng NEGOTIATION
Kaitlin OstroskyRussiaElwin Sharvill RENEWAL
Ricardo GauchoSpainStephen Shaw PROPOSAL
Isabel BowleyGermanyIoni Bowcher RENEWAL
Clifford RimJapanAnna Fali RENEWAL
Faith GillianUnited KingdomElwin Sharvill PROPOSAL
Maria MarrierSpainAnna Fali PROPOSAL
Ivar PaprockiGermanyIoni Bowcher RENEWAL
Nicolas IturbideSpainElwin Sharvill RENEWAL
Octavia MaletGermanyStephen Shaw RENEWAL
Aruna FigeroaRussiaStephen Shaw UNQUALIFIED
Wickens NestleBrazilStephen Shaw NEGOTIATION
Aruna FigeroaIndiaIoni Bowcher NEW
Kaitlin OstroskySpainOnyama Limba NEW
David DarakjyItalyStephen Shaw RENEWAL
Jones VocelkaItalyElwin Sharvill QUALIFIED
Greenwood BologniaGermanyAmy Elsner UNQUALIFIED
Rodrigues CampainJapanAmy Elsner NEGOTIATION
Leon OldroydFranceBernardo Dominic RENEWAL
Johnson SergiBrazilIoni Bowcher NEGOTIATION
Chavez BriddickFranceIvan Magalhaes UNQUALIFIED
Darci PoquetteSpainIvan Magalhaes RENEWAL
Morrow RutaFranceIoni Bowcher RENEWAL
Misaki RoysterItalyAmy Elsner UNQUALIFIED
Ashley DoeArgentinaStephen Shaw UNQUALIFIED
Claire TollnerFranceXuxue Feng NEGOTIATION
Greenwood BologniaCanadaAnna Fali RENEWAL
Johnson SergiSpainElwin Sharvill QUALIFIED
Jeanfrancois VenereJapanAmy Elsner UNQUALIFIED
Greenwood BologniaSpainStephen Shaw NEGOTIATION
Munro FerenczSpainXuxue Feng UNQUALIFIED
Alejandro PerinFranceElwin Sharvill RENEWAL
Chavez BriddickSpainIvan Magalhaes QUALIFIED
Emily WhobreyAustraliaAsiya Javayant NEGOTIATION
Maria MarrierAustraliaXuxue Feng NEGOTIATION
Sinclair WaycottFranceElwin Sharvill NEW
Jeanfrancois VenereItalyAnna Fali NEW
Leja CaldareraRussiaIvan Magalhaes UNQUALIFIED
Ivar PaprockiCanadaIvan Magalhaes QUALIFIED
Ivar PaprockiArgentinaElwin Sharvill RENEWAL
Adams MorascaCanadaOnyama Limba NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Johnson SergiAustraliaIoni Bowcher UNQUALIFIED
Emily WhobreyBrazilOnyama Limba QUALIFIED
Munro FerenczItalyXuxue Feng PROPOSAL
Greenwood BologniaCanadaAsiya Javayant QUALIFIED
Darci PoquetteArgentinaAsiya Javayant NEGOTIATION
Rodrigues CampainSpainXuxue Feng QUALIFIED
Ricardo GauchoSpainIvan Magalhaes NEGOTIATION
Emily WhobreyBrazilBernardo Dominic NEGOTIATION
Costa DilliardRussiaElwin Sharvill NEW
Ashley DoeArgentinaElwin Sharvill RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maria MarrierGermany2026-05-12Benton, John B Jr NEW96Xuxue Feng
1001Clifford RimAustralia2026-06-02Benton, John B Jr UNQUALIFIED8Xuxue Feng
1002Faith GillianArgentina2026-05-21Commercial Press UNQUALIFIED39Bernardo Dominic
1003Kadeem FlosiIndia2026-05-26Truhlar And Truhlar Attys PROPOSAL75Ioni Bowcher
1004Kadeem FlosiBrazil2026-05-18Commercial Press RENEWAL67Onyama Limba
1005Mayumi KolmetzItaly2026-05-24Feltz Printing Service UNQUALIFIED44Onyama Limba
1006Arvin AlbaresSpain2026-05-13Dorl, James J Esq UNQUALIFIED2Xuxue Feng
1007Maria MarrierBrazil2026-05-22Chemel, James L Cpa NEW27Ioni Bowcher
1008Mayumi KolmetzIndia2026-05-11Feltz Printing Service QUALIFIED87Elwin Sharvill
1009Mujtaba NickaGermany2026-05-29Chanay, Jeffrey A Esq UNQUALIFIED41Bernardo Dominic
1010Deepesh ChuiIndia2026-05-31Feiner Bros RENEWAL86Xuxue Feng
1011Cody SaylorsAustralia2026-05-28Chemel, James L Cpa PROPOSAL14Amy Elsner
1012Kaitlin OstroskyUnited Kingdom2026-05-17Rangoni Of Florence QUALIFIED82Ivan Magalhaes
1013Salvatore StockhamJapan2026-05-29Dorl, James J Esq QUALIFIED42Amy Elsner
1014Stacey MacleadJapan2026-05-13King, Christopher A Esq PROPOSAL44Xuxue Feng
1015Kadeem FlosiFrance2026-06-03Buckley Miller Wright QUALIFIED39Stephen Shaw
1016James ButtGermany2026-05-24Truhlar And Truhlar Attys NEW59Amy Elsner
1017Wickens NestleRussia2026-05-28Rousseaux, Michael Esq UNQUALIFIED36Bernardo Dominic
1018Ricardo GauchoCanada2026-05-27Chanay, Jeffrey A Esq PROPOSAL84Ivan Magalhaes
1019Sinclair WaycottRussia2026-05-28Morlong Associates RENEWAL36Stephen Shaw
1020Francesco ShinkoRussia2026-05-08Buckley Miller Wright NEW77Stephen Shaw
1021Aruna FigeroaIndia2026-05-11Commercial Press NEW44Asiya Javayant
1022Aika InouyeRussia2026-05-22Truhlar And Truhlar Attys PROPOSAL78Anna Fali
1023Murillo MaletFrance2026-06-03Chanay, Jeffrey A Esq UNQUALIFIED89Amy Elsner
1024Ricardo GauchoRussia2026-05-08Feltz Printing Service RENEWAL32Xuxue Feng
1025Jones VocelkaIndia2026-05-31Benton, John B Jr PROPOSAL57Stephen Shaw
1026Ricardo GauchoIndia2026-05-24Chapman, Ross E Esq PROPOSAL51Onyama Limba
1027Johnson SergiRussia2026-05-17Chapman, Ross E Esq PROPOSAL14Amy Elsner
1028James ButtFrance2026-05-10Chapman, Ross E Esq RENEWAL79Elwin Sharvill
1029Cody SaylorsJapan2026-06-02Morlong Associates RENEWAL4Stephen Shaw
1030Jones VocelkaCanada2026-05-24Rousseaux, Michael Esq QUALIFIED39Stephen Shaw
1031Silvio SlusarskiIndia2026-05-22Morlong Associates UNQUALIFIED67Xuxue Feng
1032Maria MarrierUnited Kingdom2026-05-26Printing Dimensions QUALIFIED18Anna Fali
1033Munro FerenczFrance2026-06-03King, Christopher A Esq UNQUALIFIED37Ioni Bowcher
1034Sinclair WaycottRussia2026-05-18Benton, John B Jr RENEWAL67Ivan Magalhaes
1035Johnson SergiUnited Kingdom2026-05-15Truhlar And Truhlar Attys UNQUALIFIED73Amy Elsner
1036Aika InouyeAustralia2026-05-16Commercial Press NEW47Asiya Javayant
1037Kaitlin OstroskyCanada2026-05-11Benton, John B Jr NEW78Ivan Magalhaes
1038Cody SaylorsCanada2026-06-01Rousseaux, Michael Esq RENEWAL1Amy Elsner
1039Stacey MacleadItaly2026-06-04Printing Dimensions RENEWAL22Bernardo Dominic
1040Salvatore StockhamFrance2026-06-03Chanay, Jeffrey A Esq PROPOSAL78Xuxue Feng
1041Faith GillianSpain2026-05-31Printing Dimensions RENEWAL63Ivan Magalhaes
1042Leja CaldareraGermany2026-06-03Commercial Press UNQUALIFIED83Onyama Limba
1043Claire TollnerGermany2026-05-23Feiner Bros NEGOTIATION58Xuxue Feng
1044Clifford RimBrazil2026-05-15Dorl, James J Esq UNQUALIFIED19Onyama Limba
1045Cody SaylorsGermany2026-05-24Commercial Press NEGOTIATION12Ivan Magalhaes
1046Arvin AlbaresGermany2026-05-11Benton, John B Jr RENEWAL53Ioni Bowcher
1047Ricardo GauchoJapan2026-06-03Chanay, Jeffrey A Esq NEW11Onyama Limba
1048Clifford RimRussia2026-05-06Feltz Printing Service PROPOSAL85Bernardo Dominic
1049Stacey MacleadCanada2026-05-21Rousseaux, Michael Esq NEGOTIATION22Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Ashley DoeGermanyOnyama Limba UNQUALIFIED
Sinclair WaycottAustraliaBernardo Dominic PROPOSAL
Ashley DoeAustraliaElwin Sharvill UNQUALIFIED
Ricardo GauchoIndiaAnna Fali NEW
Tony FollerBrazilIoni Bowcher QUALIFIED
Aruna FigeroaFranceIvan Magalhaes QUALIFIED
Francesco ShinkoBrazilOnyama Limba PROPOSAL
Julie StensethFranceIoni Bowcher RENEWAL
Smith GlickCanadaAmy Elsner NEW
James ButtUnited KingdomIoni Bowcher NEGOTIATION
Julie StensethGermanyAsiya Javayant NEW
Jefferson SchemmerFranceAnna Fali RENEWAL
Adams MorascaArgentinaBernardo Dominic NEGOTIATION
Sinclair WaycottAustraliaXuxue Feng QUALIFIED
Tony FollerArgentinaAmy Elsner QUALIFIED
Salvatore StockhamSpainBernardo Dominic UNQUALIFIED
Antonio CaudyGermanyIoni Bowcher NEGOTIATION
Aika InouyeFranceIoni Bowcher RENEWAL
Jefferson SchemmerUnited KingdomElwin Sharvill NEW
Murillo MaletJapanAmy Elsner RENEWAL
Tony FollerFranceOnyama Limba NEGOTIATION
Leon OldroydJapanElwin Sharvill PROPOSAL
Isabel BowleyUnited KingdomOnyama Limba UNQUALIFIED
Alejandro PerinArgentinaBernardo Dominic RENEWAL
Greenwood BologniaAustraliaOnyama Limba QUALIFIED
Greenwood BologniaArgentinaBernardo Dominic PROPOSAL
Jennifer AmigonBrazilAsiya Javayant NEGOTIATION
Clifford RimArgentinaIoni Bowcher NEW
Izzy GarufiUnited KingdomStephen Shaw NEW
Jones VocelkaUnited KingdomOnyama Limba QUALIFIED
Leon OldroydIndiaAmy Elsner NEGOTIATION
Silvio SlusarskiArgentinaElwin Sharvill PROPOSAL
Salvatore StockhamJapanXuxue Feng NEGOTIATION
Antonio CaudyGermanyAnna Fali NEGOTIATION
Aika InouyeItalyIoni Bowcher QUALIFIED
Maisha RulapaughArgentinaElwin Sharvill PROPOSAL
Aditya KuskoGermanyAmy Elsner PROPOSAL
Wickens NestleRussiaXuxue Feng UNQUALIFIED
Jennifer AmigonArgentinaIoni Bowcher NEGOTIATION
Francesco ShinkoIndiaXuxue Feng QUALIFIED
Isabel BowleyArgentinaIoni Bowcher QUALIFIED
Silvio SlusarskiRussiaXuxue Feng UNQUALIFIED
Costa DilliardArgentinaAnna Fali UNQUALIFIED
Isabel BowleyRussiaStephen Shaw PROPOSAL
Chavez BriddickGermanyAmy Elsner PROPOSAL
Maria MarrierGermanyStephen Shaw UNQUALIFIED
Jennifer AmigonAustraliaAsiya Javayant PROPOSAL
Darci PoquetteIndiaAnna Fali NEW
Izzy GarufiBrazilIoni Bowcher UNQUALIFIED
Juan WieserJapanIoni Bowcher PROPOSAL
Frozen Columns
Name
Tony Foller
Aditya Kusko
Silvio Slusarski
Claire Tollner
Wickens Nestle
Faith Gillian
Alejandro Perin
Antonio Caudy
Costa Dilliard
Mujtaba Nicka
Morrow Ruta
Ashley Doe
Maria Marrier
Smith Glick
Smith Glick
Wickens Nestle
Mujtaba Nicka
Deepesh Chui
Silvio Slusarski
Ricardo Gaucho
Juan Wieser
Jennifer Amigon
Munro Ferencz
James Butt
Greenwood Bolognia
Octavia Malet
Clifford Rim
Kadeem Flosi
Antonio Caudy
Izzy Garufi
Tony Foller
Mayumi Kolmetz
Arvin Albares
Darci Poquette
Claire Tollner
Aditya Kusko
Nicolas Iturbide
Alejandro Perin
Salvatore Stockham
Alejandro Perin
Smith Glick
Misaki Royster
Salvatore Stockham
Octavia Malet
Jennifer Amigon
Faith Gillian
Cody Saylors
Munro Ferencz
Cody Saylors
Francesco Shinko
IdCountryDate
1000Spain2026-05-18
1001Russia2026-05-29
1002Russia2026-05-21
1003India2026-05-14
1004Japan2026-05-27
1005Brazil2026-05-15
1006Canada2026-05-07
1007United Kingdom2026-05-09
1008Japan2026-05-22
1009Australia2026-05-18
1010Canada2026-05-31
1011Brazil2026-05-28
1012Brazil2026-05-18
1013France2026-05-17
1014Russia2026-06-04
1015Brazil2026-05-29
1016Canada2026-05-08
1017United Kingdom2026-05-20
1018Australia2026-05-10
1019Russia2026-05-25
1020Japan2026-05-22
1021Australia2026-05-12
1022Brazil2026-05-09
1023Canada2026-05-28
1024Argentina2026-05-23
1025Spain2026-05-26
1026India2026-05-07
1027India2026-05-20
1028Argentina2026-06-04
1029Australia2026-05-24
1030Germany2026-05-27
1031Australia2026-05-27
1032Japan2026-05-26
1033Germany2026-05-15
1034Brazil2026-05-17
1035India2026-05-12
1036Spain2026-05-28
1037Argentina2026-05-20
1038Russia2026-05-17
1039Japan2026-05-19
1040Italy2026-05-07
1041India2026-05-23
1042Australia2026-05-17
1043Canada2026-05-18
1044Italy2026-05-12
1045Spain2026-05-14
1046Brazil2026-05-24
1047India2026-05-29
1048Italy2026-05-19
1049Argentina2026-05-21

On-Demand Data

NameIdCountryDate
Morrow Ruta1000Canada2026-06-02
Morrow Ruta1001Japan2026-06-03
Aruna Figeroa1002Australia2026-06-02
Mujtaba Nicka1003Germany2026-05-19
Greenwood Bolognia1004Canada2026-05-24
Kaitlin Ostrosky1005Germany2026-05-06
Izzy Garufi1006France2026-05-28
Sinclair Waycott1007Canada2026-05-17
Aditya Kusko1008Spain2026-05-21
Mujtaba Nicka1009Australia2026-06-04
Murillo Malet1010Canada2026-06-02
Maria Marrier1011Argentina2026-05-21
Morrow Ruta1012Russia2026-05-14
Emily Whobrey1013Italy2026-05-22
Adams Morasca1014United Kingdom2026-05-28
Cody Saylors1015Russia2026-05-14
Arvin Albares1016Spain2026-05-21
Stacey Maclead1017Canada2026-05-25
Jennifer Amigon1018Canada2026-05-27
Jennifer Amigon1019India2026-05-12
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ricardo GauchoCanadaIoni Bowcher NEW
Jennifer AmigonBrazilBernardo Dominic UNQUALIFIED
David DarakjyJapanBernardo Dominic PROPOSAL
Ricardo GauchoRussiaElwin Sharvill PROPOSAL
Claire TollnerGermanyElwin Sharvill QUALIFIED
Chavez BriddickBrazilIoni Bowcher QUALIFIED
Misaki RoysterGermanyAmy Elsner UNQUALIFIED
Darci PoquetteGermanyStephen Shaw RENEWAL
Ivar PaprockiSpainXuxue Feng PROPOSAL
Misaki RoysterItalyStephen Shaw QUALIFIED
Darci PoquetteBrazilBernardo Dominic PROPOSAL
Octavia MaletUnited KingdomBernardo Dominic PROPOSAL
Jennifer AmigonFranceXuxue Feng NEGOTIATION
Smith GlickCanadaElwin Sharvill QUALIFIED
Jones VocelkaJapanIoni Bowcher NEW
David DarakjyArgentinaOnyama Limba PROPOSAL
Faith GillianSpainAmy Elsner UNQUALIFIED
Faith GillianAustraliaIoni Bowcher RENEWAL
Claire TollnerAustraliaStephen Shaw UNQUALIFIED
Jones VocelkaBrazilStephen Shaw QUALIFIED
Tony FollerRussiaStephen Shaw NEGOTIATION
Alejandro PerinCanadaElwin Sharvill RENEWAL
Misaki RoysterItalyAsiya Javayant QUALIFIED
Tony FollerAustraliaElwin Sharvill NEGOTIATION
Murillo MaletUnited KingdomElwin Sharvill NEGOTIATION
Jennifer AmigonBrazilXuxue Feng NEW
Jennifer AmigonRussiaXuxue Feng QUALIFIED
James ButtCanadaIoni Bowcher UNQUALIFIED
Chavez BriddickGermanyIvan Magalhaes NEGOTIATION
Maria MarrierItalyAsiya Javayant UNQUALIFIED
Kadeem FlosiItalyIvan Magalhaes RENEWAL
Leja CaldareraFranceIvan Magalhaes NEGOTIATION
Darci PoquetteItalyBernardo Dominic QUALIFIED
Aditya KuskoSpainAsiya Javayant NEGOTIATION
Jones VocelkaIndiaBernardo Dominic QUALIFIED
Greenwood BologniaFranceAsiya Javayant RENEWAL
Jones VocelkaCanadaAnna Fali RENEWAL
Cody SaylorsGermanyBernardo Dominic UNQUALIFIED
Jennifer AmigonAustraliaIvan Magalhaes NEW
Deepesh ChuiBrazilIvan Magalhaes 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>