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
Ivar E BriddickGermanyElwin Sharvill PROPOSAL
Leon M StensethGermanyOnyama Limba NEW
Francesco N MaletUnited KingdomAnna Fali NEGOTIATION
Johnson S CampainUnited KingdomAmy Elsner NEGOTIATION
Salvatore V FollerBrazilElwin Sharvill NEGOTIATION
Munro K MorascaIndiaStephen Shaw PROPOSAL
Chavez H SchemmerRussiaOnyama Limba QUALIFIED
Adams V PaprockiIndiaOnyama Limba NEW
Ashley T FigeroaIndiaElwin Sharvill RENEWAL
Aruna I MaletArgentinaIoni Bowcher UNQUALIFIED
Kaitlin U FlosiRussiaIoni Bowcher UNQUALIFIED
Ivar T MorascaUnited KingdomAsiya Javayant UNQUALIFIED
Chavez I RimFranceXuxue Feng NEW
Kadeem F DoeRussiaAsiya Javayant PROPOSAL
Jennifer E KuskoRussiaOnyama Limba NEW
Tony K IturbideArgentinaStephen Shaw UNQUALIFIED
Leja V NestleBrazilElwin Sharvill QUALIFIED
Antonio C ButtBrazilAsiya Javayant PROPOSAL
Mayumi C KolmetzIndiaIvan Magalhaes QUALIFIED
Rodrigues W NestleIndiaStephen Shaw PROPOSAL
Salvatore K ShinkoRussiaBernardo Dominic UNQUALIFIED
Maria I RimRussiaAmy Elsner PROPOSAL
Costa V BologniaCanadaXuxue Feng NEW
Smith P GillianBrazilAmy Elsner NEW
Arvin O InouyeRussiaAnna Fali RENEWAL
Salvatore U PoquetteJapanXuxue Feng QUALIFIED
Johnson U RoysterCanadaAsiya Javayant QUALIFIED
Arvin J KuskoFranceBernardo Dominic NEW
Clifford P RimFranceOnyama Limba NEGOTIATION
Leon Y GlickSpainAsiya Javayant UNQUALIFIED
Francesco O WaycottAustraliaBernardo Dominic RENEWAL
Juan B RulapaughIndiaAmy Elsner RENEWAL
Emily L VocelkaBrazilXuxue Feng PROPOSAL
Chavez P FigeroaUnited KingdomOnyama Limba UNQUALIFIED
Munro N WaycottUnited KingdomIoni Bowcher UNQUALIFIED
Ricardo H RulapaughBrazilIoni Bowcher QUALIFIED
Ricardo I BologniaUnited KingdomAnna Fali PROPOSAL
Chavez W AlbaresIndiaXuxue Feng QUALIFIED
Mayumi O PoquetteBrazilIoni Bowcher PROPOSAL
Ashley J RimAustraliaElwin Sharvill PROPOSAL
Greenwood D VocelkaJapanOnyama Limba RENEWAL
Tony V OldroydRussiaIoni Bowcher PROPOSAL
Antonio Y CaudyJapanStephen Shaw RENEWAL
Alejandro E AmigonArgentinaAnna Fali PROPOSAL
Kaitlin W FlosiArgentinaIvan Magalhaes PROPOSAL
Alejandro O GauchoArgentinaIoni Bowcher NEGOTIATION
Aditya F RutaItalyBernardo Dominic RENEWAL
Greenwood I WieserSpainIvan Magalhaes UNQUALIFIED
Octavia M StensethAustraliaElwin Sharvill NEGOTIATION
Johnson V BowleySpainAmy Elsner PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Ivar E CaudySpainBernardo Dominic QUALIFIED
Cody U FerenczSpainAmy Elsner NEW
Chavez A FollerUnited KingdomOnyama Limba NEGOTIATION
Johnson A FigeroaUnited KingdomAmy Elsner UNQUALIFIED
Tony I SchemmerGermanyStephen Shaw QUALIFIED
Arvin V FerenczAustraliaIoni Bowcher PROPOSAL
Octavia Y DilliardFranceIoni Bowcher RENEWAL
Morrow W OstroskyRussiaXuxue Feng RENEWAL
Rodrigues Y NickaBrazilStephen Shaw PROPOSAL
Leon X OldroydUnited KingdomXuxue Feng NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maisha F RutaBrazil2026-07-03King, Christopher A Esq UNQUALIFIED19Amy Elsner
1001Clifford U ShinkoUnited Kingdom2026-07-05Chanay, Jeffrey A Esq RENEWAL27Ivan Magalhaes
1002Morrow W FerenczGermany2026-06-30Morlong Associates NEW88Onyama Limba
1003Mayumi B AlbaresUnited Kingdom2026-06-14Feltz Printing Service QUALIFIED84Elwin Sharvill
1004Juan J GlickGermany2026-07-04Morlong Associates NEGOTIATION16Ioni Bowcher
1005Isabel K AmigonUnited Kingdom2026-07-07Rangoni Of Florence PROPOSAL92Bernardo Dominic
1006Jennifer Y PaprockiBrazil2026-06-28Truhlar And Truhlar Attys QUALIFIED17Amy Elsner
1007Clifford C WieserFrance2026-06-29Truhlar And Truhlar Attys NEW14Ivan Magalhaes
1008Mayumi I StensethAustralia2026-06-15Commercial Press NEGOTIATION3Xuxue Feng
1009Misaki U ChuiBrazil2026-06-18Truhlar And Truhlar Attys PROPOSAL91Ivan Magalhaes
1010Kaitlin R FollerBrazil2026-06-12Truhlar And Truhlar Attys NEW82Stephen Shaw
1011Tony M StensethCanada2026-07-04Truhlar And Truhlar Attys QUALIFIED5Elwin Sharvill
1012Mayumi F ButtItaly2026-07-01Chanay, Jeffrey A Esq NEW90Stephen Shaw
1013Adams E RimIndia2026-07-06Printing Dimensions RENEWAL94Ioni Bowcher
1014Sinclair N IturbideRussia2026-06-30Morlong Associates RENEWAL10Xuxue Feng
1015Ricardo A StockhamGermany2026-07-01Chemel, James L Cpa QUALIFIED47Elwin Sharvill
1016Johnson S DarakjySpain2026-06-27Feltz Printing Service NEW89Anna Fali
1017Alejandro O GlickUnited Kingdom2026-06-25Feiner Bros NEGOTIATION96Xuxue Feng
1018Jones C SergiItaly2026-06-18Printing Dimensions NEGOTIATION80Stephen Shaw
1019Izzy W CampainUnited Kingdom2026-06-23King, Christopher A Esq PROPOSAL94Ioni Bowcher
1020Deepesh W GarufiFrance2026-06-12Chapman, Ross E Esq NEGOTIATION54Anna Fali
1021Costa B InouyeIndia2026-06-28Truhlar And Truhlar Attys UNQUALIFIED99Amy Elsner
1022Murillo O InouyeCanada2026-06-21Dorl, James J Esq NEGOTIATION89Bernardo Dominic
1023Ashley D AlbaresJapan2026-06-18Dorl, James J Esq QUALIFIED0Amy Elsner
1024Tony M InouyeUnited Kingdom2026-06-19Benton, John B Jr PROPOSAL11Asiya Javayant
1025Chavez Z SlusarskiIndia2026-06-22Feltz Printing Service QUALIFIED90Onyama Limba
1026Alejandro N BriddickFrance2026-06-25Truhlar And Truhlar Attys NEW43Amy Elsner
1027Francesco B OldroydItaly2026-06-26Buckley Miller Wright PROPOSAL38Anna Fali
1028Stacey Q FerenczAustralia2026-07-02Truhlar And Truhlar Attys PROPOSAL26Elwin Sharvill
1029Ivar R FigeroaGermany2026-06-28Chemel, James L Cpa QUALIFIED91Ivan Magalhaes
1030Maria B SaylorsJapan2026-07-03Rousseaux, Michael Esq QUALIFIED80Asiya Javayant
1031Silvio E NestleUnited Kingdom2026-07-08Truhlar And Truhlar Attys UNQUALIFIED9Amy Elsner
1032Silvio D RimBrazil2026-06-26Rangoni Of Florence PROPOSAL28Elwin Sharvill
1033Johnson C RutaIndia2026-06-29Benton, John B Jr QUALIFIED30Stephen Shaw
1034Aruna X PerinAustralia2026-06-26Feiner Bros NEW13Ivan Magalhaes
1035Leja V SlusarskiFrance2026-06-25Printing Dimensions UNQUALIFIED56Stephen Shaw
1036Ricardo Y RoysterJapan2026-06-28Morlong Associates NEW77Anna Fali
1037Ivar G MaletIndia2026-06-18King, Christopher A Esq NEW19Onyama Limba
1038Costa E RutaGermany2026-06-25Rousseaux, Michael Esq RENEWAL75Ioni Bowcher
1039Jones Z CaudyFrance2026-06-28Feiner Bros NEGOTIATION89Ivan Magalhaes
1040Munro Q PaprockiItaly2026-06-10Morlong Associates NEW81Onyama Limba
1041Isabel K KuskoFrance2026-06-18Chapman, Ross E Esq PROPOSAL79Ivan Magalhaes
1042Julie Y BowleyGermany2026-06-22Truhlar And Truhlar Attys UNQUALIFIED30Amy Elsner
1043Morrow P IturbideItaly2026-06-14Truhlar And Truhlar Attys PROPOSAL99Asiya Javayant
1044Francesco I ShinkoJapan2026-06-13Chapman, Ross E Esq QUALIFIED46Xuxue Feng
1045Ricardo B SaylorsAustralia2026-06-14Rangoni Of Florence QUALIFIED46Stephen Shaw
1046Darci E BowleyItaly2026-06-23Printing Dimensions NEGOTIATION26Xuxue Feng
1047Alejandro U OstroskyGermany2026-07-08Feiner Bros RENEWAL77Xuxue Feng
1048Smith I OstroskyCanada2026-06-18Feltz Printing Service UNQUALIFIED34Ioni Bowcher
1049Tony E MaletGermany2026-07-04Rousseaux, Michael Esq QUALIFIED76Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Octavia J CaudySpainIvan Magalhaes QUALIFIED
Octavia L NestleGermanyBernardo Dominic UNQUALIFIED
Claire B MaletIndiaIvan Magalhaes QUALIFIED
Kaitlin H RulapaughFranceAmy Elsner UNQUALIFIED
Murillo G BowleyRussiaStephen Shaw NEGOTIATION
Faith J OldroydSpainStephen Shaw NEGOTIATION
Cody K TollnerIndiaElwin Sharvill RENEWAL
David M VenereItalyOnyama Limba UNQUALIFIED
Wickens G SlusarskiUnited KingdomAsiya Javayant NEW
Kaitlin Y SergiGermanyAsiya Javayant NEGOTIATION
Mayumi D RutaJapanAsiya Javayant NEW
Salvatore Y MaletJapanIoni Bowcher PROPOSAL
Mayumi Y GarufiFranceBernardo Dominic PROPOSAL
Smith E SlusarskiGermanyOnyama Limba RENEWAL
Murillo S GauchoRussiaIoni Bowcher UNQUALIFIED
Claire D NickaRussiaStephen Shaw RENEWAL
Stacey P ShinkoRussiaXuxue Feng NEGOTIATION
Alejandro Q OldroydArgentinaElwin Sharvill PROPOSAL
Aditya Z SlusarskiArgentinaAsiya Javayant RENEWAL
Cody D ChuiCanadaAmy Elsner NEW
Antonio E FigeroaArgentinaXuxue Feng UNQUALIFIED
Misaki Q StensethUnited KingdomAmy Elsner NEGOTIATION
Maria D IturbideBrazilAnna Fali QUALIFIED
Emily G MacleadCanadaAmy Elsner UNQUALIFIED
Greenwood Y BriddickSpainElwin Sharvill RENEWAL
Arvin Q TollnerRussiaElwin Sharvill NEW
Jefferson A MorascaItalyAmy Elsner QUALIFIED
Darci K WaycottCanadaElwin Sharvill PROPOSAL
Nicolas B FollerItalyAnna Fali QUALIFIED
Julie Q AmigonSpainIvan Magalhaes RENEWAL
Johnson H GlickFranceBernardo Dominic NEW
Alejandro Q ChuiArgentinaIoni Bowcher NEGOTIATION
Jefferson Z GarufiArgentinaAnna Fali UNQUALIFIED
Jeanfrancois F SaylorsItalyOnyama Limba UNQUALIFIED
Maria I OldroydUnited KingdomAmy Elsner NEGOTIATION
Johnson J IturbideIndiaOnyama Limba QUALIFIED
Isabel I MorascaGermanyBernardo Dominic NEW
Jefferson L BriddickGermanyStephen Shaw QUALIFIED
Silvio W TollnerFranceBernardo Dominic QUALIFIED
Stacey B DilliardItalyIvan Magalhaes RENEWAL
Jones N WaycottAustraliaBernardo Dominic NEW
Francesco G MacleadCanadaIoni Bowcher UNQUALIFIED
Faith J NickaSpainStephen Shaw NEW
Ivar Q RulapaughRussiaStephen Shaw UNQUALIFIED
Cody Y AmigonSpainXuxue Feng UNQUALIFIED
Alejandro U MorascaAustraliaBernardo Dominic NEGOTIATION
Salvatore W MaletArgentinaElwin Sharvill UNQUALIFIED
Chavez Y KuskoBrazilBernardo Dominic RENEWAL
Aika S GillianUnited KingdomIvan Magalhaes NEGOTIATION
Munro K SchemmerBrazilAsiya Javayant UNQUALIFIED
Frozen Columns
Name
Clifford P Garufi
Silvio K Caudy
James X Briddick
Francesco N Bolognia
Ivar Y Caldarera
Stacey D Saylors
Costa Q Glick
Kaitlin Z Albares
David M Nicka
Antonio C Whobrey
Rodrigues X Caldarera
Julie S Darakjy
Salvatore V Ostrosky
Leja U Gillian
Clifford H Butt
Tony J Amigon
Murillo S Foller
Maria Q Maclead
Kaitlin I Chui
Nicolas L Ferencz
Cody X Morasca
Darci L Bolognia
Sinclair G Figeroa
Sinclair B Butt
Greenwood C Chui
Leja K Gillian
Deepesh T Marrier
Wickens T Figeroa
Costa W Wieser
Jefferson V Garufi
Costa N Briddick
Misaki B Bolognia
Aditya I Gillian
Antonio T Gillian
Adams B Bowley
Alejandro X Ferencz
Aruna B Garufi
Clifford V Kolmetz
Morrow X Rim
Nicolas U Caldarera
Darci Y Rim
Izzy Z Tollner
Ricardo F Vocelka
Francesco N Waycott
Costa W Malet
Sinclair J Marrier
Costa Z Waycott
Nicolas N Stockham
Smith U Bolognia
Isabel S Ostrosky
IdCountryDate
1000India2026-06-26
1001Japan2026-07-02
1002United Kingdom2026-07-02
1003Brazil2026-06-21
1004Italy2026-06-19
1005Japan2026-06-20
1006United Kingdom2026-07-06
1007Russia2026-06-10
1008Russia2026-06-15
1009Russia2026-06-26
1010India2026-06-12
1011Germany2026-07-06
1012Brazil2026-07-04
1013United Kingdom2026-06-22
1014Argentina2026-06-16
1015Argentina2026-06-11
1016France2026-06-27
1017France2026-06-21
1018Canada2026-06-13
1019Italy2026-07-03
1020France2026-06-14
1021Canada2026-06-23
1022India2026-06-18
1023Argentina2026-06-20
1024Australia2026-07-05
1025Russia2026-06-23
1026France2026-06-26
1027Italy2026-06-12
1028India2026-07-07
1029Japan2026-06-20
1030Japan2026-06-30
1031Spain2026-06-13
1032United Kingdom2026-06-16
1033Germany2026-06-11
1034Russia2026-06-09
1035United Kingdom2026-06-15
1036Italy2026-07-04
1037India2026-06-17
1038Brazil2026-06-10
1039Japan2026-06-29
1040Argentina2026-06-13
1041India2026-07-02
1042Germany2026-07-07
1043Spain2026-06-19
1044Spain2026-06-11
1045Italy2026-06-25
1046France2026-07-02
1047Germany2026-07-02
1048Japan2026-06-09
1049Canada2026-06-22

