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
David U OldroydItalyOnyama Limba QUALIFIED
Stacey V InouyeIndiaElwin Sharvill QUALIFIED
Maisha G DarakjyArgentinaXuxue Feng PROPOSAL
Maisha A IturbideSpainBernardo Dominic PROPOSAL
Jeanfrancois K IturbideRussiaBernardo Dominic RENEWAL
Octavia M OldroydGermanyIvan Magalhaes RENEWAL
Munro B DoeArgentinaIvan Magalhaes PROPOSAL
Salvatore J PerinIndiaElwin Sharvill NEGOTIATION
Jones O DilliardCanadaIvan Magalhaes NEGOTIATION
Costa Q OldroydCanadaIvan Magalhaes UNQUALIFIED
Misaki V SlusarskiRussiaStephen Shaw NEW
Jennifer M KolmetzItalyIoni Bowcher RENEWAL
Salvatore M SlusarskiRussiaBernardo Dominic UNQUALIFIED
Greenwood B VenereFranceStephen Shaw RENEWAL
Izzy W KuskoAustraliaAsiya Javayant PROPOSAL
Stacey S TollnerItalyStephen Shaw RENEWAL
Mayumi Z BowleyUnited KingdomStephen Shaw NEGOTIATION
Silvio C PoquetteItalyAnna Fali NEGOTIATION
Mayumi P AmigonJapanIvan Magalhaes NEGOTIATION
Jennifer H FlosiSpainIoni Bowcher QUALIFIED
Darci G KuskoAustraliaIoni Bowcher PROPOSAL
Chavez S FlosiArgentinaAsiya Javayant QUALIFIED
Darci U BowleyJapanAsiya Javayant NEW
Octavia R KuskoItalyElwin Sharvill NEW
Aika H MacleadIndiaAmy Elsner QUALIFIED
Maisha Z RulapaughJapanIvan Magalhaes RENEWAL
Julie F MorascaAustraliaAmy Elsner PROPOSAL
Nicolas J MacleadArgentinaAnna Fali UNQUALIFIED
David E BowleyCanadaOnyama Limba PROPOSAL
Jones G StensethGermanyAsiya Javayant NEGOTIATION
Emily J VocelkaRussiaIoni Bowcher UNQUALIFIED
Deepesh Q StensethIndiaOnyama Limba UNQUALIFIED
Arvin K KuskoAustraliaIvan Magalhaes QUALIFIED
Antonio Q KuskoRussiaXuxue Feng QUALIFIED
Maria Y GillianAustraliaBernardo Dominic QUALIFIED
Jeanfrancois K NestleCanadaOnyama Limba QUALIFIED
Rodrigues Q RimIndiaBernardo Dominic NEGOTIATION
Isabel E CaudyArgentinaAnna Fali RENEWAL
Stacey P AmigonCanadaXuxue Feng NEW
Ivar A GauchoIndiaAmy Elsner NEGOTIATION
Ricardo C NickaCanadaAmy Elsner UNQUALIFIED
Izzy H RimItalyStephen Shaw QUALIFIED
Ashley W FlosiItalyAsiya Javayant QUALIFIED
Misaki E TollnerIndiaAmy Elsner UNQUALIFIED
Ricardo M KuskoIndiaAmy Elsner UNQUALIFIED
Octavia Q StensethCanadaAmy Elsner NEW
Faith O SaylorsCanadaAmy Elsner NEGOTIATION
Izzy F StockhamIndiaAnna Fali PROPOSAL
Darci K StockhamJapanAsiya Javayant UNQUALIFIED
Octavia M DarakjyArgentinaAsiya Javayant QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Chavez V GarufiArgentinaBernardo Dominic UNQUALIFIED
Jones H FollerSpainIoni Bowcher NEGOTIATION
Mayumi U KuskoCanadaAnna Fali RENEWAL
Faith Y MaletBrazilAsiya Javayant UNQUALIFIED
Salvatore N OstroskySpainAmy Elsner QUALIFIED
James E VocelkaFranceAsiya Javayant NEW
Salvatore D IturbideRussiaIvan Magalhaes RENEWAL
Arvin M VocelkaBrazilXuxue Feng NEGOTIATION
Aruna Z OldroydRussiaAmy Elsner QUALIFIED
Isabel N MacleadGermanyAnna Fali QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Wickens A FlosiCanada2026-07-11Morlong Associates UNQUALIFIED42Xuxue Feng
1001Kaitlin R RulapaughJapan2026-07-09Chemel, James L Cpa RENEWAL45Xuxue Feng
1002Faith J VocelkaItaly2026-07-02Dorl, James J Esq UNQUALIFIED74Onyama Limba
1003Tony C VenereAustralia2026-07-12Chemel, James L Cpa QUALIFIED63Stephen Shaw
1004Wickens G KolmetzJapan2026-07-02Feltz Printing Service PROPOSAL62Xuxue Feng
1005Sinclair T FollerAustralia2026-07-25Chanay, Jeffrey A Esq RENEWAL10Ivan Magalhaes
1006Stacey V GauchoIndia2026-07-16Feltz Printing Service QUALIFIED82Asiya Javayant
1007Jennifer E IturbideItaly2026-07-07Printing Dimensions UNQUALIFIED8Ivan Magalhaes
1008Adams S PaprockiAustralia2026-07-07Chapman, Ross E Esq NEW94Xuxue Feng
1009Maria E FlosiItaly2026-07-02Rousseaux, Michael Esq RENEWAL57Ivan Magalhaes
1010Johnson J InouyeJapan2026-07-22Dorl, James J Esq NEGOTIATION49Stephen Shaw
1011Aruna H DilliardUnited Kingdom2026-07-11Truhlar And Truhlar Attys NEGOTIATION19Amy Elsner
1012Rodrigues A SlusarskiUnited Kingdom2026-07-07Rousseaux, Michael Esq QUALIFIED37Xuxue Feng
1013Mujtaba M CaldareraFrance2026-07-18Feltz Printing Service PROPOSAL28Xuxue Feng
1014Adams L NickaBrazil2026-07-18Feiner Bros PROPOSAL10Stephen Shaw
1015Leja L BriddickJapan2026-07-09Rousseaux, Michael Esq RENEWAL61Stephen Shaw
1016Rodrigues U BriddickSpain2026-07-22Buckley Miller Wright QUALIFIED82Bernardo Dominic
1017Ivar V KolmetzFrance2026-07-19Chanay, Jeffrey A Esq QUALIFIED31Stephen Shaw
1018Smith I InouyeAustralia2026-06-28Dorl, James J Esq RENEWAL9Anna Fali
1019Stacey J WhobreyItaly2026-07-14Chemel, James L Cpa UNQUALIFIED25Elwin Sharvill
1020Greenwood I SergiArgentina2026-07-15Chapman, Ross E Esq UNQUALIFIED94Bernardo Dominic
1021Francesco N FlosiRussia2026-07-24Dorl, James J Esq RENEWAL77Ivan Magalhaes
1022Nicolas V PaprockiUnited Kingdom2026-06-27Rangoni Of Florence QUALIFIED29Asiya Javayant
1023Adams Q RimIndia2026-06-29Morlong Associates UNQUALIFIED16Xuxue Feng
1024Smith S MaletGermany2026-07-16Printing Dimensions UNQUALIFIED2Ivan Magalhaes
1025Alejandro A StockhamCanada2026-07-11Chanay, Jeffrey A Esq QUALIFIED47Asiya Javayant
1026Salvatore O IturbideUnited Kingdom2026-07-23Chemel, James L Cpa RENEWAL65Bernardo Dominic
1027Tony M MacleadArgentina2026-07-19Commercial Press QUALIFIED15Ivan Magalhaes
1028Jeanfrancois E ButtCanada2026-06-29Feiner Bros QUALIFIED45Ioni Bowcher
1029Costa E DoeSpain2026-07-09King, Christopher A Esq NEW48Asiya Javayant
1030Salvatore C ChuiRussia2026-07-23Feltz Printing Service UNQUALIFIED74Amy Elsner
1031Darci V ChuiUnited Kingdom2026-07-01King, Christopher A Esq RENEWAL83Ivan Magalhaes
1032David P VocelkaBrazil2026-06-27Commercial Press RENEWAL39Asiya Javayant
1033Jefferson N SchemmerRussia2026-07-23Rangoni Of Florence QUALIFIED68Xuxue Feng
1034Darci S MarrierCanada2026-07-13Morlong Associates NEGOTIATION54Xuxue Feng
1035Antonio V GlickUnited Kingdom2026-07-15Commercial Press NEGOTIATION15Elwin Sharvill
1036Murillo M VocelkaGermany2026-06-30Truhlar And Truhlar Attys PROPOSAL51Onyama Limba
1037Julie U CampainUnited Kingdom2026-07-01King, Christopher A Esq NEW15Xuxue Feng
1038Morrow J OldroydSpain2026-07-11Truhlar And Truhlar Attys UNQUALIFIED58Asiya Javayant
1039Murillo L GillianArgentina2026-06-27Printing Dimensions RENEWAL94Onyama Limba
1040Izzy B RoysterSpain2026-07-23Chanay, Jeffrey A Esq PROPOSAL68Bernardo Dominic
1041Greenwood K RimRussia2026-07-25Truhlar And Truhlar Attys QUALIFIED36Elwin Sharvill
1042Kaitlin Z FlosiArgentina2026-06-30Morlong Associates QUALIFIED18Amy Elsner
1043Cody I PaprockiFrance2026-06-27Chapman, Ross E Esq NEGOTIATION87Asiya Javayant
1044Emily B SchemmerUnited Kingdom2026-06-28Dorl, James J Esq RENEWAL24Stephen Shaw
1045James O BriddickJapan2026-07-04Commercial Press RENEWAL61Elwin Sharvill
1046Munro S CaudyBrazil2026-07-14Morlong Associates QUALIFIED62Onyama Limba
1047Rodrigues U WhobreyUnited Kingdom2026-07-24King, Christopher A Esq QUALIFIED75Onyama Limba
1048Arvin H WieserJapan2026-06-27Chapman, Ross E Esq NEW55Bernardo Dominic
1049Costa Q ChuiBrazil2026-07-17Benton, John B Jr UNQUALIFIED39Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Alejandro T IturbideGermanyIvan Magalhaes RENEWAL
Deepesh F MacleadCanadaOnyama Limba PROPOSAL
Greenwood J SlusarskiJapanStephen Shaw QUALIFIED
Emily R SchemmerBrazilIvan Magalhaes PROPOSAL
Chavez S GlickJapanAnna Fali UNQUALIFIED
Sinclair J BowleyCanadaAsiya Javayant NEW
Kadeem B MaletIndiaStephen Shaw NEGOTIATION
Jefferson Y BriddickItalyAmy Elsner PROPOSAL
Cody A PerinCanadaStephen Shaw RENEWAL
Alejandro S InouyeAustraliaBernardo Dominic RENEWAL
Jefferson Y WhobreySpainIvan Magalhaes PROPOSAL
Johnson E FollerFranceXuxue Feng UNQUALIFIED
Aruna W KuskoSpainElwin Sharvill RENEWAL
Jennifer F MacleadJapanIvan Magalhaes RENEWAL
Juan R StensethFranceIoni Bowcher NEW
Isabel W GarufiAustraliaBernardo Dominic PROPOSAL
Adams U VenereSpainIvan Magalhaes UNQUALIFIED
Antonio Q BriddickBrazilAsiya Javayant RENEWAL
Costa E MaletArgentinaAnna Fali NEGOTIATION
Jennifer Z BowleyItalyOnyama Limba PROPOSAL
Chavez O SlusarskiItalyOnyama Limba QUALIFIED
Arvin R ButtBrazilAsiya Javayant PROPOSAL
Ashley L RimJapanAnna Fali PROPOSAL
Nicolas F DilliardSpainAsiya Javayant QUALIFIED
Misaki B AmigonAustraliaAnna Fali QUALIFIED
Johnson E NickaCanadaXuxue Feng NEGOTIATION
Nicolas P MaletCanadaAmy Elsner NEGOTIATION
Greenwood J DilliardSpainAmy Elsner QUALIFIED
Clifford D MacleadGermanyStephen Shaw NEGOTIATION
Silvio X WieserBrazilStephen Shaw QUALIFIED
Emily D BriddickArgentinaAnna Fali UNQUALIFIED
Aika B StockhamFranceIvan Magalhaes PROPOSAL
Octavia G VocelkaBrazilIvan Magalhaes RENEWAL
Ashley J FlosiArgentinaXuxue Feng NEGOTIATION
Isabel C RutaGermanyBernardo Dominic NEGOTIATION
Jefferson Y GlickUnited KingdomAmy Elsner NEGOTIATION
Aruna E CaudyGermanyElwin Sharvill RENEWAL
Johnson P WaycottItalyXuxue Feng NEGOTIATION
Julie P BriddickJapanAnna Fali PROPOSAL
Ashley N VenereArgentinaAmy Elsner PROPOSAL
Deepesh U ButtItalyOnyama Limba QUALIFIED
Wickens I AmigonItalyOnyama Limba QUALIFIED
Arvin J NickaCanadaAsiya Javayant RENEWAL
James N DoeItalyIvan Magalhaes NEW
James Q ChuiUnited KingdomIoni Bowcher PROPOSAL
Isabel D OstroskyRussiaElwin Sharvill UNQUALIFIED
David Y PerinUnited KingdomAmy Elsner PROPOSAL
Francesco T DarakjySpainIoni Bowcher UNQUALIFIED
Claire F SlusarskiJapanXuxue Feng NEGOTIATION
Deepesh F MacleadJapanAsiya Javayant QUALIFIED
Frozen Columns
Name
Emily Q Tollner
Morrow M Nicka
Aika O Morasca
Isabel O Kusko
Jefferson Z Waycott
Misaki I Kolmetz
Jefferson S Campain
Johnson P Nestle
Clifford O Ostrosky
Isabel T Marrier
Murillo C Marrier
Ashley Y Gillian
Mujtaba N Perin
James W Maclead
Nicolas N Rim
Aruna R Flosi
Tony M Royster
Nicolas T Amigon
Murillo M Schemmer
Ivar P Malet
Murillo S Rulapaugh
Aruna Q Doe
Ashley S Bolognia
Julie T Rulapaugh
Sinclair P Caudy
Rodrigues R Bowley
Cody A Caldarera
Claire Q Morasca
Adams X Stenseth
Maria I Waycott
Maisha T Rulapaugh
Darci K Shinko
Rodrigues G Chui
James X Saylors
David A Bolognia
Misaki S Ruta
Murillo M Stenseth
Kadeem D Sergi
Deepesh N Bolognia
Arvin M Sergi
Leon F Vocelka
Maria Y Rim
Morrow Z Flosi
Arvin H Figeroa
Aruna D Nestle
Stacey T Bolognia
Maria R Caldarera
Clifford K Tollner
Wickens K Malet
Faith A Shinko
IdCountryDate
1000Brazil2026-07-22
1001India2026-07-18
1002Japan2026-07-04
1003Japan2026-07-19
1004Spain2026-07-01
1005United Kingdom2026-07-24
1006Germany2026-07-08
1007Spain2026-07-14
1008Italy2026-07-11
1009Japan2026-07-15
1010Brazil2026-06-28
1011Japan2026-06-29
1012Spain2026-07-12
1013Japan2026-07-16
1014Japan2026-06-27
1015Germany2026-07-09
1016Germany2026-07-20
1017Japan2026-07-05
1018France2026-07-04
1019Australia2026-07-11
1020Germany2026-07-18
1021Australia2026-07-01
1022Italy2026-07-22
1023Brazil2026-07-09
1024Germany2026-07-25
1025Spain2026-07-06
1026Italy2026-07-09
1027France2026-06-27
1028Japan2026-07-07
1029France2026-07-09
1030Japan2026-07-05
1031Brazil2026-07-08
1032Russia2026-07-11
1033Japan2026-06-26
1034Japan2026-07-23
1035Russia2026-07-10
1036Brazil2026-07-22
1037Japan2026-07-09
1038Russia2026-06-30
1039France2026-07-08
1040Australia2026-07-13
1041Brazil2026-07-01
1042Germany2026-07-21
1043Canada2026-07-15
1044Spain2026-07-18
1045India2026-07-01
1046Russia2026-07-02
1047Canada2026-07-16
1048Spain2026-07-15
1049Canada2026-07-09

