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
Cody SaylorsUnited KingdomStephen Shaw RENEWAL
Maisha RulapaughBrazilIvan Magalhaes PROPOSAL
Aditya KuskoItalyAnna Fali NEGOTIATION
Juan WieserItalyIvan Magalhaes UNQUALIFIED
Jeanfrancois VenereFranceIoni Bowcher NEW
Izzy GarufiItalyStephen Shaw UNQUALIFIED
David DarakjySpainAnna Fali PROPOSAL
Aditya KuskoFranceAsiya Javayant PROPOSAL
Faith GillianItalyElwin Sharvill UNQUALIFIED
Jones VocelkaAustraliaIvan Magalhaes PROPOSAL
Arvin AlbaresBrazilBernardo Dominic QUALIFIED
Mayumi KolmetzIndiaElwin Sharvill RENEWAL
Isabel BowleyCanadaBernardo Dominic NEW
Kadeem FlosiUnited KingdomElwin Sharvill UNQUALIFIED
Wickens NestleSpainIvan Magalhaes UNQUALIFIED
Juan WieserAustraliaAnna Fali QUALIFIED
Izzy GarufiIndiaStephen Shaw RENEWAL
Ivar PaprockiBrazilBernardo Dominic RENEWAL
Cody SaylorsAustraliaElwin Sharvill UNQUALIFIED
Jennifer AmigonBrazilIvan Magalhaes QUALIFIED
Aditya KuskoItalyStephen Shaw QUALIFIED
Jennifer AmigonArgentinaXuxue Feng RENEWAL
Salvatore StockhamFranceOnyama Limba RENEWAL
Leon OldroydArgentinaIoni Bowcher QUALIFIED
Murillo MaletSpainAnna Fali NEGOTIATION
Smith GlickCanadaAnna Fali QUALIFIED
Francesco ShinkoJapanAnna Fali QUALIFIED
Ricardo GauchoItalyIvan Magalhaes UNQUALIFIED
Maria MarrierBrazilIvan Magalhaes NEGOTIATION
Maisha RulapaughUnited KingdomIvan Magalhaes PROPOSAL
Wickens NestleCanadaIvan Magalhaes UNQUALIFIED
James ButtGermanyIoni Bowcher RENEWAL
Kadeem FlosiGermanyIoni Bowcher NEGOTIATION
Munro FerenczItalyXuxue Feng PROPOSAL
Ricardo GauchoIndiaIoni Bowcher NEGOTIATION
Silvio SlusarskiCanadaAmy Elsner NEGOTIATION
Jennifer AmigonFranceAmy Elsner NEGOTIATION
Greenwood BologniaJapanAmy Elsner QUALIFIED
Tony FollerItalyAmy Elsner RENEWAL
Tony FollerRussiaXuxue Feng QUALIFIED
Aika InouyeIndiaAsiya Javayant NEGOTIATION
Kaitlin OstroskyFranceOnyama Limba PROPOSAL
Rodrigues CampainIndiaIoni Bowcher PROPOSAL
Salvatore StockhamCanadaXuxue Feng NEGOTIATION
Kaitlin OstroskySpainAmy Elsner UNQUALIFIED
Adams MorascaRussiaStephen Shaw UNQUALIFIED
Cody SaylorsRussiaAnna Fali UNQUALIFIED
Leja CaldareraGermanyElwin Sharvill RENEWAL
Morrow RutaItalyIvan Magalhaes PROPOSAL
Jennifer AmigonGermanyStephen Shaw QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Jeanfrancois VenereUnited KingdomElwin Sharvill UNQUALIFIED
Mujtaba NickaGermanyBernardo Dominic NEW
Leon OldroydGermanyAnna Fali PROPOSAL
Ivar PaprockiBrazilAsiya Javayant PROPOSAL
Johnson SergiFranceAmy Elsner NEGOTIATION
Aditya KuskoBrazilElwin Sharvill UNQUALIFIED
Deepesh ChuiJapanElwin Sharvill NEW
Cody SaylorsIndiaIvan Magalhaes QUALIFIED
Aditya KuskoSpainXuxue Feng PROPOSAL
Maisha RulapaughBrazilAnna Fali NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Murillo MaletBrazil2026-05-08Feiner Bros QUALIFIED47Onyama Limba
1001Antonio CaudyUnited Kingdom2026-05-27Rangoni Of Florence NEGOTIATION49Stephen Shaw
1002Maisha RulapaughFrance2026-05-14Dorl, James J Esq QUALIFIED20Onyama Limba
1003Stacey MacleadUnited Kingdom2026-05-19Chemel, James L Cpa RENEWAL54Xuxue Feng
1004Alejandro PerinJapan2026-05-14Dorl, James J Esq PROPOSAL27Ivan Magalhaes
1005Stacey MacleadRussia2026-05-10Commercial Press UNQUALIFIED41Elwin Sharvill
1006Darci PoquetteUnited Kingdom2026-05-11Buckley Miller Wright NEGOTIATION8Asiya Javayant
1007Leja CaldareraItaly2026-05-03Chanay, Jeffrey A Esq RENEWAL34Stephen Shaw
1008Leja CaldareraArgentina2026-05-12Buckley Miller Wright RENEWAL88Stephen Shaw
1009Wickens NestleUnited Kingdom2026-05-19Dorl, James J Esq NEGOTIATION54Anna Fali
1010Julie StensethArgentina2026-05-12Chemel, James L Cpa RENEWAL1Elwin Sharvill
1011Deepesh ChuiCanada2026-05-24Commercial Press RENEWAL8Bernardo Dominic
1012Jones VocelkaItaly2026-05-18Benton, John B Jr NEGOTIATION87Ivan Magalhaes
1013Aruna FigeroaSpain2026-05-14Morlong Associates QUALIFIED95Asiya Javayant
1014Leja CaldareraFrance2026-05-12Buckley Miller Wright QUALIFIED75Stephen Shaw
1015Aika InouyeJapan2026-05-14Commercial Press QUALIFIED80Stephen Shaw
1016Aditya KuskoBrazil2026-05-14Feiner Bros NEGOTIATION64Ivan Magalhaes
1017Isabel BowleyFrance2026-05-23Chanay, Jeffrey A Esq NEGOTIATION61Anna Fali
1018Deepesh ChuiGermany2026-05-18Rousseaux, Michael Esq PROPOSAL8Stephen Shaw
1019Silvio SlusarskiAustralia2026-05-09Commercial Press UNQUALIFIED77Ioni Bowcher
1020Izzy GarufiAustralia2026-05-08Feiner Bros UNQUALIFIED37Ioni Bowcher
1021Chavez BriddickCanada2026-05-06Chemel, James L Cpa NEW14Bernardo Dominic
1022Johnson SergiFrance2026-05-15Printing Dimensions QUALIFIED1Stephen Shaw
1023Ricardo GauchoIndia2026-05-11Printing Dimensions NEW12Bernardo Dominic
1024Emily WhobreyRussia2026-05-08Chanay, Jeffrey A Esq NEW25Stephen Shaw
1025Jones VocelkaRussia2026-05-04Feiner Bros NEW6Xuxue Feng
1026Kaitlin OstroskyJapan2026-05-16Rousseaux, Michael Esq NEW46Anna Fali
1027Ricardo GauchoArgentina2026-05-13Dorl, James J Esq PROPOSAL10Amy Elsner
1028James ButtBrazil2026-05-10Chapman, Ross E Esq NEW29Elwin Sharvill
1029Costa DilliardSpain2026-05-05Feiner Bros NEGOTIATION34Elwin Sharvill
1030Morrow RutaJapan2026-05-29Commercial Press QUALIFIED98Stephen Shaw
1031Izzy GarufiIndia2026-05-29Benton, John B Jr QUALIFIED6Elwin Sharvill
1032Leja CaldareraRussia2026-05-08Rousseaux, Michael Esq NEW8Ivan Magalhaes
1033Kadeem FlosiIndia2026-05-08Chemel, James L Cpa QUALIFIED20Amy Elsner
1034Izzy GarufiJapan2026-05-27Printing Dimensions PROPOSAL64Asiya Javayant
1035Rodrigues CampainAustralia2026-05-13Printing Dimensions NEW73Bernardo Dominic
1036Arvin AlbaresIndia2026-05-01Benton, John B Jr RENEWAL13Ivan Magalhaes
1037Kaitlin OstroskyCanada2026-05-21Chapman, Ross E Esq UNQUALIFIED81Ioni Bowcher
1038Smith GlickGermany2026-05-12Chanay, Jeffrey A Esq NEGOTIATION72Ioni Bowcher
1039James ButtArgentina2026-05-07Chapman, Ross E Esq NEGOTIATION73Elwin Sharvill
1040Leja CaldareraIndia2026-05-02Buckley Miller Wright NEGOTIATION51Stephen Shaw
1041Jones VocelkaItaly2026-05-30Rangoni Of Florence NEW75Ivan Magalhaes
1042Jones VocelkaGermany2026-05-02Chapman, Ross E Esq UNQUALIFIED72Ivan Magalhaes
1043Maisha RulapaughFrance2026-05-28Feiner Bros NEW50Xuxue Feng
1044Greenwood BologniaGermany2026-05-28King, Christopher A Esq UNQUALIFIED16Stephen Shaw
1045Rodrigues CampainJapan2026-05-29Truhlar And Truhlar Attys QUALIFIED62Ivan Magalhaes
1046Munro FerenczAustralia2026-05-09Feltz Printing Service RENEWAL56Onyama Limba
1047Deepesh ChuiIndia2026-05-15Dorl, James J Esq NEGOTIATION79Bernardo Dominic
1048Ricardo GauchoJapan2026-05-22Chapman, Ross E Esq PROPOSAL9Amy Elsner
1049Leon OldroydAustralia2026-05-14Commercial Press UNQUALIFIED51Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Alejandro PerinGermanyBernardo Dominic PROPOSAL
Darci PoquetteBrazilXuxue Feng UNQUALIFIED
Leon OldroydCanadaAmy Elsner NEW
Kaitlin OstroskyUnited KingdomAnna Fali PROPOSAL
Antonio CaudyAustraliaIoni Bowcher PROPOSAL
Kaitlin OstroskyUnited KingdomAsiya Javayant NEW
Johnson SergiFranceStephen Shaw RENEWAL
Ashley DoeJapanXuxue Feng UNQUALIFIED
Misaki RoysterCanadaAnna Fali NEW
Greenwood BologniaCanadaIoni Bowcher PROPOSAL
Deepesh ChuiGermanyOnyama Limba NEW
Emily WhobreyBrazilAmy Elsner RENEWAL
Greenwood BologniaGermanyStephen Shaw NEW
Ricardo GauchoFranceIvan Magalhaes PROPOSAL
Octavia MaletGermanyElwin Sharvill NEW
Mujtaba NickaCanadaIoni Bowcher UNQUALIFIED
Ricardo GauchoArgentinaStephen Shaw PROPOSAL
Jennifer AmigonUnited KingdomAsiya Javayant NEW
Munro FerenczIndiaXuxue Feng RENEWAL
Sinclair WaycottAustraliaElwin Sharvill NEGOTIATION
Julie StensethBrazilOnyama Limba NEGOTIATION
Rodrigues CampainCanadaIoni Bowcher PROPOSAL
Silvio SlusarskiCanadaIoni Bowcher PROPOSAL
Francesco ShinkoFranceBernardo Dominic UNQUALIFIED
Morrow RutaBrazilXuxue Feng NEW
Ricardo GauchoBrazilStephen Shaw QUALIFIED
Kadeem FlosiArgentinaIoni Bowcher QUALIFIED
Munro FerenczCanadaAmy Elsner QUALIFIED
Leja CaldareraItalyStephen Shaw UNQUALIFIED
Emily WhobreyArgentinaAmy Elsner NEGOTIATION
Salvatore StockhamSpainBernardo Dominic RENEWAL
Jennifer AmigonItalyStephen Shaw PROPOSAL
Antonio CaudyArgentinaAmy Elsner NEGOTIATION
Munro FerenczArgentinaBernardo Dominic QUALIFIED
Arvin AlbaresItalyXuxue Feng NEGOTIATION
Octavia MaletFranceIvan Magalhaes RENEWAL
Salvatore StockhamBrazilAmy Elsner NEGOTIATION
Munro FerenczJapanIvan Magalhaes PROPOSAL
Alejandro PerinRussiaElwin Sharvill QUALIFIED
Murillo MaletAustraliaIoni Bowcher NEGOTIATION
Arvin AlbaresBrazilElwin Sharvill RENEWAL
Nicolas IturbideIndiaXuxue Feng UNQUALIFIED
Wickens NestleFranceOnyama Limba NEW
Mujtaba NickaUnited KingdomIvan Magalhaes NEW
Greenwood BologniaArgentinaStephen Shaw UNQUALIFIED
Jefferson SchemmerCanadaIvan Magalhaes UNQUALIFIED
Misaki RoysterGermanyOnyama Limba RENEWAL
Leja CaldareraJapanOnyama Limba NEW
Faith GillianGermanyIvan Magalhaes QUALIFIED
Greenwood BologniaCanadaOnyama Limba NEGOTIATION
Frozen Columns
Name
Johnson Sergi
Smith Glick
Murillo Malet
Leja Caldarera
Jennifer Amigon
Juan Wieser
Kadeem Flosi
Emily Whobrey
Leja Caldarera
Darci Poquette
Costa Dilliard
Chavez Briddick
Costa Dilliard
Arvin Albares
Leja Caldarera
Nicolas Iturbide
Deepesh Chui
Aika Inouye
Juan Wieser
Antonio Caudy
Aika Inouye
Antonio Caudy
Emily Whobrey
Misaki Royster
Chavez Briddick
Claire Tollner
Munro Ferencz
Cody Saylors
Faith Gillian
Greenwood Bolognia
Jeanfrancois Venere
Faith Gillian
Maria Marrier
Francesco Shinko
Arvin Albares
Jeanfrancois Venere
Smith Glick
Jones Vocelka
Claire Tollner
Maria Marrier
David Darakjy
Arvin Albares
Jennifer Amigon
Sinclair Waycott
Emily Whobrey
Jeanfrancois Venere
Mayumi Kolmetz
Aruna Figeroa
Darci Poquette
James Butt
IdCountryDate
1000Japan2026-05-10
1001Canada2026-05-13
1002Italy2026-05-20
1003Australia2026-05-15
1004Argentina2026-05-15
1005Brazil2026-05-29
1006Italy2026-05-29
1007Argentina2026-05-27
1008Russia2026-05-23
1009Japan2026-05-18
1010Brazil2026-05-19
1011Germany2026-05-05
1012Argentina2026-05-08
1013India2026-05-05
1014Japan2026-05-19
1015Italy2026-05-03
1016Canada2026-05-13
1017Spain2026-05-30
1018Argentina2026-05-25
1019United Kingdom2026-05-08
1020France2026-05-26
1021Brazil2026-05-17
1022Spain2026-05-12
1023Germany2026-05-13
1024Spain2026-05-30
1025Canada2026-05-15
1026Canada2026-05-05
1027Japan2026-05-18
1028Argentina2026-05-16
1029Germany2026-05-28
1030Brazil2026-05-18
1031Japan2026-05-23
1032India2026-05-29
1033Russia2026-05-25
1034France2026-05-30
1035Germany2026-05-03
1036Japan2026-05-04
1037India2026-05-10
1038Brazil2026-05-13
1039Argentina2026-05-14
1040Spain2026-05-23
1041Germany2026-05-27
1042Canada2026-05-01
1043Japan2026-05-22
1044India2026-05-19
1045Germany2026-05-07
1046Japan2026-05-03
1047Spain2026-05-06
1048Italy2026-05-18
1049United Kingdom2026-05-13

