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
Antonio CaudyUnited KingdomXuxue Feng PROPOSAL
Izzy GarufiFranceStephen Shaw RENEWAL
Antonio CaudyRussiaAnna Fali NEGOTIATION
Morrow RutaFranceXuxue Feng PROPOSAL
Isabel BowleyAustraliaIoni Bowcher NEW
Emily WhobreyArgentinaAsiya Javayant NEGOTIATION
Rodrigues CampainArgentinaBernardo Dominic RENEWAL
Nicolas IturbideFranceBernardo Dominic RENEWAL
Julie StensethArgentinaAmy Elsner NEW
Jennifer AmigonRussiaAsiya Javayant QUALIFIED
Jones VocelkaGermanyAsiya Javayant QUALIFIED
Emily WhobreyAustraliaIvan Magalhaes QUALIFIED
Munro FerenczCanadaIvan Magalhaes QUALIFIED
Darci PoquetteBrazilBernardo Dominic PROPOSAL
Alejandro PerinRussiaAmy Elsner UNQUALIFIED
Sinclair WaycottUnited KingdomAnna Fali NEW
Juan WieserSpainStephen Shaw RENEWAL
Jefferson SchemmerUnited KingdomStephen Shaw PROPOSAL
Clifford RimSpainIvan Magalhaes UNQUALIFIED
Clifford RimJapanElwin Sharvill NEW
Costa DilliardAustraliaIvan Magalhaes PROPOSAL
Maisha RulapaughRussiaStephen Shaw QUALIFIED
Aditya KuskoSpainBernardo Dominic NEW
Jefferson SchemmerSpainAnna Fali NEGOTIATION
Julie StensethRussiaAmy Elsner NEGOTIATION
Maisha RulapaughAustraliaStephen Shaw NEGOTIATION
Clifford RimArgentinaElwin Sharvill PROPOSAL
Jones VocelkaJapanAnna Fali NEGOTIATION
Nicolas IturbideRussiaStephen Shaw QUALIFIED
Isabel BowleyArgentinaOnyama Limba NEGOTIATION
Maria MarrierArgentinaElwin Sharvill QUALIFIED
Sinclair WaycottIndiaAmy Elsner NEW
Jeanfrancois VenereRussiaOnyama Limba NEW
Tony FollerBrazilElwin Sharvill PROPOSAL
Maria MarrierArgentinaAsiya Javayant PROPOSAL
Johnson SergiIndiaBernardo Dominic UNQUALIFIED
Jennifer AmigonGermanyXuxue Feng RENEWAL
Antonio CaudyBrazilAsiya Javayant NEGOTIATION
Clifford RimCanadaElwin Sharvill QUALIFIED
Aditya KuskoJapanAsiya Javayant NEW
Aruna FigeroaItalyAnna Fali NEW
Smith GlickBrazilElwin Sharvill NEW
Leja CaldareraAustraliaOnyama Limba NEW
Juan WieserCanadaIoni Bowcher PROPOSAL
Faith GillianIndiaAmy Elsner UNQUALIFIED
Costa DilliardAustraliaAnna Fali PROPOSAL
Munro FerenczJapanAsiya Javayant NEW
Ivar PaprockiBrazilXuxue Feng RENEWAL
Adams MorascaGermanyOnyama Limba QUALIFIED
Jones VocelkaArgentinaBernardo Dominic PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Darci PoquetteRussiaIoni Bowcher NEGOTIATION
Stacey MacleadAustraliaAnna Fali RENEWAL
Emily WhobreyFranceAnna Fali NEGOTIATION
Francesco ShinkoJapanXuxue Feng UNQUALIFIED
Izzy GarufiItalyOnyama Limba RENEWAL
Jeanfrancois VenereArgentinaAmy Elsner RENEWAL
Chavez BriddickIndiaAnna Fali PROPOSAL
Chavez BriddickIndiaBernardo Dominic PROPOSAL
Stacey MacleadSpainIoni Bowcher NEGOTIATION
Aditya KuskoUnited KingdomOnyama Limba NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Juan WieserFrance2026-06-02Benton, John B Jr QUALIFIED26Anna Fali
1001Deepesh ChuiArgentina2026-05-29Benton, John B Jr UNQUALIFIED64Stephen Shaw
1002Misaki RoysterGermany2026-05-22Feiner Bros NEGOTIATION57Asiya Javayant
1003Stacey MacleadBrazil2026-05-30Morlong Associates NEGOTIATION33Ivan Magalhaes
1004Francesco ShinkoUnited Kingdom2026-06-12Benton, John B Jr UNQUALIFIED95Amy Elsner
1005Antonio CaudyIndia2026-06-15Chapman, Ross E Esq NEW95Elwin Sharvill
1006Morrow RutaCanada2026-06-07Feltz Printing Service QUALIFIED41Onyama Limba
1007Claire TollnerSpain2026-06-13Truhlar And Truhlar Attys QUALIFIED51Onyama Limba
1008Deepesh ChuiAustralia2026-05-28Dorl, James J Esq UNQUALIFIED44Amy Elsner
1009Salvatore StockhamJapan2026-05-22Feltz Printing Service UNQUALIFIED34Anna Fali
1010Izzy GarufiSpain2026-05-31Buckley Miller Wright RENEWAL95Amy Elsner
1011Morrow RutaUnited Kingdom2026-06-06Chanay, Jeffrey A Esq NEGOTIATION89Ivan Magalhaes
1012Nicolas IturbideUnited Kingdom2026-05-30Feiner Bros QUALIFIED73Elwin Sharvill
1013Rodrigues CampainRussia2026-06-16Feiner Bros UNQUALIFIED4Ivan Magalhaes
1014Isabel BowleyGermany2026-05-23Rousseaux, Michael Esq NEW58Anna Fali
1015Jefferson SchemmerRussia2026-05-29Morlong Associates NEGOTIATION61Elwin Sharvill
1016Jennifer AmigonBrazil2026-06-09Benton, John B Jr NEGOTIATION97Ioni Bowcher
1017Nicolas IturbideRussia2026-05-21Benton, John B Jr NEGOTIATION63Ioni Bowcher
1018Johnson SergiJapan2026-06-14Truhlar And Truhlar Attys NEGOTIATION32Amy Elsner
1019Octavia MaletJapan2026-05-27King, Christopher A Esq PROPOSAL1Anna Fali
1020Darci PoquetteFrance2026-06-19Rangoni Of Florence NEGOTIATION18Ioni Bowcher
1021Smith GlickBrazil2026-06-18Printing Dimensions QUALIFIED45Anna Fali
1022Ivar PaprockiFrance2026-06-04Rousseaux, Michael Esq RENEWAL0Xuxue Feng
1023Kadeem FlosiBrazil2026-06-07Rousseaux, Michael Esq PROPOSAL49Ioni Bowcher
1024Darci PoquetteUnited Kingdom2026-05-21Feiner Bros QUALIFIED19Amy Elsner
1025Cody SaylorsArgentina2026-06-04Chapman, Ross E Esq NEGOTIATION28Anna Fali
1026Salvatore StockhamIndia2026-06-02Chanay, Jeffrey A Esq QUALIFIED93Elwin Sharvill
1027Arvin AlbaresIndia2026-05-30Truhlar And Truhlar Attys NEW76Stephen Shaw
1028Julie StensethGermany2026-05-24Chanay, Jeffrey A Esq QUALIFIED61Xuxue Feng
1029Smith GlickGermany2026-05-22Buckley Miller Wright NEGOTIATION15Onyama Limba
1030Nicolas IturbideItaly2026-06-04Dorl, James J Esq QUALIFIED42Xuxue Feng
1031Salvatore StockhamRussia2026-06-07Morlong Associates NEGOTIATION58Onyama Limba
1032Rodrigues CampainSpain2026-05-26Feltz Printing Service RENEWAL75Ioni Bowcher
1033Morrow RutaRussia2026-06-12Morlong Associates NEGOTIATION24Onyama Limba
1034Antonio CaudyArgentina2026-05-24Commercial Press UNQUALIFIED47Elwin Sharvill
1035David DarakjyFrance2026-06-13Dorl, James J Esq RENEWAL5Ioni Bowcher
1036Murillo MaletGermany2026-06-10Commercial Press NEW69Anna Fali
1037Faith GillianSpain2026-05-31Truhlar And Truhlar Attys UNQUALIFIED32Elwin Sharvill
1038Ivar PaprockiBrazil2026-05-21Benton, John B Jr RENEWAL10Ioni Bowcher
1039Tony FollerJapan2026-05-28Dorl, James J Esq NEW18Asiya Javayant
1040Julie StensethIndia2026-06-03Feiner Bros NEGOTIATION20Ioni Bowcher
1041Alejandro PerinIndia2026-06-06Morlong Associates RENEWAL86Ioni Bowcher
1042Wickens NestleItaly2026-05-26Buckley Miller Wright RENEWAL16Ioni Bowcher
1043Wickens NestleJapan2026-06-17Chemel, James L Cpa UNQUALIFIED19Onyama Limba
1044Antonio CaudyBrazil2026-06-10King, Christopher A Esq RENEWAL38Ioni Bowcher
1045Jennifer AmigonRussia2026-06-08Chanay, Jeffrey A Esq NEGOTIATION38Amy Elsner
1046Murillo MaletItaly2026-05-27Commercial Press UNQUALIFIED70Stephen Shaw
1047James ButtSpain2026-06-09Dorl, James J Esq RENEWAL13Bernardo Dominic
1048David DarakjyBrazil2026-06-09Chapman, Ross E Esq RENEWAL51Amy Elsner
1049Adams MorascaBrazil2026-05-29Feiner Bros PROPOSAL9Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Rodrigues CampainBrazilOnyama Limba PROPOSAL
Silvio SlusarskiJapanStephen Shaw NEW
Tony FollerFranceBernardo Dominic QUALIFIED
Jefferson SchemmerUnited KingdomAsiya Javayant QUALIFIED
Kadeem FlosiGermanyIoni Bowcher NEW
Jeanfrancois VenereAustraliaOnyama Limba NEGOTIATION
Mujtaba NickaAustraliaStephen Shaw UNQUALIFIED
Maisha RulapaughSpainBernardo Dominic NEGOTIATION
Mujtaba NickaAustraliaOnyama Limba QUALIFIED
Costa DilliardItalyAsiya Javayant QUALIFIED
Wickens NestleCanadaStephen Shaw UNQUALIFIED
Jones VocelkaCanadaBernardo Dominic NEW
Leon OldroydAustraliaIoni Bowcher UNQUALIFIED
Octavia MaletUnited KingdomAmy Elsner QUALIFIED
Wickens NestleCanadaXuxue Feng NEGOTIATION
Francesco ShinkoIndiaIvan Magalhaes UNQUALIFIED
Johnson SergiBrazilAnna Fali PROPOSAL
Maria MarrierRussiaStephen Shaw UNQUALIFIED
Leja CaldareraRussiaAmy Elsner NEW
David DarakjyFranceXuxue Feng UNQUALIFIED
Izzy GarufiFranceOnyama Limba UNQUALIFIED
Jones VocelkaArgentinaStephen Shaw NEGOTIATION
Maisha RulapaughAustraliaStephen Shaw NEGOTIATION
Rodrigues CampainArgentinaOnyama Limba NEW
Morrow RutaItalyIoni Bowcher NEW
Jennifer AmigonGermanyXuxue Feng QUALIFIED
Jeanfrancois VenereBrazilAnna Fali NEGOTIATION
Murillo MaletBrazilStephen Shaw QUALIFIED
Maria MarrierUnited KingdomStephen Shaw NEGOTIATION
Claire TollnerGermanyStephen Shaw RENEWAL
Arvin AlbaresIndiaBernardo Dominic NEGOTIATION
Aditya KuskoJapanElwin Sharvill RENEWAL
Chavez BriddickFranceIvan Magalhaes UNQUALIFIED
Clifford RimGermanyAsiya Javayant QUALIFIED
Darci PoquetteGermanyStephen Shaw RENEWAL
Octavia MaletRussiaIoni Bowcher NEGOTIATION
Leja CaldareraAustraliaIvan Magalhaes NEW
David DarakjyItalyAnna Fali UNQUALIFIED
Tony FollerUnited KingdomIoni Bowcher UNQUALIFIED
Costa DilliardFranceXuxue Feng NEW
Murillo MaletIndiaOnyama Limba QUALIFIED
Arvin AlbaresSpainStephen Shaw RENEWAL
Costa DilliardJapanStephen Shaw NEGOTIATION
Stacey MacleadSpainXuxue Feng UNQUALIFIED
Maisha RulapaughArgentinaAnna Fali NEW
Kaitlin OstroskyBrazilXuxue Feng NEW
Ivar PaprockiBrazilIoni Bowcher RENEWAL
Greenwood BologniaSpainAmy Elsner QUALIFIED
Chavez BriddickRussiaAnna Fali QUALIFIED
Alejandro PerinCanadaStephen Shaw NEW
Frozen Columns
Name
Darci Poquette
Smith Glick
Emily Whobrey
Juan Wieser
Octavia Malet
Maria Marrier
Claire Tollner
Chavez Briddick
Salvatore Stockham
Adams Morasca
Silvio Slusarski
Nicolas Iturbide
Salvatore Stockham
Francesco Shinko
Claire Tollner
Cody Saylors
Leja Caldarera
Nicolas Iturbide
Greenwood Bolognia
Aika Inouye
Jones Vocelka
Nicolas Iturbide
Mayumi Kolmetz
Tony Foller
Isabel Bowley
Sinclair Waycott
Mujtaba Nicka
Costa Dilliard
Mayumi Kolmetz
Wickens Nestle
Morrow Ruta
Ashley Doe
Wickens Nestle
Aika Inouye
Kaitlin Ostrosky
Claire Tollner
Aika Inouye
Chavez Briddick
Morrow Ruta
Ivar Paprocki
Ricardo Gaucho
Misaki Royster
Deepesh Chui
Francesco Shinko
Antonio Caudy
Ivar Paprocki
Aruna Figeroa
Emily Whobrey
Izzy Garufi
Kaitlin Ostrosky
IdCountryDate
1000France2026-05-26
1001Russia2026-05-21
1002Germany2026-06-15
1003Argentina2026-06-01
1004Japan2026-05-31
1005Spain2026-06-08
1006Argentina2026-05-22
1007Japan2026-06-10
1008Italy2026-05-24
1009Japan2026-05-27
1010Germany2026-06-05
1011France2026-05-21
1012Brazil2026-06-07
1013Russia2026-06-01
1014Japan2026-06-07
1015Germany2026-06-05
1016France2026-06-09
1017France2026-05-24
1018Australia2026-06-05
1019India2026-05-31
1020Australia2026-06-09
1021Argentina2026-06-17
1022France2026-05-22
1023Brazil2026-06-09
1024United Kingdom2026-05-29
1025India2026-05-21
1026Germany2026-05-26
1027United Kingdom2026-06-05
1028Italy2026-05-25
1029United Kingdom2026-05-29
1030Australia2026-05-22
1031Russia2026-05-25
1032Canada2026-05-23
1033United Kingdom2026-05-26
1034United Kingdom2026-06-18
1035Japan2026-06-19
1036France2026-06-02
1037Australia2026-06-15
1038Argentina2026-06-12
1039United Kingdom2026-06-11
1040United Kingdom2026-06-13
1041France2026-05-24
1042France2026-06-09
1043Spain2026-05-30
1044United Kingdom2026-06-06
1045Australia2026-06-10
1046Canada2026-05-22
1047Australia2026-06-14
1048Italy2026-06-18
1049United Kingdom2026-06-14

