Locale

Change the locale of the datepicker, schedule and client side validation messages.

Language
English
English
English
French
German
German
German
Italian
Korean
Spanish
Catalan
Dutch
Portuguese
Portuguese
Arabic
Arabic
Bulgarian
Czech
Greek
Persian
Finnish
Danish
Hindi
Indonesian
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
Vietnamese
Chinese
Chinese

Input Style

Themes

PrimeOne
Saga Saga
Vela Vela
Arya Arya
Bootstrap
bootstrap4-blue-light Bootstrap Blue
bootstrap4-purple-light Bootstrap Purple
bootstrap4-blue-dark Bootstrap Blue
bootstrap4-purple-dark Bootstrap Purple
Material Design
material-indigo-light Indigo
material-deeppurple-light' Deep Purple
material-indigo-dark Indigo
material-deeppurple-dark' Deep Purple
Material Design Compact
material-indigo-light Indigo
material-deeppurple-light' Deep Purple
material-indigo-dark Indigo
material-deeppurple-dark' Deep Purple

DataTable Scroll

Both vertical and horizontal scrolling of the data is supported with optional frozen rows-columns and on-demand loading features.

Vertical
NameCountryRepresentativeStatus
Leja B VocelkaJapanAnna Fali QUALIFIED
Kadeem P MarrierIndiaOnyama Limba NEW
Tony S NickaCanadaIvan Magalhaes RENEWAL
Greenwood G RimIndiaAnna Fali QUALIFIED
Darci X WieserItalyXuxue Feng RENEWAL
Emily P BowleySpainXuxue Feng UNQUALIFIED
Julie H RutaAustraliaAmy Elsner PROPOSAL
Smith V CaudyFranceIoni Bowcher UNQUALIFIED
Jones A AlbaresSpainAnna Fali QUALIFIED
Munro S IturbideArgentinaAnna Fali NEGOTIATION
Jones Q WhobreyAustraliaBernardo Dominic NEW
Nicolas Z CaudyJapanStephen Shaw QUALIFIED
Cody D SergiCanadaOnyama Limba UNQUALIFIED
Murillo G MarrierAustraliaElwin Sharvill PROPOSAL
Juan X SlusarskiItalyBernardo Dominic RENEWAL
Johnson E FlosiIndiaAsiya Javayant NEGOTIATION
Aruna Q NickaArgentinaIvan Magalhaes PROPOSAL
Nicolas Q PerinGermanyStephen Shaw NEW
Mayumi V KuskoFranceElwin Sharvill QUALIFIED
Kaitlin U StensethFranceXuxue Feng NEW
Chavez S KolmetzFranceElwin Sharvill UNQUALIFIED
Emily J DilliardRussiaAmy Elsner QUALIFIED
Mujtaba B KolmetzCanadaAsiya Javayant QUALIFIED
David E VenereUnited KingdomAnna Fali PROPOSAL
Adams G WaycottGermanyStephen Shaw NEW
Alejandro Z GarufiCanadaXuxue Feng RENEWAL
Jeanfrancois V ButtGermanyElwin Sharvill QUALIFIED
Aika E OstroskyFranceOnyama Limba NEW
Aika I PoquetteBrazilBernardo Dominic PROPOSAL
Maria Y WhobreyUnited KingdomAnna Fali NEGOTIATION
Mayumi E StensethSpainAnna Fali NEGOTIATION
Mujtaba S SchemmerBrazilAnna Fali NEW
Greenwood U GarufiBrazilBernardo Dominic PROPOSAL
Smith M PaprockiCanadaAsiya Javayant QUALIFIED
Wickens Z DilliardUnited KingdomAnna Fali RENEWAL
Wickens F BologniaBrazilOnyama Limba UNQUALIFIED
Aruna U WaycottSpainIoni Bowcher UNQUALIFIED
Greenwood T ButtJapanAmy Elsner RENEWAL
Aditya E FigeroaRussiaBernardo Dominic UNQUALIFIED
Adams D VocelkaFranceAsiya Javayant RENEWAL
Leja U VenereBrazilAmy Elsner QUALIFIED
David W ChuiUnited KingdomIvan Magalhaes NEW
Aika I ChuiItalyOnyama Limba UNQUALIFIED
Octavia R PoquetteAustraliaXuxue Feng NEGOTIATION
Smith K RulapaughRussiaXuxue Feng PROPOSAL
Kadeem S RimUnited KingdomStephen Shaw PROPOSAL
Aika U GlickFranceXuxue Feng PROPOSAL
Aruna V MarrierArgentinaAsiya Javayant NEW
Chavez L NickaSpainElwin Sharvill UNQUALIFIED
Maisha A VenereBrazilXuxue Feng UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Silvio R RimArgentinaBernardo Dominic NEW
Emily J GillianItalyOnyama Limba PROPOSAL
Arvin O MarrierRussiaIoni Bowcher PROPOSAL
Salvatore A WaycottArgentinaIvan Magalhaes QUALIFIED
Aika J OstroskyItalyBernardo Dominic NEGOTIATION
Ashley A VocelkaRussiaElwin Sharvill NEGOTIATION
Julie T CampainBrazilIvan Magalhaes QUALIFIED
Jeanfrancois V ShinkoAustraliaElwin Sharvill PROPOSAL
Francesco A GarufiRussiaXuxue Feng NEW
Murillo M AmigonItalyXuxue Feng PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Cody N IturbideItaly2026-06-05Rousseaux, Michael Esq NEGOTIATION65Onyama Limba
1001Munro N SergiArgentina2026-07-03Dorl, James J Esq QUALIFIED57Elwin Sharvill
1002Juan C IturbideGermany2026-06-11Chemel, James L Cpa PROPOSAL78Ioni Bowcher
1003Clifford P DilliardSpain2026-06-15Truhlar And Truhlar Attys NEW91Bernardo Dominic
1004Ashley J KuskoArgentina2026-06-19Buckley Miller Wright PROPOSAL99Asiya Javayant
1005Julie D GauchoAustralia2026-06-11Rangoni Of Florence PROPOSAL7Asiya Javayant
1006Kadeem V AmigonRussia2026-06-22Rangoni Of Florence UNQUALIFIED30Bernardo Dominic
1007Clifford K NestleRussia2026-06-16Benton, John B Jr UNQUALIFIED18Stephen Shaw
1008Jeanfrancois M KolmetzUnited Kingdom2026-06-07Benton, John B Jr NEW15Elwin Sharvill
1009Darci P GarufiArgentina2026-06-05Chapman, Ross E Esq NEW51Amy Elsner
1010Mujtaba C RimBrazil2026-06-24Chemel, James L Cpa RENEWAL10Onyama Limba
1011Darci K DarakjyAustralia2026-06-17Chemel, James L Cpa RENEWAL32Asiya Javayant
1012James X MorascaArgentina2026-06-27Chemel, James L Cpa UNQUALIFIED5Amy Elsner
1013David Q InouyeArgentina2026-06-17Printing Dimensions QUALIFIED92Elwin Sharvill
1014Morrow D StockhamUnited Kingdom2026-06-23Truhlar And Truhlar Attys PROPOSAL28Ivan Magalhaes
1015Mayumi Z WieserFrance2026-06-21Chapman, Ross E Esq PROPOSAL13Ivan Magalhaes
1016Alejandro N StockhamIndia2026-07-02King, Christopher A Esq NEGOTIATION77Asiya Javayant
1017Ricardo J CaldareraBrazil2026-06-29Printing Dimensions RENEWAL67Asiya Javayant
1018Silvio T BologniaRussia2026-06-20Truhlar And Truhlar Attys NEGOTIATION89Bernardo Dominic
1019Leja J CaldareraArgentina2026-07-02Morlong Associates UNQUALIFIED69Asiya Javayant
1020Rodrigues K PerinRussia2026-06-20Rousseaux, Michael Esq QUALIFIED74Ivan Magalhaes
1021Aditya R TollnerItaly2026-06-27Benton, John B Jr NEGOTIATION57Asiya Javayant
1022Jeanfrancois D DarakjyArgentina2026-06-20Truhlar And Truhlar Attys RENEWAL52Ioni Bowcher
1023Jones M VenereUnited Kingdom2026-06-07Dorl, James J Esq NEW28Asiya Javayant
1024Clifford U OldroydSpain2026-06-28Dorl, James J Esq UNQUALIFIED89Ioni Bowcher
1025Wickens S DilliardUnited Kingdom2026-06-06Feiner Bros RENEWAL71Elwin Sharvill
1026Alejandro G FollerJapan2026-06-30Benton, John B Jr RENEWAL40Elwin Sharvill
1027Antonio T GlickFrance2026-06-05Benton, John B Jr NEW53Asiya Javayant
1028Juan T StockhamAustralia2026-06-30Rousseaux, Michael Esq PROPOSAL41Asiya Javayant
1029Mujtaba Z PoquetteFrance2026-06-29King, Christopher A Esq PROPOSAL16Bernardo Dominic
1030Adams J MaletJapan2026-06-30Feltz Printing Service RENEWAL11Amy Elsner
1031Emily S FerenczArgentina2026-06-30Rousseaux, Michael Esq NEGOTIATION90Stephen Shaw
1032Mayumi O DarakjyIndia2026-06-24Chemel, James L Cpa UNQUALIFIED68Ioni Bowcher
1033Leon B GillianJapan2026-06-24Chapman, Ross E Esq NEW54Anna Fali
1034Mujtaba M ChuiIndia2026-06-29Chemel, James L Cpa NEGOTIATION12Bernardo Dominic
1035Munro V RutaFrance2026-06-22Printing Dimensions NEW49Amy Elsner
1036Misaki S DoeUnited Kingdom2026-06-17Feiner Bros PROPOSAL88Anna Fali
1037Kaitlin Y SaylorsCanada2026-07-04Rangoni Of Florence NEGOTIATION24Amy Elsner
1038Arvin Y MacleadGermany2026-06-14Commercial Press RENEWAL43Asiya Javayant
1039Aditya X RimUnited Kingdom2026-07-03Morlong Associates QUALIFIED36Bernardo Dominic
1040Ivar F WaycottFrance2026-06-06Dorl, James J Esq RENEWAL60Asiya Javayant
1041Salvatore P InouyeGermany2026-07-03Benton, John B Jr PROPOSAL30Anna Fali
1042Maria M ChuiBrazil2026-06-17Commercial Press QUALIFIED80Elwin Sharvill
1043Maisha S StensethGermany2026-07-02Truhlar And Truhlar Attys UNQUALIFIED2Ioni Bowcher
1044Kaitlin I PerinArgentina2026-06-20King, Christopher A Esq UNQUALIFIED0Amy Elsner
1045Emily G ShinkoItaly2026-06-12Truhlar And Truhlar Attys QUALIFIED21Xuxue Feng
1046Nicolas A KolmetzUnited Kingdom2026-06-29Rousseaux, Michael Esq RENEWAL25Onyama Limba
1047Juan H GarufiUnited Kingdom2026-06-25Rousseaux, Michael Esq RENEWAL34Elwin Sharvill
1048Clifford B PerinJapan2026-06-11Truhlar And Truhlar Attys PROPOSAL91Elwin Sharvill
1049Kaitlin Q PoquetteUnited Kingdom2026-06-09Morlong Associates UNQUALIFIED61Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Arvin D MacleadItalyElwin Sharvill NEGOTIATION
Aruna J SlusarskiUnited KingdomAsiya Javayant NEW
Wickens Y DarakjyBrazilAsiya Javayant UNQUALIFIED
Leon U FollerCanadaXuxue Feng NEW
Smith G GillianRussiaElwin Sharvill NEGOTIATION
Jennifer M CampainBrazilIvan Magalhaes PROPOSAL
Arvin X KolmetzGermanyIoni Bowcher QUALIFIED
Leja Y OldroydAustraliaAsiya Javayant NEGOTIATION
Murillo P DilliardAustraliaStephen Shaw UNQUALIFIED
Izzy N OstroskyIndiaIvan Magalhaes NEW
Jeanfrancois V SlusarskiArgentinaAmy Elsner UNQUALIFIED
Emily V FollerItalyStephen Shaw NEW
Jennifer E GauchoItalyIvan Magalhaes QUALIFIED
Leon H AmigonIndiaXuxue Feng QUALIFIED
Aika X NestleRussiaIvan Magalhaes RENEWAL
Salvatore Q VenereIndiaIvan Magalhaes UNQUALIFIED
Darci H VenereItalyXuxue Feng UNQUALIFIED
Alejandro Q MorascaBrazilStephen Shaw PROPOSAL
Rodrigues A RulapaughUnited KingdomIoni Bowcher PROPOSAL
Stacey C OstroskyArgentinaOnyama Limba PROPOSAL
Kaitlin F KolmetzBrazilAmy Elsner RENEWAL
Jefferson C WieserRussiaXuxue Feng QUALIFIED
Stacey M TollnerArgentinaStephen Shaw NEW
Aika Q CaudyIndiaStephen Shaw PROPOSAL
Cody O ButtRussiaAsiya Javayant QUALIFIED
James U TollnerGermanyOnyama Limba PROPOSAL
Darci U TollnerRussiaStephen Shaw NEW
Mayumi H SchemmerAustraliaAsiya Javayant NEGOTIATION
Emily U KolmetzCanadaAmy Elsner NEGOTIATION
Aika N OldroydAustraliaIvan Magalhaes QUALIFIED
Alejandro I WieserIndiaXuxue Feng QUALIFIED
Kaitlin G GarufiSpainStephen Shaw PROPOSAL
Maisha L AlbaresItalyStephen Shaw RENEWAL
Greenwood N MacleadGermanyElwin Sharvill RENEWAL
Jefferson O WaycottSpainIvan Magalhaes NEW
Adams J DarakjySpainStephen Shaw UNQUALIFIED
Tony L SlusarskiArgentinaIoni Bowcher RENEWAL
Nicolas X TollnerFranceBernardo Dominic NEGOTIATION
Leja Y TollnerIndiaAmy Elsner NEW
Jones B KolmetzFranceIvan Magalhaes QUALIFIED
Antonio W MarrierGermanyStephen Shaw PROPOSAL
Wickens R MaletUnited KingdomXuxue Feng NEW
Rodrigues Z ButtSpainAmy Elsner QUALIFIED
Jones O KuskoItalyStephen Shaw PROPOSAL
Claire W TollnerItalyAnna Fali QUALIFIED
Johnson H CaldareraFranceElwin Sharvill QUALIFIED
Kaitlin S GauchoSpainOnyama Limba QUALIFIED
Francesco N ShinkoRussiaAmy Elsner PROPOSAL
Kadeem Z StensethBrazilElwin Sharvill NEGOTIATION
Claire Y GarufiUnited KingdomStephen Shaw UNQUALIFIED
Frozen Columns
Name
Francesco T Briddick
Aika W Poquette
Smith H Wieser
Isabel M Venere
Murillo B Marrier
Jefferson I Bolognia
Nicolas L Rim
David M Glick
Octavia K Kolmetz
Silvio J Marrier
Octavia C Doe
Faith N Garufi
Chavez H Nestle
Rodrigues F Chui
Julie Y Nestle
Costa C Morasca
Jeanfrancois D Butt
Rodrigues L Waycott
Arvin L Shinko
Smith D Glick
Murillo I Saylors
Munro M Vocelka
Mayumi Y Ostrosky
Izzy X Iturbide
Murillo Y Rulapaugh
Aditya J Butt
Salvatore A Caldarera
Clifford J Wieser
Octavia M Malet
Johnson B Stockham
Stacey P Tollner
Jennifer I Wieser
Deepesh T Poquette
Murillo O Campain
Aditya W Rulapaugh
Costa B Nicka
Emily S Bolognia
Arvin P Oldroyd
Ashley E Ferencz
Chavez N Whobrey
Misaki O Albares
Kadeem X Slusarski
Silvio B Caldarera
Adams R Shinko
Stacey M Morasca
Aditya S Glick
Maria E Chui
Jeanfrancois T Darakjy
Izzy B Glick
Kaitlin O Whobrey
IdCountryDate
1000India2026-07-02
1001Italy2026-06-16
1002France2026-06-05
1003United Kingdom2026-06-27
1004Germany2026-06-28
1005Argentina2026-06-23
1006Brazil2026-06-10
1007Germany2026-06-22
1008Argentina2026-06-20
1009Russia2026-07-04
1010Australia2026-06-10
1011Russia2026-06-08
1012Russia2026-07-02
1013Brazil2026-06-18
1014Argentina2026-06-23
1015Argentina2026-06-15
1016United Kingdom2026-06-05
1017Italy2026-06-09
1018Australia2026-06-14
1019Spain2026-06-23
1020United Kingdom2026-06-08
1021Brazil2026-06-13
1022Canada2026-06-14
1023Germany2026-06-21
1024Argentina2026-06-24
1025Russia2026-06-22
1026Japan2026-07-03
1027Japan2026-07-03
1028Italy2026-06-25
1029Spain2026-06-23
1030Argentina2026-06-16
1031United Kingdom2026-06-30
1032France2026-06-26
1033Australia2026-06-12
1034India2026-07-03
1035United Kingdom2026-06-27
1036Spain2026-06-10
1037India2026-06-17
1038Argentina2026-06-12
1039Brazil2026-07-03
1040Russia2026-06-14
1041Spain2026-06-15
1042Spain2026-06-30
1043Australia2026-07-03
1044France2026-06-25
1045Germany2026-06-24
1046India2026-06-12
1047Japan2026-06-10
1048Russia2026-06-12
1049Canada2026-07-01