On-Demand Data

NameIdCountryDate
Maria Marrier1000France2026-05-26
Claire Tollner1001Spain2026-05-25
Isabel Bowley1002India2026-05-03
Emily Whobrey1003Brazil2026-05-13
Ashley Doe1004Australia2026-05-19
Ricardo Gaucho1005Russia2026-05-27
Faith Gillian1006United Kingdom2026-05-01
Aika Inouye1007Australia2026-05-21
Ashley Doe1008Australia2026-05-21
Costa Dilliard1009Germany2026-05-01
Rodrigues Campain1010Japan2026-05-28
Ivar Paprocki1011France2026-05-20
Maria Marrier1012Russia2026-05-06
Francesco Shinko1013Brazil2026-05-01
Ashley Doe1014Australia2026-05-16
Aruna Figeroa1015United Kingdom2026-05-17
Ashley Doe1016Australia2026-05-18
Munro Ferencz1017Germany2026-05-14
Juan Wieser1018Argentina2026-05-02
Chavez Briddick1019Australia2026-05-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Tony FollerSpainBernardo Dominic PROPOSAL
Juan WieserIndiaAmy Elsner QUALIFIED
Claire TollnerCanadaStephen Shaw RENEWAL
Ivar PaprockiFranceXuxue Feng QUALIFIED
Jeanfrancois VenereGermanyIvan Magalhaes PROPOSAL
Maria MarrierRussiaXuxue Feng NEW
Misaki RoysterFranceAsiya Javayant QUALIFIED
Jefferson SchemmerAustraliaIoni Bowcher QUALIFIED
Aika InouyeAustraliaElwin Sharvill PROPOSAL
Claire TollnerItalyAmy Elsner QUALIFIED
Jones VocelkaArgentinaAnna Fali PROPOSAL
Jefferson SchemmerCanadaBernardo Dominic QUALIFIED
Antonio CaudySpainOnyama Limba NEW
Aruna FigeroaGermanyAnna Fali NEGOTIATION
David DarakjyArgentinaXuxue Feng QUALIFIED
Deepesh ChuiCanadaIvan Magalhaes RENEWAL
Claire TollnerAustraliaAnna Fali NEGOTIATION
Ivar PaprockiAustraliaAmy Elsner RENEWAL
Cody SaylorsItalyAsiya Javayant UNQUALIFIED
Alejandro PerinGermanyStephen Shaw RENEWAL
Octavia MaletRussiaElwin Sharvill UNQUALIFIED
Tony FollerAustraliaBernardo Dominic RENEWAL
Julie StensethIndiaAmy Elsner UNQUALIFIED
Antonio CaudyItalyOnyama Limba NEW
Arvin AlbaresBrazilAnna Fali UNQUALIFIED
Alejandro PerinJapanAmy Elsner RENEWAL
James ButtUnited KingdomAsiya Javayant UNQUALIFIED
Ricardo GauchoCanadaOnyama Limba NEGOTIATION
Julie StensethAustraliaIoni Bowcher NEW
Maisha RulapaughSpainIvan Magalhaes UNQUALIFIED
Alejandro PerinAustraliaAmy Elsner PROPOSAL
Jeanfrancois VenereAustraliaElwin Sharvill NEW
Munro FerenczFranceIvan Magalhaes UNQUALIFIED
Leja CaldareraCanadaIoni Bowcher NEGOTIATION
Chavez BriddickBrazilBernardo Dominic PROPOSAL
Ivar PaprockiArgentinaAsiya Javayant NEW
Mujtaba NickaArgentinaIoni Bowcher QUALIFIED
Jones VocelkaBrazilXuxue Feng QUALIFIED
Faith GillianIndiaAnna Fali QUALIFIED
Chavez BriddickRussiaAsiya Javayant NEGOTIATION

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