On-Demand Data

NameIdCountryDate
Aika K Doe1000Italy2026-06-09
Darci X Briddick1001India2026-07-03
Nicolas A Rulapaugh1002India2026-06-24
Silvio A Whobrey1003Spain2026-07-01
Claire X Butt1004Spain2026-06-25
Costa H Morasca1005Japan2026-07-05
Alejandro V Doe1006Japan2026-06-27
Misaki D Marrier1007Argentina2026-06-28
Salvatore N Oldroyd1008Brazil2026-06-23
Morrow E Dilliard1009India2026-07-05
Emily W Albares1010France2026-07-06
Juan X Figeroa1011Argentina2026-06-30
Maisha N Stockham1012Russia2026-06-17
Aruna B Slusarski1013India2026-07-08
Deepesh L Ruta1014United Kingdom2026-06-21
Izzy H Vocelka1015Argentina2026-07-06
James D Flosi1016Canada2026-06-23
Tony G Whobrey1017Italy2026-07-03
Claire P Sergi1018Japan2026-06-09
Emily Z Glick1019Spain2026-06-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jones W BriddickBrazilStephen Shaw UNQUALIFIED
Clifford Y MaletSpainAmy Elsner NEW
Isabel M InouyeBrazilElwin Sharvill NEW
Jeanfrancois I MacleadUnited KingdomIvan Magalhaes NEW
Munro F BriddickFranceAsiya Javayant NEW
Julie V ButtFranceAnna Fali RENEWAL
Silvio V GlickFranceOnyama Limba NEW
Octavia M GlickUnited KingdomXuxue Feng QUALIFIED
Deepesh O OldroydFranceStephen Shaw NEGOTIATION
Murillo J SergiUnited KingdomAmy Elsner NEGOTIATION
Cody D DarakjyFranceIoni Bowcher UNQUALIFIED
Stacey G GauchoJapanXuxue Feng UNQUALIFIED
Aditya P MarrierSpainIoni Bowcher NEGOTIATION
Leon V GillianJapanElwin Sharvill UNQUALIFIED
Antonio K DarakjyBrazilAmy Elsner NEGOTIATION
Ivar F BowleyArgentinaXuxue Feng NEGOTIATION
Stacey I RutaRussiaAnna Fali QUALIFIED
Jeanfrancois Q OldroydBrazilIoni Bowcher NEGOTIATION
Aika X GlickItalyXuxue Feng NEGOTIATION
Aditya K InouyeSpainIoni Bowcher PROPOSAL
Wickens K VenereArgentinaIoni Bowcher RENEWAL
Aika Q SaylorsGermanyXuxue Feng NEGOTIATION
Maria G InouyeCanadaAsiya Javayant RENEWAL
Sinclair Q CaldareraAustraliaIvan Magalhaes NEW
Greenwood G SlusarskiItalyIoni Bowcher RENEWAL
Stacey J WhobreyBrazilAmy Elsner NEW
Antonio Y CaldareraUnited KingdomAnna Fali QUALIFIED
Johnson P PoquetteBrazilBernardo Dominic UNQUALIFIED
Alejandro Z RutaGermanyStephen Shaw RENEWAL
Rodrigues S DarakjyIndiaBernardo Dominic NEGOTIATION
Antonio D WieserItalyIvan Magalhaes QUALIFIED
Munro E SlusarskiArgentinaElwin Sharvill NEW
James T WaycottFranceOnyama Limba RENEWAL
Johnson A WhobreySpainAsiya Javayant PROPOSAL
Salvatore A RulapaughCanadaAnna Fali QUALIFIED
Mujtaba R WieserGermanyStephen Shaw PROPOSAL
Costa C PaprockiIndiaAsiya Javayant NEGOTIATION
Jennifer D IturbideGermanyIoni Bowcher RENEWAL
James X MorascaRussiaIoni Bowcher UNQUALIFIED
Faith P MaletFranceIoni Bowcher 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.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>