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 VocelkaBrazilOnyama Limba UNQUALIFIED
Ricardo GauchoAustraliaAmy Elsner QUALIFIED
Greenwood BologniaGermanyIoni Bowcher NEW
Jennifer AmigonAustraliaAnna Fali UNQUALIFIED
Munro FerenczFranceIoni Bowcher RENEWAL
Mayumi KolmetzAustraliaElwin Sharvill NEGOTIATION
Ivar PaprockiAustraliaAsiya Javayant RENEWAL
Johnson SergiIndiaOnyama Limba QUALIFIED
Julie StensethRussiaAmy Elsner RENEWAL
Arvin AlbaresArgentinaIvan Magalhaes UNQUALIFIED
Aika InouyeSpainStephen Shaw UNQUALIFIED
Darci PoquetteGermanyStephen Shaw PROPOSAL
Adams MorascaItalyBernardo Dominic NEGOTIATION
Greenwood BologniaAustraliaIoni Bowcher NEW
Jefferson SchemmerBrazilBernardo Dominic RENEWAL
Emily WhobreyJapanAmy Elsner RENEWAL
Jefferson SchemmerSpainAsiya Javayant NEGOTIATION
Stacey MacleadAustraliaIoni Bowcher PROPOSAL
Julie StensethArgentinaBernardo Dominic PROPOSAL
Maisha RulapaughItalyXuxue Feng RENEWAL
Silvio SlusarskiIndiaBernardo Dominic RENEWAL
Francesco ShinkoArgentinaStephen Shaw RENEWAL
Adams MorascaArgentinaAmy Elsner QUALIFIED
Cody SaylorsItalyBernardo Dominic RENEWAL
Aditya KuskoGermanyStephen Shaw NEGOTIATION
Jefferson SchemmerSpainAnna Fali PROPOSAL
David DarakjyGermanyElwin Sharvill NEGOTIATION
Tony FollerIndiaElwin Sharvill RENEWAL
Murillo MaletArgentinaAnna Fali QUALIFIED
David DarakjyCanadaAnna Fali RENEWAL
Izzy GarufiCanadaAsiya Javayant NEGOTIATION
Wickens NestleIndiaBernardo Dominic RENEWAL
Jefferson SchemmerBrazilIoni Bowcher NEW
Julie StensethGermanyOnyama Limba QUALIFIED
Aika InouyeGermanyAsiya Javayant UNQUALIFIED
Julie StensethIndiaAsiya Javayant NEW
Ashley DoeCanadaIvan Magalhaes NEW
Deepesh ChuiGermanyIoni Bowcher NEW
Morrow RutaArgentinaStephen Shaw UNQUALIFIED
Juan WieserRussiaAsiya Javayant PROPOSAL
Ricardo GauchoFranceIoni Bowcher UNQUALIFIED
Julie StensethRussiaIvan Magalhaes NEGOTIATION
Jefferson SchemmerRussiaOnyama Limba PROPOSAL
Adams MorascaIndiaAnna Fali NEGOTIATION
James ButtJapanBernardo Dominic UNQUALIFIED
Nicolas IturbideUnited KingdomStephen Shaw QUALIFIED
Morrow RutaGermanyBernardo Dominic RENEWAL
Ivar PaprockiJapanElwin Sharvill RENEWAL
Jeanfrancois VenereJapanAnna Fali QUALIFIED
Claire TollnerIndiaAmy Elsner NEW
Horizontal
NameCountryRepresentativeStatus
Mujtaba NickaSpainAnna Fali UNQUALIFIED
Murillo MaletRussiaIvan Magalhaes PROPOSAL
Cody SaylorsItalyOnyama Limba QUALIFIED
Nicolas IturbideUnited KingdomAnna Fali PROPOSAL
Ivar PaprockiBrazilBernardo Dominic QUALIFIED
Sinclair WaycottSpainElwin Sharvill RENEWAL
Stacey MacleadRussiaAnna Fali QUALIFIED
Leja CaldareraRussiaOnyama Limba NEGOTIATION
Salvatore StockhamBrazilElwin Sharvill RENEWAL
Izzy GarufiFranceStephen Shaw NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Claire TollnerJapan2026-04-06Benton, John B Jr UNQUALIFIED96Ioni Bowcher
1001Leja CaldareraItaly2026-03-26Truhlar And Truhlar Attys PROPOSAL18Stephen Shaw
1002Antonio CaudyIndia2026-04-20Feiner Bros QUALIFIED32Anna Fali
1003Munro FerenczSpain2026-04-09Morlong Associates UNQUALIFIED60Ivan Magalhaes
1004Deepesh ChuiUnited Kingdom2026-04-03Rousseaux, Michael Esq NEW7Amy Elsner
1005Sinclair WaycottGermany2026-04-08Truhlar And Truhlar Attys NEW58Stephen Shaw
1006Aika InouyeArgentina2026-04-07Dorl, James J Esq NEGOTIATION33Amy Elsner
1007Deepesh ChuiBrazil2026-04-05Chanay, Jeffrey A Esq PROPOSAL63Xuxue Feng
1008David DarakjyArgentina2026-04-18Buckley Miller Wright PROPOSAL39Anna Fali
1009Faith GillianBrazil2026-04-01King, Christopher A Esq NEGOTIATION15Elwin Sharvill
1010Silvio SlusarskiBrazil2026-04-22Truhlar And Truhlar Attys QUALIFIED73Asiya Javayant
1011Aika InouyeGermany2026-04-04Chemel, James L Cpa QUALIFIED86Onyama Limba
1012Cody SaylorsCanada2026-03-26Benton, John B Jr RENEWAL48Xuxue Feng
1013Jeanfrancois VenereArgentina2026-04-08Benton, John B Jr NEW58Ioni Bowcher
1014Arvin AlbaresRussia2026-03-29Feiner Bros NEGOTIATION23Anna Fali
1015Ivar PaprockiRussia2026-03-31Dorl, James J Esq PROPOSAL27Asiya Javayant
1016Arvin AlbaresItaly2026-04-04Chemel, James L Cpa UNQUALIFIED48Anna Fali
1017Ricardo GauchoJapan2026-04-18Printing Dimensions NEW94Ivan Magalhaes
1018Emily WhobreyBrazil2026-04-10Printing Dimensions PROPOSAL61Ivan Magalhaes
1019Ricardo GauchoRussia2026-04-15Rangoni Of Florence QUALIFIED75Onyama Limba
1020Francesco ShinkoCanada2026-04-10Benton, John B Jr UNQUALIFIED93Xuxue Feng
1021Jones VocelkaGermany2026-04-23Feltz Printing Service PROPOSAL44Bernardo Dominic
1022Arvin AlbaresArgentina2026-04-14Chemel, James L Cpa RENEWAL7Anna Fali
1023Ivar PaprockiFrance2026-04-11Chapman, Ross E Esq RENEWAL71Bernardo Dominic
1024Faith GillianItaly2026-03-26Morlong Associates UNQUALIFIED42Anna Fali
1025Leja CaldareraIndia2026-04-08Rousseaux, Michael Esq QUALIFIED99Amy Elsner
1026Stacey MacleadFrance2026-04-07Chapman, Ross E Esq RENEWAL75Amy Elsner
1027Maria MarrierCanada2026-04-04Chanay, Jeffrey A Esq NEW77Elwin Sharvill
1028Munro FerenczItaly2026-04-16King, Christopher A Esq UNQUALIFIED14Stephen Shaw
1029Costa DilliardJapan2026-03-28Printing Dimensions RENEWAL93Amy Elsner
1030Kadeem FlosiCanada2026-04-10Benton, John B Jr RENEWAL68Elwin Sharvill
1031Ivar PaprockiBrazil2026-04-21Dorl, James J Esq NEGOTIATION38Bernardo Dominic
1032Johnson SergiIndia2026-03-25Printing Dimensions QUALIFIED42Amy Elsner
1033David DarakjyCanada2026-03-29Dorl, James J Esq QUALIFIED18Ivan Magalhaes
1034Alejandro PerinGermany2026-03-27Rangoni Of Florence PROPOSAL1Elwin Sharvill
1035Emily WhobreyRussia2026-04-22Dorl, James J Esq NEW86Bernardo Dominic
1036Claire TollnerIndia2026-04-05Chapman, Ross E Esq NEGOTIATION12Onyama Limba
1037Deepesh ChuiSpain2026-04-13Commercial Press UNQUALIFIED11Ivan Magalhaes
1038Clifford RimRussia2026-03-27Chapman, Ross E Esq UNQUALIFIED0Bernardo Dominic
1039Jeanfrancois VenereItaly2026-04-21Feiner Bros PROPOSAL2Asiya Javayant
1040Ashley DoeIndia2026-04-11Rousseaux, Michael Esq UNQUALIFIED94Xuxue Feng
1041Julie StensethItaly2026-04-13Rousseaux, Michael Esq NEW69Ioni Bowcher
1042Munro FerenczJapan2026-04-14Morlong Associates NEW28Asiya Javayant
1043Isabel BowleyCanada2026-04-12King, Christopher A Esq PROPOSAL50Ioni Bowcher
1044Ashley DoeGermany2026-04-22Buckley Miller Wright QUALIFIED92Anna Fali
1045Leja CaldareraBrazil2026-04-12King, Christopher A Esq UNQUALIFIED79Amy Elsner
1046Costa DilliardUnited Kingdom2026-04-09Rangoni Of Florence UNQUALIFIED87Ioni Bowcher
1047Isabel BowleyUnited Kingdom2026-03-31Truhlar And Truhlar Attys UNQUALIFIED23Ivan Magalhaes
1048Faith GillianUnited Kingdom2026-04-09Feltz Printing Service RENEWAL74Anna Fali
1049Francesco ShinkoCanada2026-04-16Feiner Bros UNQUALIFIED22Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Julie StensethSpainElwin Sharvill RENEWAL
Alejandro PerinRussiaIvan Magalhaes UNQUALIFIED
Emily WhobreyAustraliaOnyama Limba RENEWAL
Tony FollerSpainStephen Shaw UNQUALIFIED
Nicolas IturbideGermanyStephen Shaw NEW
Wickens NestleBrazilOnyama Limba NEGOTIATION
Costa DilliardUnited KingdomXuxue Feng RENEWAL
Nicolas IturbideCanadaOnyama Limba QUALIFIED
Darci PoquetteArgentinaOnyama Limba UNQUALIFIED
Francesco ShinkoFranceElwin Sharvill PROPOSAL
Leon OldroydRussiaIvan Magalhaes NEW
Morrow RutaIndiaIvan Magalhaes NEW
Deepesh ChuiArgentinaIoni Bowcher PROPOSAL
Kadeem FlosiRussiaAnna Fali UNQUALIFIED
Stacey MacleadRussiaAnna Fali UNQUALIFIED
Salvatore StockhamRussiaXuxue Feng NEW
Leja CaldareraGermanyElwin Sharvill QUALIFIED
Ivar PaprockiIndiaAmy Elsner PROPOSAL
Misaki RoysterFranceXuxue Feng RENEWAL
James ButtUnited KingdomAsiya Javayant UNQUALIFIED
Smith GlickCanadaStephen Shaw RENEWAL
Leja CaldareraGermanyStephen Shaw QUALIFIED
Alejandro PerinJapanBernardo Dominic UNQUALIFIED
Ashley DoeGermanyBernardo Dominic NEGOTIATION
Jeanfrancois VenereBrazilIvan Magalhaes NEGOTIATION
Mujtaba NickaArgentinaIoni Bowcher RENEWAL
Maria MarrierSpainStephen Shaw PROPOSAL
Jeanfrancois VenereFranceOnyama Limba NEGOTIATION
Julie StensethUnited KingdomIvan Magalhaes RENEWAL
Faith GillianSpainIoni Bowcher UNQUALIFIED
Emily WhobreyRussiaIvan Magalhaes QUALIFIED
Kaitlin OstroskyFranceAnna Fali QUALIFIED
Aruna FigeroaItalyStephen Shaw RENEWAL
Claire TollnerRussiaElwin Sharvill NEW
Rodrigues CampainBrazilIvan Magalhaes QUALIFIED
Jennifer AmigonBrazilElwin Sharvill UNQUALIFIED
Kadeem FlosiSpainIvan Magalhaes RENEWAL
Costa DilliardArgentinaAmy Elsner UNQUALIFIED
Munro FerenczRussiaAmy Elsner RENEWAL
Cody SaylorsRussiaBernardo Dominic UNQUALIFIED
Alejandro PerinIndiaBernardo Dominic PROPOSAL
Stacey MacleadItalyIvan Magalhaes RENEWAL
Greenwood BologniaJapanAsiya Javayant QUALIFIED
Munro FerenczRussiaStephen Shaw NEW
Izzy GarufiBrazilAmy Elsner PROPOSAL
Jeanfrancois VenereArgentinaAsiya Javayant NEGOTIATION
Francesco ShinkoCanadaAmy Elsner QUALIFIED
Aruna FigeroaUnited KingdomAsiya Javayant UNQUALIFIED
Nicolas IturbideArgentinaBernardo Dominic UNQUALIFIED
Alejandro PerinItalyIoni Bowcher RENEWAL
Frozen Columns
Name
Ricardo Gaucho
Emily Whobrey
Jefferson Schemmer
Isabel Bowley
Octavia Malet
Costa Dilliard
Faith Gillian
Ashley Doe
Emily Whobrey
Salvatore Stockham
Morrow Ruta
Arvin Albares
Jennifer Amigon
Silvio Slusarski
Costa Dilliard
Aika Inouye
Misaki Royster
Claire Tollner
Aruna Figeroa
Nicolas Iturbide
Sinclair Waycott
Arvin Albares
Darci Poquette
Octavia Malet
David Darakjy
Rodrigues Campain
Sinclair Waycott
Greenwood Bolognia
Aditya Kusko
Claire Tollner
Morrow Ruta
Francesco Shinko
Jones Vocelka
Murillo Malet
Isabel Bowley
Julie Stenseth
Ashley Doe
Juan Wieser
Faith Gillian
Darci Poquette
Nicolas Iturbide
Cody Saylors
Aditya Kusko
Deepesh Chui
Wickens Nestle
Sinclair Waycott
James Butt
Tony Foller
Morrow Ruta
Aditya Kusko
IdCountryDate
1000Brazil2026-03-31
1001Russia2026-04-07
1002India2026-04-18
1003Argentina2026-04-20
1004India2026-04-02
1005Italy2026-04-15
1006India2026-03-31
1007United Kingdom2026-04-22
1008Italy2026-04-23
1009Russia2026-04-13
1010Australia2026-04-23
1011Brazil2026-04-18
1012Japan2026-04-02
1013Italy2026-04-05
1014India2026-03-25
1015Italy2026-04-16
1016United Kingdom2026-04-10
1017Brazil2026-04-11
1018United Kingdom2026-04-12
1019Argentina2026-04-04
1020United Kingdom2026-03-30
1021Japan2026-04-20
1022Canada2026-04-23
1023Brazil2026-03-31
1024Spain2026-03-27
1025Canada2026-04-06
1026Germany2026-04-23
1027India2026-04-18
1028Russia2026-04-03
1029Russia2026-04-15
1030Canada2026-04-05
1031Canada2026-04-06
1032Spain2026-04-11
1033Australia2026-04-19
1034United Kingdom2026-04-21
1035India2026-04-12
1036Argentina2026-04-12
1037Germany2026-03-29
1038Spain2026-04-21
1039Spain2026-04-17
1040Japan2026-04-18
1041United Kingdom2026-04-17
1042Canada2026-04-18
1043Italy2026-04-07
1044Australia2026-03-30
1045United Kingdom2026-04-09
1046Spain2026-04-17
1047Argentina2026-03-26
1048Germany2026-04-05
1049Italy2026-04-01