On-Demand Data

NameIdCountryDate
Mujtaba R Waycott1000Russia2026-06-29
Misaki O Dilliard1001Brazil2026-07-06
Greenwood K Paprocki1002Brazil2026-07-08
Rodrigues X Flosi1003Australia2026-07-24
Silvio R Maclead1004Italy2026-07-02
Arvin D Figeroa1005Canada2026-07-22
Mayumi S Tollner1006Australia2026-07-05
Salvatore K Saylors1007Argentina2026-07-08
James A Figeroa1008Japan2026-07-24
Isabel Z Slusarski1009Canada2026-07-25
Emily X Royster1010Italy2026-07-10
Julie C Malet1011Germany2026-07-21
Ricardo Q Saylors1012France2026-07-20
Leon Q Marrier1013Spain2026-07-20
Jeanfrancois U Flosi1014France2026-07-17
David N Glick1015Brazil2026-07-19
Murillo K Gaucho1016France2026-07-21
Ashley C Saylors1017Canada2026-06-26
Wickens Y Ostrosky1018Australia2026-06-27
Claire I Whobrey1019Italy2026-07-21
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Claire Q DoeArgentinaIoni Bowcher UNQUALIFIED
Clifford Q VenereUnited KingdomOnyama Limba RENEWAL
Clifford Q ChuiItalyIoni Bowcher UNQUALIFIED
Greenwood F CampainSpainAsiya Javayant RENEWAL
Smith G GauchoArgentinaAmy Elsner QUALIFIED
Clifford B TollnerUnited KingdomOnyama Limba NEW
Ricardo V DarakjyFranceBernardo Dominic NEGOTIATION
Rodrigues N SaylorsJapanAsiya Javayant UNQUALIFIED
Ivar N DarakjyArgentinaElwin Sharvill RENEWAL
Francesco C FerenczGermanyBernardo Dominic RENEWAL
Claire L AlbaresItalyAnna Fali RENEWAL
Mujtaba G ButtArgentinaStephen Shaw UNQUALIFIED
Isabel P DilliardItalyOnyama Limba NEGOTIATION
Maisha B WaycottRussiaStephen Shaw UNQUALIFIED
Cody M MaletSpainOnyama Limba PROPOSAL
Costa T TollnerUnited KingdomIoni Bowcher NEW
Munro D AlbaresJapanIoni Bowcher RENEWAL
Sinclair Q RutaBrazilAsiya Javayant UNQUALIFIED
Nicolas L SchemmerItalyAsiya Javayant PROPOSAL
Murillo Z PerinArgentinaAmy Elsner RENEWAL
Arvin O GauchoItalyAnna Fali QUALIFIED
Morrow Q PoquetteArgentinaAnna Fali PROPOSAL
Arvin X KolmetzBrazilAsiya Javayant NEGOTIATION
Emily Y WhobreyUnited KingdomStephen Shaw PROPOSAL
Isabel A RutaItalyAsiya Javayant NEGOTIATION
Ashley D WaycottFranceAnna Fali NEGOTIATION
James D DilliardItalyIvan Magalhaes NEGOTIATION
Greenwood J KolmetzIndiaAmy Elsner UNQUALIFIED
Chavez Q ShinkoSpainElwin Sharvill NEW
Ashley G WhobreyBrazilAsiya Javayant NEW
Tony N ChuiSpainIvan Magalhaes PROPOSAL
Kaitlin B ChuiUnited KingdomXuxue Feng NEW
Tony Y StockhamSpainIvan Magalhaes PROPOSAL
Adams G OstroskyUnited KingdomElwin Sharvill RENEWAL
Izzy S FerenczUnited KingdomAnna Fali UNQUALIFIED
Cody S MarrierFranceAnna Fali NEGOTIATION
Kadeem O StockhamCanadaOnyama Limba RENEWAL
Jeanfrancois G PaprockiItalyXuxue Feng NEW
Wickens B PerinAustraliaIoni Bowcher NEGOTIATION
Arvin D SchemmerCanadaBernardo Dominic 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>