On-Demand Data

NameIdCountryDate
Johnson Z Schemmer1000Russia2026-06-10
Leon T Vocelka1001Australia2026-06-13
Izzy X Sergi1002Russia2026-06-29
Chavez B Doe1003Brazil2026-06-30
Kaitlin I Garufi1004Russia2026-06-12
Stacey N Chui1005Russia2026-06-08
Isabel K Ruta1006Brazil2026-06-12
Claire N Whobrey1007Argentina2026-06-24
Ricardo Y Whobrey1008Russia2026-06-06
Murillo W Maclead1009Canada2026-07-02
Darci F Stockham1010India2026-06-29
Octavia E Kolmetz1011Australia2026-06-11
Antonio T Dilliard1012Australia2026-06-22
Jefferson I Bolognia1013Australia2026-07-04
Aika F Kusko1014Germany2026-06-09
Salvatore B Ruta1015Germany2026-07-03
Jeanfrancois S Poquette1016Japan2026-06-16
Julie G Dilliard1017Brazil2026-07-03
Juan U Ferencz1018Spain2026-06-15
Morrow D Malet1019Spain2026-06-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Francesco N PerinCanadaStephen Shaw PROPOSAL
Jones W CaudyGermanyBernardo Dominic RENEWAL
Antonio K PoquetteUnited KingdomBernardo Dominic QUALIFIED
David Q SergiGermanyAmy Elsner PROPOSAL
Leja B IturbideIndiaStephen Shaw PROPOSAL
Costa J PoquetteUnited KingdomAmy Elsner NEGOTIATION
Aditya U BriddickAustraliaAnna Fali NEW
Claire H FerenczItalyAnna Fali RENEWAL
Aruna U MarrierArgentinaElwin Sharvill PROPOSAL
Jones B SaylorsCanadaAmy Elsner RENEWAL
Rodrigues A VocelkaBrazilAsiya Javayant UNQUALIFIED
Cody Q IturbideUnited KingdomIoni Bowcher RENEWAL
Leon L BriddickCanadaXuxue Feng RENEWAL
Wickens R OstroskyUnited KingdomIvan Magalhaes UNQUALIFIED
Johnson P IturbideSpainIoni Bowcher QUALIFIED
Silvio B PaprockiBrazilAmy Elsner RENEWAL
Adams K VenereRussiaAmy Elsner QUALIFIED
Juan R WieserRussiaAsiya Javayant PROPOSAL
Morrow C SchemmerItalyXuxue Feng RENEWAL
Deepesh I DoeUnited KingdomBernardo Dominic NEW
Mujtaba X CampainBrazilIoni Bowcher PROPOSAL
Faith G RimItalyIoni Bowcher RENEWAL
Greenwood C BriddickIndiaXuxue Feng PROPOSAL
Jefferson U TollnerCanadaOnyama Limba RENEWAL
Adams M BologniaGermanyBernardo Dominic UNQUALIFIED
Smith Q GarufiCanadaAmy Elsner NEGOTIATION
Alejandro V OstroskySpainAmy Elsner QUALIFIED
Darci S SchemmerArgentinaAnna Fali RENEWAL
Wickens C BologniaCanadaAmy Elsner UNQUALIFIED
Izzy U ButtArgentinaXuxue Feng NEGOTIATION
Leon R MorascaAustraliaStephen Shaw RENEWAL
Mujtaba Y TollnerRussiaIvan Magalhaes UNQUALIFIED
Mujtaba H SaylorsBrazilAmy Elsner NEGOTIATION
Misaki Z FollerGermanyAsiya Javayant NEGOTIATION
Kadeem E BriddickArgentinaIvan Magalhaes QUALIFIED
Ricardo P FlosiJapanIvan Magalhaes QUALIFIED
Ivar C AmigonGermanyAmy Elsner QUALIFIED
Sinclair L GauchoAustraliaOnyama Limba UNQUALIFIED
Aruna E DoeCanadaIoni Bowcher PROPOSAL
Maria R IturbideAustraliaOnyama Limba 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.name().toLowerCase()}">#{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.name().toLowerCase()}">#{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.name().toLowerCase()}">#{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.name().toLowerCase()}">#{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.name().toLowerCase()}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

</h:form>