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
Julie L CampainCanadaAmy Elsner RENEWAL
Aruna U FigeroaUnited KingdomAnna Fali QUALIFIED
Mujtaba G MacleadIndiaBernardo Dominic PROPOSAL
Izzy Z InouyeUnited KingdomStephen Shaw PROPOSAL
Mayumi Q FollerItalyBernardo Dominic UNQUALIFIED
Sinclair E IturbideCanadaIoni Bowcher RENEWAL
Salvatore O SlusarskiGermanyIvan Magalhaes RENEWAL
Alejandro E GarufiCanadaOnyama Limba UNQUALIFIED
Chavez S KolmetzFranceAnna Fali NEGOTIATION
Jefferson Q OstroskyAustraliaBernardo Dominic NEW
Ricardo F NestleCanadaIoni Bowcher PROPOSAL
Wickens G DoeSpainBernardo Dominic NEGOTIATION
Kadeem P MaletUnited KingdomElwin Sharvill RENEWAL
Darci T VenereFranceAmy Elsner PROPOSAL
Greenwood Y SergiJapanAmy Elsner NEGOTIATION
James U GarufiCanadaIvan Magalhaes RENEWAL
Deepesh Y VenereCanadaAsiya Javayant UNQUALIFIED
Jones U SchemmerUnited KingdomIoni Bowcher RENEWAL
Stacey K GarufiAustraliaAmy Elsner UNQUALIFIED
Smith T SlusarskiSpainAsiya Javayant PROPOSAL
Deepesh S GarufiArgentinaOnyama Limba PROPOSAL
Antonio B RutaGermanyBernardo Dominic NEW
Mayumi U TollnerCanadaAsiya Javayant NEGOTIATION
Johnson S KolmetzGermanyStephen Shaw NEW
Mayumi Z TollnerGermanyAmy Elsner UNQUALIFIED
Jennifer K PoquetteSpainIvan Magalhaes RENEWAL
Aika K AmigonAustraliaAmy Elsner UNQUALIFIED
Jennifer Y ShinkoSpainOnyama Limba RENEWAL
David W PerinArgentinaAsiya Javayant NEGOTIATION
Misaki Z StensethItalyOnyama Limba PROPOSAL
Mayumi B AlbaresIndiaStephen Shaw QUALIFIED
Jones X VenereIndiaStephen Shaw NEW
Juan N FollerBrazilIvan Magalhaes PROPOSAL
Aika M VocelkaItalyOnyama Limba NEGOTIATION
Izzy S NickaRussiaIvan Magalhaes NEW
Arvin N RulapaughJapanStephen Shaw NEW
Nicolas Q KuskoAustraliaAsiya Javayant NEGOTIATION
Misaki O BowleyIndiaElwin Sharvill NEGOTIATION
Silvio Q InouyeAustraliaOnyama Limba UNQUALIFIED
Mayumi C RutaFranceAmy Elsner NEW
Francesco E DilliardCanadaXuxue Feng NEW
Smith T GauchoFranceStephen Shaw RENEWAL
Aditya H CampainItalyXuxue Feng QUALIFIED
Antonio H VenereJapanIoni Bowcher QUALIFIED
Rodrigues J PoquetteGermanyIvan Magalhaes PROPOSAL
Jefferson N BriddickUnited KingdomStephen Shaw NEGOTIATION
Rodrigues Z CaldareraBrazilAmy Elsner UNQUALIFIED
Costa X GlickArgentinaAsiya Javayant NEGOTIATION
Kaitlin U RimItalyXuxue Feng PROPOSAL
Johnson P NestleJapanXuxue Feng NEW
Horizontal
NameCountryRepresentativeStatus
Murillo S NickaBrazilOnyama Limba QUALIFIED
Ivar E FigeroaArgentinaAnna Fali UNQUALIFIED
Costa P PerinSpainAnna Fali QUALIFIED
Octavia R VocelkaCanadaAnna Fali UNQUALIFIED
Izzy B RulapaughAustraliaBernardo Dominic UNQUALIFIED
Leja O ButtAustraliaIvan Magalhaes PROPOSAL
Cody Y WieserAustraliaXuxue Feng PROPOSAL
Arvin G CaudyJapanElwin Sharvill NEW
Emily V GauchoSpainIvan Magalhaes RENEWAL
Mayumi J ButtFranceIoni Bowcher RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ashley K IturbideIndia2026-07-23Dorl, James J Esq PROPOSAL51Xuxue Feng
1001Julie F StensethAustralia2026-07-15Chanay, Jeffrey A Esq QUALIFIED73Onyama Limba
1002Nicolas N RulapaughUnited Kingdom2026-07-26Benton, John B Jr QUALIFIED47Elwin Sharvill
1003Mujtaba G CampainAustralia2026-07-07Chemel, James L Cpa NEGOTIATION82Onyama Limba
1004Kadeem T IturbideUnited Kingdom2026-07-04Commercial Press QUALIFIED4Stephen Shaw
1005Rodrigues S ShinkoIndia2026-07-01Chapman, Ross E Esq NEGOTIATION16Xuxue Feng
1006Wickens T StensethBrazil2026-07-13Chemel, James L Cpa QUALIFIED87Amy Elsner
1007Deepesh B ShinkoRussia2026-07-14King, Christopher A Esq UNQUALIFIED78Bernardo Dominic
1008Mujtaba Z MacleadItaly2026-07-28Chanay, Jeffrey A Esq PROPOSAL95Onyama Limba
1009Cody M GlickCanada2026-07-13Benton, John B Jr RENEWAL82Stephen Shaw
1010Jeanfrancois M ChuiFrance2026-07-01Feiner Bros NEW37Xuxue Feng
1011Nicolas F DilliardCanada2026-07-17Morlong Associates UNQUALIFIED18Bernardo Dominic
1012Wickens J ShinkoArgentina2026-07-18Rangoni Of Florence QUALIFIED83Stephen Shaw
1013Emily R RutaUnited Kingdom2026-07-22Truhlar And Truhlar Attys NEW70Stephen Shaw
1014Darci L NickaRussia2026-07-18Chanay, Jeffrey A Esq UNQUALIFIED10Amy Elsner
1015Leon E ChuiFrance2026-07-09Truhlar And Truhlar Attys NEGOTIATION2Ivan Magalhaes
1016Sinclair D GauchoSpain2026-07-25King, Christopher A Esq RENEWAL47Amy Elsner
1017Arvin B BriddickSpain2026-07-14Rangoni Of Florence NEW30Onyama Limba
1018Maria R MarrierAustralia2026-07-25Chemel, James L Cpa PROPOSAL67Amy Elsner
1019Rodrigues X RimRussia2026-07-27Rousseaux, Michael Esq NEGOTIATION43Bernardo Dominic
1020Sinclair Z BriddickCanada2026-07-05Chanay, Jeffrey A Esq RENEWAL73Asiya Javayant
1021Greenwood C CaldareraGermany2026-07-24Benton, John B Jr NEGOTIATION17Amy Elsner
1022Isabel Z MacleadJapan2026-07-06Morlong Associates NEGOTIATION46Ivan Magalhaes
1023Leja Z WaycottSpain2026-07-27Morlong Associates RENEWAL47Stephen Shaw
1024Tony E KuskoItaly2026-07-23Chanay, Jeffrey A Esq PROPOSAL88Ivan Magalhaes
1025Costa C DarakjyItaly2026-07-21Printing Dimensions QUALIFIED0Ioni Bowcher
1026Alejandro T VenereArgentina2026-07-26Feltz Printing Service UNQUALIFIED77Xuxue Feng
1027Silvio F AmigonGermany2026-07-06Printing Dimensions QUALIFIED43Stephen Shaw
1028Isabel Q FerenczUnited Kingdom2026-07-20Buckley Miller Wright QUALIFIED72Onyama Limba
1029Costa X KolmetzItaly2026-07-02Buckley Miller Wright NEGOTIATION93Xuxue Feng
1030Darci I MarrierCanada2026-07-05Morlong Associates RENEWAL51Amy Elsner
1031Wickens J IturbideJapan2026-07-01Dorl, James J Esq NEGOTIATION77Ioni Bowcher
1032Morrow V MaletItaly2026-07-05Rousseaux, Michael Esq UNQUALIFIED58Asiya Javayant
1033Kadeem N MaletGermany2026-07-08Printing Dimensions NEW83Ioni Bowcher
1034Juan N BriddickGermany2026-07-14Buckley Miller Wright PROPOSAL17Anna Fali
1035Isabel K GauchoItaly2026-07-15Rousseaux, Michael Esq UNQUALIFIED9Xuxue Feng
1036Wickens K KuskoRussia2026-07-26Chanay, Jeffrey A Esq UNQUALIFIED24Stephen Shaw
1037Greenwood T CampainIndia2026-07-14Feiner Bros UNQUALIFIED55Elwin Sharvill
1038Jennifer W FigeroaIndia2026-07-24Printing Dimensions NEGOTIATION16Ioni Bowcher
1039Izzy A TollnerFrance2026-07-13Feltz Printing Service UNQUALIFIED10Elwin Sharvill
1040Francesco U PoquetteJapan2026-07-24Rangoni Of Florence NEGOTIATION88Elwin Sharvill
1041Faith N DarakjyIndia2026-07-16Truhlar And Truhlar Attys UNQUALIFIED46Asiya Javayant
1042Salvatore A TollnerJapan2026-07-12Truhlar And Truhlar Attys UNQUALIFIED78Elwin Sharvill
1043Deepesh Q GillianRussia2026-07-28Chemel, James L Cpa NEGOTIATION49Amy Elsner
1044Claire Q WhobreyFrance2026-07-15Benton, John B Jr QUALIFIED5Xuxue Feng
1045David Q ShinkoUnited Kingdom2026-07-08Truhlar And Truhlar Attys RENEWAL17Elwin Sharvill
1046Isabel E StensethBrazil2026-07-23Rousseaux, Michael Esq PROPOSAL60Onyama Limba
1047Wickens X ButtBrazil2026-07-19Chapman, Ross E Esq NEGOTIATION0Amy Elsner
1048Stacey E CaldareraUnited Kingdom2026-07-28Rousseaux, Michael Esq RENEWAL39Elwin Sharvill
1049Francesco Z DilliardArgentina2026-07-09Chapman, Ross E Esq PROPOSAL17Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Ashley P AmigonBrazilOnyama Limba PROPOSAL
Misaki H GauchoSpainIvan Magalhaes NEGOTIATION
Kadeem X CampainAustraliaAnna Fali NEGOTIATION
Sinclair U VocelkaGermanyIoni Bowcher RENEWAL
Morrow Y OstroskyFranceElwin Sharvill RENEWAL
Claire L PerinJapanAnna Fali QUALIFIED
Murillo L SaylorsIndiaAmy Elsner PROPOSAL
Antonio P BowleyJapanAnna Fali NEGOTIATION
Aditya E SchemmerArgentinaXuxue Feng PROPOSAL
Munro Q KolmetzFranceAnna Fali UNQUALIFIED
Jeanfrancois K DoeArgentinaStephen Shaw UNQUALIFIED
Mujtaba J GillianGermanyAmy Elsner PROPOSAL
Jeanfrancois L SaylorsAustraliaAsiya Javayant RENEWAL
Greenwood A OldroydFranceAnna Fali PROPOSAL
Rodrigues G ChuiBrazilElwin Sharvill NEW
Isabel X BowleySpainIoni Bowcher RENEWAL
David K ButtAustraliaStephen Shaw RENEWAL
Munro K RulapaughRussiaIoni Bowcher RENEWAL
Chavez E RoysterSpainAnna Fali RENEWAL
Isabel E FerenczUnited KingdomBernardo Dominic PROPOSAL
Mujtaba B CampainUnited KingdomXuxue Feng PROPOSAL
Emily A DarakjyJapanAmy Elsner UNQUALIFIED
Mayumi S RimBrazilAnna Fali QUALIFIED
Chavez O GauchoSpainAmy Elsner NEGOTIATION
Jones I MaletAustraliaAnna Fali RENEWAL
Emily T GarufiUnited KingdomAnna Fali PROPOSAL
Salvatore E MaletItalyIoni Bowcher UNQUALIFIED
Leja W CaldareraCanadaAsiya Javayant UNQUALIFIED
Salvatore D StensethAustraliaBernardo Dominic QUALIFIED
Ashley Y WaycottGermanyStephen Shaw NEW
Tony L GarufiSpainXuxue Feng PROPOSAL
Murillo J GauchoAustraliaElwin Sharvill PROPOSAL
Wickens O GarufiUnited KingdomStephen Shaw QUALIFIED
Mayumi H NestleUnited KingdomAnna Fali NEGOTIATION
Faith Q FerenczJapanBernardo Dominic PROPOSAL
Chavez M IturbideSpainIvan Magalhaes UNQUALIFIED
Salvatore R CaldareraJapanOnyama Limba NEW
Alejandro K CampainItalyAsiya Javayant RENEWAL
Antonio Z MarrierIndiaAnna Fali UNQUALIFIED
Morrow A StensethCanadaAnna Fali QUALIFIED
Aditya S PoquetteItalyIoni Bowcher NEW
Jones B FigeroaCanadaAnna Fali RENEWAL
Cody B PoquetteArgentinaAsiya Javayant NEW
Aruna Y SlusarskiFranceAsiya Javayant NEW
David Z OldroydUnited KingdomAnna Fali QUALIFIED
Morrow G AlbaresArgentinaXuxue Feng UNQUALIFIED
Morrow L PoquetteSpainAnna Fali PROPOSAL
Murillo S MaletIndiaOnyama Limba NEGOTIATION
Jefferson F BologniaArgentinaXuxue Feng RENEWAL
Chavez L BologniaSpainAmy Elsner NEGOTIATION
Frozen Columns
Name
Juan K Caudy
Sinclair B Tollner
Aika Q Campain
Octavia B Briddick
Antonio Q Stockham
Ricardo D Rulapaugh
Sinclair I Schemmer
Jennifer L Kusko
Cody R Venere
Antonio G Garufi
Rodrigues S Morasca
Ricardo I Royster
Ricardo D Bolognia
Maria B Flosi
James K Kusko
James V Ruta
Stacey V Darakjy
Clifford A Whobrey
Wickens B Figeroa
Morrow E Morasca
Alejandro P Marrier
Rodrigues S Venere
Arvin O Caudy
Alejandro T Inouye
Antonio G Paprocki
Greenwood Q Kusko
Chavez S Morasca
Claire P Wieser
Faith O Figeroa
Julie T Stockham
Ivar E Albares
Morrow K Perin
Misaki N Venere
Emily E Stockham
Costa G Albares
Sinclair M Vocelka
Sinclair R Figeroa
Wickens Z Oldroyd
Morrow V Poquette
Juan Y Kolmetz
Silvio V Nestle
Kaitlin W Rim
David R Waycott
Salvatore C Garufi
Greenwood D Whobrey
David P Perin
Ashley P Stockham
Jeanfrancois D Butt
Izzy F Caudy
Mayumi J Whobrey
IdCountryDate
1000India2026-07-19
1001India2026-07-26
1002Spain2026-07-13
1003Argentina2026-07-12
1004Canada2026-07-27
1005Russia2026-07-22
1006Spain2026-07-10
1007France2026-07-13
1008India2026-07-19
1009Spain2026-07-05
1010Russia2026-07-06
1011Australia2026-07-01
1012Italy2026-07-27
1013Argentina2026-07-01
1014Australia2026-07-25
1015Spain2026-07-21
1016Brazil2026-07-05
1017Spain2026-07-27
1018Japan2026-07-06
1019France2026-07-02
1020United Kingdom2026-07-18
1021United Kingdom2026-07-26
1022Australia2026-07-23
1023India2026-07-01
1024United Kingdom2026-07-03
1025Brazil2026-07-25
1026Brazil2026-07-02
1027France2026-07-27
1028Russia2026-07-07
1029France2026-07-05
1030Brazil2026-07-19
1031Germany2026-07-03
1032Canada2026-07-20
1033Argentina2026-07-10
1034Germany2026-07-26
1035Japan2026-07-18
1036United Kingdom2026-07-26
1037Italy2026-07-16
1038Brazil2026-07-24
1039France2026-07-24
1040France2026-07-19
1041United Kingdom2026-07-02
1042Japan2026-07-19
1043Brazil2026-07-28
1044Australia2026-07-25
1045France2026-07-06
1046Brazil2026-07-16
1047Japan2026-07-23
1048Argentina2026-07-20
1049Italy2026-07-19

