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
Darci B NestleBrazilStephen Shaw PROPOSAL
Ashley U ButtJapanBernardo Dominic QUALIFIED
Maria W TollnerJapanIvan Magalhaes RENEWAL
Stacey A VenereAustraliaIoni Bowcher UNQUALIFIED
Aika A ShinkoSpainIoni Bowcher RENEWAL
Leja E SergiJapanBernardo Dominic PROPOSAL
Ashley B TollnerCanadaAsiya Javayant NEW
Francesco Y ShinkoSpainXuxue Feng QUALIFIED
Chavez N RutaItalyXuxue Feng NEGOTIATION
Adams A RutaRussiaElwin Sharvill NEGOTIATION
Faith D WaycottGermanyAnna Fali NEW
Maisha W CaudyFranceIoni Bowcher PROPOSAL
Maria V FigeroaJapanXuxue Feng NEGOTIATION
David E DoeJapanIvan Magalhaes NEW
Tony S GauchoBrazilIoni Bowcher QUALIFIED
Antonio A DarakjySpainElwin Sharvill QUALIFIED
Clifford A GlickJapanIoni Bowcher RENEWAL
Tony Q GillianGermanyAmy Elsner UNQUALIFIED
James U VenereSpainStephen Shaw NEW
David A CaudyArgentinaIoni Bowcher UNQUALIFIED
James M VocelkaCanadaAmy Elsner NEW
Kaitlin D MorascaFranceAnna Fali UNQUALIFIED
Aika S ShinkoRussiaIvan Magalhaes UNQUALIFIED
Darci P ShinkoRussiaAsiya Javayant NEGOTIATION
Silvio R SchemmerRussiaAnna Fali QUALIFIED
Misaki O PaprockiIndiaBernardo Dominic UNQUALIFIED
Munro X CaudyFranceOnyama Limba NEGOTIATION
Wickens W PerinSpainAmy Elsner PROPOSAL
Faith J ChuiGermanyAnna Fali NEGOTIATION
Alejandro B CaldareraCanadaBernardo Dominic RENEWAL
Tony T ChuiGermanyStephen Shaw NEGOTIATION
Juan R StensethArgentinaAsiya Javayant UNQUALIFIED
Munro L FollerUnited KingdomXuxue Feng UNQUALIFIED
Leja P PoquetteBrazilElwin Sharvill QUALIFIED
Chavez B CaldareraFranceIoni Bowcher RENEWAL
Tony V GarufiArgentinaIvan Magalhaes NEW
Ashley N OldroydRussiaIoni Bowcher NEW
Mujtaba T BowleyArgentinaAnna Fali RENEWAL
Claire D MacleadRussiaElwin Sharvill QUALIFIED
Darci A RoysterBrazilBernardo Dominic UNQUALIFIED
Arvin P ButtSpainXuxue Feng PROPOSAL
Silvio W BologniaItalyAmy Elsner NEW
Ashley Q StockhamRussiaElwin Sharvill PROPOSAL
Antonio S DoeFranceElwin Sharvill PROPOSAL
Ivar Z BowleyFranceXuxue Feng NEGOTIATION
Aditya P DoeCanadaAsiya Javayant RENEWAL
Ivar Y TollnerGermanyAnna Fali QUALIFIED
Costa O ShinkoAustraliaIoni Bowcher UNQUALIFIED
Kadeem L AlbaresRussiaXuxue Feng RENEWAL
Arvin T CaudyAustraliaIvan Magalhaes UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Emily X GarufiUnited KingdomStephen Shaw PROPOSAL
Jeanfrancois N FollerGermanyAsiya Javayant PROPOSAL
Morrow Z SlusarskiIndiaAmy Elsner NEW
Maisha X WieserSpainAnna Fali NEW
Chavez K DilliardJapanIvan Magalhaes NEGOTIATION
Antonio I FollerArgentinaAmy Elsner PROPOSAL
Misaki U SchemmerFranceElwin Sharvill UNQUALIFIED
Ashley G RulapaughJapanStephen Shaw QUALIFIED
Mujtaba V MacleadJapanAnna Fali RENEWAL
Rodrigues U ShinkoSpainIoni Bowcher PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Kadeem Q SlusarskiRussia2026-08-05King, Christopher A Esq NEW81Asiya Javayant
1001Octavia I PaprockiArgentina2026-07-29Rousseaux, Michael Esq QUALIFIED10Asiya Javayant
1002Nicolas R GauchoBrazil2026-07-27Commercial Press UNQUALIFIED30Amy Elsner
1003Ashley L DoeBrazil2026-08-09Benton, John B Jr RENEWAL29Ioni Bowcher
1004Ricardo I BologniaGermany2026-08-11Chemel, James L Cpa QUALIFIED48Ioni Bowcher
1005Emily X RimIndia2026-07-20Rangoni Of Florence PROPOSAL17Bernardo Dominic
1006Aditya Z GarufiGermany2026-08-17Chemel, James L Cpa QUALIFIED3Bernardo Dominic
1007Chavez H GillianFrance2026-08-09Commercial Press UNQUALIFIED77Xuxue Feng
1008Deepesh Y KuskoGermany2026-08-10Rangoni Of Florence NEW81Bernardo Dominic
1009Greenwood R VocelkaUnited Kingdom2026-07-21Benton, John B Jr NEW16Ioni Bowcher
1010Costa U FlosiIndia2026-08-08Benton, John B Jr QUALIFIED99Onyama Limba
1011Izzy L MarrierBrazil2026-08-16Rangoni Of Florence RENEWAL60Bernardo Dominic
1012Clifford I MaletUnited Kingdom2026-08-14Truhlar And Truhlar Attys RENEWAL35Asiya Javayant
1013Jennifer H SergiAustralia2026-07-31Benton, John B Jr RENEWAL62Stephen Shaw
1014Maisha Z MacleadRussia2026-08-04Chanay, Jeffrey A Esq QUALIFIED40Amy Elsner
1015Mujtaba K ShinkoIndia2026-07-22Truhlar And Truhlar Attys QUALIFIED87Bernardo Dominic
1016Adams A DarakjyJapan2026-07-30Feiner Bros PROPOSAL73Asiya Javayant
1017Arvin V MaletFrance2026-08-15Chemel, James L Cpa NEW77Ivan Magalhaes
1018Sinclair B BowleyItaly2026-08-15Feiner Bros NEW82Ivan Magalhaes
1019Stacey P MaletJapan2026-07-24King, Christopher A Esq NEGOTIATION66Ivan Magalhaes
1020Leon P FlosiItaly2026-08-14Commercial Press NEW38Elwin Sharvill
1021Octavia E IturbideCanada2026-08-03Truhlar And Truhlar Attys NEGOTIATION36Ivan Magalhaes
1022Misaki N RutaUnited Kingdom2026-08-11Feltz Printing Service QUALIFIED84Stephen Shaw
1023Kaitlin U DarakjyJapan2026-08-05Truhlar And Truhlar Attys QUALIFIED27Onyama Limba
1024Aditya V RutaUnited Kingdom2026-08-02Benton, John B Jr NEGOTIATION88Elwin Sharvill
1025Smith O RutaUnited Kingdom2026-08-05Chanay, Jeffrey A Esq NEGOTIATION13Ivan Magalhaes
1026Morrow R ChuiItaly2026-08-14Morlong Associates NEGOTIATION86Xuxue Feng
1027Octavia W ShinkoCanada2026-07-30Buckley Miller Wright NEW70Onyama Limba
1028Antonio F BriddickUnited Kingdom2026-07-25King, Christopher A Esq NEW35Bernardo Dominic
1029Mujtaba Y KolmetzUnited Kingdom2026-08-04Buckley Miller Wright QUALIFIED77Xuxue Feng
1030Francesco M AlbaresCanada2026-08-14Rousseaux, Michael Esq QUALIFIED4Asiya Javayant
1031Kaitlin P RoysterIndia2026-08-08Rousseaux, Michael Esq PROPOSAL98Bernardo Dominic
1032Antonio G RutaIndia2026-07-20Dorl, James J Esq QUALIFIED8Asiya Javayant
1033Izzy O VenereIndia2026-08-13Chapman, Ross E Esq QUALIFIED37Anna Fali
1034Leon V FollerSpain2026-08-15Feiner Bros NEGOTIATION68Anna Fali
1035Chavez Y CampainFrance2026-07-30Chapman, Ross E Esq RENEWAL81Amy Elsner
1036Jennifer S FlosiFrance2026-07-28Rangoni Of Florence UNQUALIFIED25Ivan Magalhaes
1037Octavia A WieserIndia2026-07-25Chapman, Ross E Esq UNQUALIFIED90Onyama Limba
1038Chavez X BologniaSpain2026-08-07Dorl, James J Esq NEGOTIATION1Amy Elsner
1039Salvatore B GauchoGermany2026-07-25Benton, John B Jr QUALIFIED51Anna Fali
1040David E ShinkoSpain2026-07-20King, Christopher A Esq QUALIFIED14Xuxue Feng
1041Aditya X GlickIndia2026-08-14Morlong Associates UNQUALIFIED48Stephen Shaw
1042Ivar L RutaCanada2026-08-04Feltz Printing Service NEGOTIATION25Amy Elsner
1043Faith R BologniaItaly2026-08-09Buckley Miller Wright NEW64Ioni Bowcher
1044Maisha V SaylorsAustralia2026-08-02Rangoni Of Florence NEW96Asiya Javayant
1045Jefferson K RimIndia2026-08-15Feiner Bros RENEWAL21Bernardo Dominic
1046Julie A RimItaly2026-08-07Feltz Printing Service NEW38Bernardo Dominic
1047Aika L FerenczAustralia2026-08-15Chapman, Ross E Esq UNQUALIFIED53Asiya Javayant
1048Isabel X GauchoIndia2026-07-23Chapman, Ross E Esq RENEWAL78Bernardo Dominic
1049Chavez I ShinkoJapan2026-08-18Buckley Miller Wright PROPOSAL78Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Jones D KolmetzIndiaBernardo Dominic UNQUALIFIED
Salvatore L GillianIndiaXuxue Feng UNQUALIFIED
Maria O GauchoJapanXuxue Feng PROPOSAL
Misaki W NickaGermanyOnyama Limba RENEWAL
Aditya N VenereRussiaAnna Fali UNQUALIFIED
Kadeem Q GauchoArgentinaXuxue Feng RENEWAL
Juan O InouyeArgentinaBernardo Dominic PROPOSAL
Jeanfrancois X RoysterSpainStephen Shaw NEW
Aika W VenereJapanAmy Elsner NEGOTIATION
Mayumi I AmigonUnited KingdomOnyama Limba RENEWAL
Arvin R CaudyJapanAnna Fali UNQUALIFIED
Misaki E InouyeBrazilOnyama Limba NEGOTIATION
Cody U BowleyRussiaXuxue Feng RENEWAL
Nicolas L FlosiFranceAnna Fali NEGOTIATION
Arvin I FigeroaArgentinaIvan Magalhaes PROPOSAL
Mayumi C SergiSpainElwin Sharvill NEW
Jones O GauchoSpainAmy Elsner UNQUALIFIED
Smith G BologniaBrazilOnyama Limba NEW
Ashley J ButtUnited KingdomIvan Magalhaes NEGOTIATION
Isabel Y SlusarskiUnited KingdomIoni Bowcher NEW
Francesco I MarrierBrazilElwin Sharvill QUALIFIED
Costa J VenereFranceIvan Magalhaes NEGOTIATION
Clifford D NestleBrazilAnna Fali PROPOSAL
Alejandro A DoeGermanyBernardo Dominic QUALIFIED
Kaitlin E MaletRussiaElwin Sharvill UNQUALIFIED
Arvin N KuskoUnited KingdomBernardo Dominic NEW
Aruna C GlickSpainOnyama Limba QUALIFIED
Tony H WhobreyFranceAnna Fali UNQUALIFIED
James W ShinkoGermanyStephen Shaw RENEWAL
Antonio H RimArgentinaAmy Elsner UNQUALIFIED
David N FigeroaArgentinaAnna Fali UNQUALIFIED
Juan M FollerBrazilAnna Fali QUALIFIED
Leon G OstroskyGermanyXuxue Feng UNQUALIFIED
Antonio J FollerItalyBernardo Dominic QUALIFIED
Mayumi O WhobreyBrazilIoni Bowcher QUALIFIED
Nicolas O BologniaRussiaIvan Magalhaes PROPOSAL
Misaki C StensethUnited KingdomOnyama Limba RENEWAL
Clifford C FlosiGermanyAmy Elsner UNQUALIFIED
Maria A GarufiBrazilBernardo Dominic NEGOTIATION
Mujtaba Z GarufiRussiaAnna Fali RENEWAL
Cody W StensethIndiaAsiya Javayant NEGOTIATION
Aditya G PoquetteCanadaElwin Sharvill UNQUALIFIED
Cody L OstroskySpainStephen Shaw PROPOSAL
Wickens O BologniaRussiaIoni Bowcher NEGOTIATION
Darci U RoysterRussiaXuxue Feng RENEWAL
Ricardo J VocelkaJapanStephen Shaw QUALIFIED
Rodrigues J PerinArgentinaIoni Bowcher NEW
Wickens F FollerIndiaAsiya Javayant UNQUALIFIED
Silvio D GauchoUnited KingdomAmy Elsner QUALIFIED
Faith D KolmetzSpainIvan Magalhaes UNQUALIFIED
Frozen Columns
Name
Misaki R Flosi
Wickens R Rim
Jeanfrancois K Campain
Francesco Y Marrier
Jennifer M Oldroyd
Octavia B Rim
Morrow M Slusarski
Mujtaba V Ruta
Deepesh W Doe
Octavia V Malet
Tony A Briddick
Nicolas U Nestle
Aruna L Paprocki
Arvin A Campain
Leja E Rim
Adams R Nestle
Costa E Iturbide
Munro P Saylors
Francesco A Doe
Antonio X Whobrey
Ivar L Campain
Deepesh U Ferencz
Jones R Whobrey
Jeanfrancois Q Royster
James B Vocelka
Ivar T Schemmer
Cody S Darakjy
Silvio M Ruta
Ashley G Doe
Ashley K Sergi
Aruna F Ruta
Cody V Venere
Leja D Maclead
Chavez D Darakjy
Johnson K Nestle
Wickens U Bolognia
Isabel I Gillian
Mayumi W Oldroyd
Jennifer C Rim
Alejandro I Foller
Juan N Garufi
Isabel I Schemmer
Jennifer J Figeroa
Deepesh L Slusarski
Kadeem S Sergi
Aika S Schemmer
Rodrigues K Briddick
Misaki H Marrier
David F Kolmetz
Jones N Sergi
IdCountryDate
1000Germany2026-07-28
1001Japan2026-08-10
1002Australia2026-07-25
1003Australia2026-08-05
1004Spain2026-07-27
1005Brazil2026-08-18
1006Russia2026-07-26
1007Spain2026-08-17
1008India2026-08-15
1009United Kingdom2026-08-01
1010Italy2026-07-30
1011Brazil2026-07-26
1012Germany2026-07-21
1013India2026-08-17
1014Brazil2026-07-23
1015Japan2026-07-26
1016Argentina2026-08-14
1017Australia2026-07-30
1018Brazil2026-08-14
1019Germany2026-08-07
1020Canada2026-08-15
1021Argentina2026-08-10
1022Russia2026-08-04
1023Australia2026-07-29
1024United Kingdom2026-08-10
1025Brazil2026-08-14
1026Canada2026-07-23
1027United Kingdom2026-08-14
1028Spain2026-08-15
1029Spain2026-07-26
1030France2026-08-15
1031Germany2026-07-22
1032Brazil2026-08-15
1033Italy2026-07-31
1034Germany2026-08-10
1035Australia2026-08-11
1036Germany2026-07-23
1037Canada2026-07-22
1038France2026-08-17
1039India2026-07-24
1040France2026-08-05
1041Australia2026-08-04
1042India2026-08-05
1043Canada2026-07-31
1044Japan2026-08-14
1045Argentina2026-08-11
1046Brazil2026-07-29
1047Argentina2026-08-04
1048Canada2026-07-23
1049Italy2026-07-20