On-Demand Data

NameIdCountryDate
Jennifer Amigon1000Australia2026-05-25
Emily Whobrey1001Russia2026-06-17
Tony Foller1002Canada2026-06-13
Costa Dilliard1003India2026-06-06
Ivar Paprocki1004Italy2026-05-31
Stacey Maclead1005Argentina2026-06-08
Emily Whobrey1006United Kingdom2026-06-02
Morrow Ruta1007Brazil2026-06-08
Mayumi Kolmetz1008Germany2026-06-06
Rodrigues Campain1009United Kingdom2026-05-29
Rodrigues Campain1010Australia2026-05-26
Clifford Rim1011Australia2026-06-16
Nicolas Iturbide1012Spain2026-06-18
Isabel Bowley1013Australia2026-06-16
Clifford Rim1014Spain2026-06-19
Adams Morasca1015United Kingdom2026-06-07
Maisha Rulapaugh1016Australia2026-06-12
Ashley Doe1017United Kingdom2026-06-19
Emily Whobrey1018Argentina2026-06-10
Claire Tollner1019Canada2026-06-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Nicolas IturbideItalyXuxue Feng RENEWAL
Kaitlin OstroskyItalyAmy Elsner NEGOTIATION
Alejandro PerinJapanElwin Sharvill NEGOTIATION
Smith GlickUnited KingdomStephen Shaw PROPOSAL
Juan WieserJapanAnna Fali UNQUALIFIED
Julie StensethArgentinaAmy Elsner UNQUALIFIED
Morrow RutaGermanyIoni Bowcher NEW
Ricardo GauchoSpainXuxue Feng QUALIFIED
Clifford RimBrazilOnyama Limba NEW
Munro FerenczUnited KingdomOnyama Limba NEW
Tony FollerUnited KingdomStephen Shaw UNQUALIFIED
Ricardo GauchoUnited KingdomAmy Elsner UNQUALIFIED
Francesco ShinkoIndiaAmy Elsner RENEWAL
Emily WhobreyIndiaAnna Fali QUALIFIED
Alejandro PerinCanadaOnyama Limba QUALIFIED
Mayumi KolmetzBrazilIoni Bowcher NEW
Clifford RimSpainStephen Shaw PROPOSAL
Aruna FigeroaFranceXuxue Feng QUALIFIED
Octavia MaletCanadaBernardo Dominic NEW
Smith GlickItalyBernardo Dominic QUALIFIED
Rodrigues CampainCanadaAmy Elsner QUALIFIED
James ButtRussiaIvan Magalhaes NEGOTIATION
Arvin AlbaresFranceIvan Magalhaes PROPOSAL
Munro FerenczGermanyBernardo Dominic RENEWAL
Juan WieserItalyIvan Magalhaes RENEWAL
Juan WieserFranceIoni Bowcher RENEWAL
Isabel BowleyRussiaBernardo Dominic NEGOTIATION
Ricardo GauchoCanadaXuxue Feng RENEWAL
Leja CaldareraRussiaIvan Magalhaes QUALIFIED
Jones VocelkaBrazilOnyama Limba PROPOSAL
Leon OldroydCanadaAnna Fali NEGOTIATION
Izzy GarufiIndiaBernardo Dominic PROPOSAL
Salvatore StockhamSpainElwin Sharvill PROPOSAL
Darci PoquetteJapanIvan Magalhaes UNQUALIFIED
Chavez BriddickBrazilBernardo Dominic UNQUALIFIED
Isabel BowleyCanadaIoni Bowcher NEW
Smith GlickBrazilOnyama Limba QUALIFIED
Aditya KuskoBrazilIoni Bowcher PROPOSAL
Rodrigues CampainCanadaIvan Magalhaes QUALIFIED
Emily WhobreyIndiaIvan Magalhaes 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>