On-Demand Data

NameIdCountryDate
Kadeem Z Garufi1000France2026-07-28
James R Royster1001Brazil2026-07-01
Cody D Shinko1002United Kingdom2026-07-27
Cody O Inouye1003France2026-07-19
Jennifer J Stenseth1004Russia2026-07-30
Ricardo W Flosi1005Canada2026-07-03
Costa B Nicka1006Argentina2026-07-15
Deepesh A Amigon1007Italy2026-07-12
Sinclair W Malet1008Brazil2026-07-20
Darci A Gaucho1009Russia2026-07-07
Aika K Figeroa1010Russia2026-07-05
Nicolas B Waycott1011Germany2026-07-07
Francesco X Darakjy1012India2026-07-08
Antonio E Amigon1013Spain2026-07-02
Maisha D Rim1014Spain2026-07-21
Faith A Morasca1015Italy2026-07-09
Tony A Sergi1016France2026-07-02
Francesco L Rim1017Australia2026-07-01
Ricardo Y Tollner1018Australia2026-07-12
Julie G Iturbide1019Spain2026-07-25
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Cody T BriddickFranceAsiya Javayant PROPOSAL
Leon B VocelkaJapanAnna Fali RENEWAL
Jones I PerinIndiaXuxue Feng NEW
Stacey S CampainRussiaAnna Fali UNQUALIFIED
Chavez G SchemmerArgentinaAnna Fali QUALIFIED
Jefferson T SchemmerAustraliaAmy Elsner QUALIFIED
Aditya Z StockhamGermanyOnyama Limba QUALIFIED
Aika S GlickIndiaIvan Magalhaes NEGOTIATION
Kadeem K CaudyJapanIvan Magalhaes NEGOTIATION
Jeanfrancois I SergiSpainXuxue Feng QUALIFIED
Smith H KolmetzSpainOnyama Limba RENEWAL
Silvio P RimItalyIoni Bowcher NEGOTIATION
Cody D PoquetteBrazilBernardo Dominic RENEWAL
Nicolas C WieserSpainIoni Bowcher NEW
Sinclair D WaycottItalyBernardo Dominic UNQUALIFIED
Nicolas U BriddickCanadaIvan Magalhaes UNQUALIFIED
Ashley B MorascaFranceBernardo Dominic UNQUALIFIED
Wickens H RimArgentinaIvan Magalhaes RENEWAL
James Y MaletJapanStephen Shaw QUALIFIED
Leon Y GarufiItalyBernardo Dominic NEW
Faith Q SaylorsUnited KingdomBernardo Dominic QUALIFIED
Greenwood Q DarakjyJapanAnna Fali PROPOSAL
Murillo N DarakjyGermanyAsiya Javayant NEW
Chavez M MaletBrazilBernardo Dominic UNQUALIFIED
Jennifer N CaudyGermanyIoni Bowcher UNQUALIFIED
Maisha S FollerJapanElwin Sharvill NEW
Aika O PoquetteIndiaStephen Shaw NEGOTIATION
Emily T VenereBrazilXuxue Feng RENEWAL
Jefferson H PoquetteUnited KingdomXuxue Feng NEW
Greenwood T BologniaAustraliaBernardo Dominic NEGOTIATION
Izzy F MaletUnited KingdomXuxue Feng NEW
Johnson R SlusarskiJapanIvan Magalhaes PROPOSAL
Johnson S RutaGermanyIoni Bowcher UNQUALIFIED
Adams U RutaArgentinaAmy Elsner RENEWAL
Claire Y RulapaughSpainStephen Shaw PROPOSAL
Francesco Q VocelkaItalyIoni Bowcher UNQUALIFIED
Kaitlin G SaylorsUnited KingdomOnyama Limba RENEWAL
Adams O WhobreyAustraliaIoni Bowcher QUALIFIED
Maisha U KuskoBrazilAsiya Javayant NEGOTIATION
Morrow C ShinkoRussiaIoni Bowcher 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.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>