On-Demand Data

NameIdCountryDate
Jones Vocelka1000Australia2026-03-28
Nicolas Iturbide1001Australia2026-04-18
Smith Glick1002Germany2026-03-29
Maisha Rulapaugh1003Japan2026-04-01
Isabel Bowley1004Russia2026-04-14
Arvin Albares1005United Kingdom2026-03-25
Chavez Briddick1006Brazil2026-04-23
Ivar Paprocki1007Australia2026-04-21
Costa Dilliard1008France2026-04-21
Leon Oldroyd1009Germany2026-04-14
Izzy Garufi1010Brazil2026-04-13
Jeanfrancois Venere1011France2026-04-16
Greenwood Bolognia1012United Kingdom2026-04-03
Kaitlin Ostrosky1013Russia2026-04-14
Alejandro Perin1014Italy2026-04-03
Arvin Albares1015Argentina2026-03-26
Aika Inouye1016India2026-04-12
Alejandro Perin1017Germany2026-04-14
Tony Foller1018Spain2026-04-05
Rodrigues Campain1019Canada2026-04-11
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kadeem FlosiArgentinaAsiya Javayant PROPOSAL
Stacey MacleadRussiaOnyama Limba PROPOSAL
Francesco ShinkoBrazilOnyama Limba UNQUALIFIED
Deepesh ChuiItalyBernardo Dominic NEW
Greenwood BologniaFranceBernardo Dominic PROPOSAL
Chavez BriddickRussiaOnyama Limba NEGOTIATION
James ButtBrazilBernardo Dominic UNQUALIFIED
Stacey MacleadAustraliaStephen Shaw NEGOTIATION
Kaitlin OstroskyGermanyIoni Bowcher UNQUALIFIED
Sinclair WaycottFranceOnyama Limba PROPOSAL
Aika InouyeItalyElwin Sharvill UNQUALIFIED
Isabel BowleyGermanyAsiya Javayant PROPOSAL
Arvin AlbaresIndiaXuxue Feng PROPOSAL
Aditya KuskoFranceStephen Shaw QUALIFIED
Emily WhobreyGermanyIoni Bowcher RENEWAL
Morrow RutaGermanyIoni Bowcher UNQUALIFIED
Ricardo GauchoSpainElwin Sharvill NEW
Aika InouyeBrazilAnna Fali UNQUALIFIED
Julie StensethCanadaElwin Sharvill QUALIFIED
Munro FerenczGermanyXuxue Feng RENEWAL
Adams MorascaGermanyBernardo Dominic QUALIFIED
Jefferson SchemmerIndiaOnyama Limba NEGOTIATION
Jennifer AmigonJapanOnyama Limba NEW
Murillo MaletCanadaAsiya Javayant NEW
Darci PoquetteJapanStephen Shaw NEW
Faith GillianArgentinaAnna Fali UNQUALIFIED
Salvatore StockhamSpainStephen Shaw PROPOSAL
Mujtaba NickaSpainAmy Elsner NEW
Alejandro PerinBrazilBernardo Dominic RENEWAL
Leja CaldareraUnited KingdomAsiya Javayant RENEWAL
Greenwood BologniaFranceOnyama Limba NEGOTIATION
Izzy GarufiCanadaIvan Magalhaes QUALIFIED
Darci PoquetteBrazilIvan Magalhaes UNQUALIFIED
Jefferson SchemmerArgentinaIoni Bowcher QUALIFIED
Aika InouyeIndiaXuxue Feng RENEWAL
Nicolas IturbideIndiaOnyama Limba PROPOSAL
Claire TollnerAustraliaAnna Fali UNQUALIFIED
Faith GillianRussiaIvan Magalhaes RENEWAL
Juan WieserBrazilIvan Magalhaes UNQUALIFIED
Claire TollnerCanadaAmy Elsner 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>