On-Demand Data

NameIdCountryDate
Smith L Kolmetz1000United Kingdom2026-07-25
Misaki L Caldarera1001Germany2026-07-31
Sinclair T Chui1002Australia2026-08-17
David B Whobrey1003United Kingdom2026-07-26
Jones T Whobrey1004Japan2026-08-01
Julie O Bolognia1005Japan2026-08-06
Claire X Sergi1006United Kingdom2026-07-20
Juan O Tollner1007France2026-07-25
Jefferson X Oldroyd1008Brazil2026-07-25
Alejandro B Schemmer1009Argentina2026-07-23
Stacey B Vocelka1010Australia2026-07-26
Kadeem Y Garufi1011Italy2026-08-08
Aditya Z Ruta1012Germany2026-08-10
Silvio T Waycott1013Italy2026-08-05
Morrow F Ferencz1014Russia2026-08-15
Leon M Saylors1015Germany2026-07-31
Deepesh V Rulapaugh1016Argentina2026-07-24
Rodrigues U Figeroa1017Germany2026-08-18
Jones I Malet1018Spain2026-07-30
Darci S Nestle1019United Kingdom2026-08-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Johnson Z StockhamBrazilAnna Fali NEW
Juan M NickaArgentinaAnna Fali UNQUALIFIED
Aditya O CaudySpainAmy Elsner NEGOTIATION
Misaki K SlusarskiJapanStephen Shaw RENEWAL
Jennifer Q SlusarskiGermanyAnna Fali UNQUALIFIED
Ricardo I VenereJapanOnyama Limba RENEWAL
Munro G PoquetteIndiaOnyama Limba NEGOTIATION
Murillo V DoeBrazilAnna Fali QUALIFIED
Johnson U StensethBrazilAnna Fali NEGOTIATION
Isabel N ButtCanadaOnyama Limba PROPOSAL
Cody K SaylorsAustraliaAnna Fali NEGOTIATION
Izzy U VenereSpainXuxue Feng PROPOSAL
Ricardo F BowleyJapanIoni Bowcher UNQUALIFIED
Jefferson C DarakjyIndiaAnna Fali NEGOTIATION
Maisha J CampainAustraliaAmy Elsner PROPOSAL
Smith V WhobreyGermanyXuxue Feng NEW
Johnson Q WaycottBrazilIvan Magalhaes UNQUALIFIED
James D PaprockiJapanIvan Magalhaes RENEWAL
Stacey B GillianItalyIoni Bowcher PROPOSAL
Ricardo Y VocelkaCanadaIvan Magalhaes QUALIFIED
Mayumi J MaletSpainElwin Sharvill PROPOSAL
Aruna Z KolmetzAustraliaIoni Bowcher QUALIFIED
Johnson M AmigonArgentinaIvan Magalhaes NEW
Smith C GillianArgentinaAnna Fali UNQUALIFIED
Misaki S ShinkoItalyIoni Bowcher PROPOSAL
Ricardo U MaletFranceAmy Elsner UNQUALIFIED
Mayumi F BriddickFranceAsiya Javayant QUALIFIED
Adams P SlusarskiBrazilElwin Sharvill NEGOTIATION
Murillo A PaprockiSpainOnyama Limba RENEWAL
Misaki J GarufiItalyElwin Sharvill NEGOTIATION
Stacey Z StockhamFranceOnyama Limba PROPOSAL
Mujtaba I DarakjyUnited KingdomBernardo Dominic QUALIFIED
Julie K VenereAustraliaBernardo Dominic UNQUALIFIED
Juan H IturbideCanadaBernardo Dominic PROPOSAL
Munro M MorascaIndiaXuxue Feng UNQUALIFIED
Jefferson G NickaIndiaAnna Fali QUALIFIED
Ivar J DarakjyArgentinaIvan Magalhaes NEGOTIATION
Julie F FigeroaAustraliaIvan Magalhaes QUALIFIED
Aika K KuskoUnited KingdomBernardo Dominic QUALIFIED
Tony J StensethJapanIvan Magalhaes 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>