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
Jones Q RimJapanXuxue Feng NEW
Juan J CaudyUnited KingdomIoni Bowcher UNQUALIFIED
Greenwood Z SlusarskiIndiaAmy Elsner QUALIFIED
Silvio S GlickIndiaAsiya Javayant RENEWAL
Smith K PaprockiAustraliaAsiya Javayant PROPOSAL
Jennifer L MorascaArgentinaBernardo Dominic UNQUALIFIED
Maria O ShinkoBrazilStephen Shaw NEGOTIATION
Octavia C GillianRussiaIoni Bowcher NEW
Aruna C RutaGermanyAmy Elsner RENEWAL
Claire B ChuiBrazilIoni Bowcher QUALIFIED
Jeanfrancois K DoeRussiaStephen Shaw QUALIFIED
Johnson L VenereBrazilOnyama Limba UNQUALIFIED
Adams Q FlosiCanadaXuxue Feng NEGOTIATION
Sinclair K VocelkaCanadaAmy Elsner PROPOSAL
Adams U KolmetzFranceAnna Fali NEGOTIATION
Tony G OstroskyArgentinaAnna Fali NEW
Faith K DilliardItalyElwin Sharvill NEW
Johnson T RoysterSpainXuxue Feng PROPOSAL
Aruna Q BowleyCanadaOnyama Limba NEGOTIATION
Murillo S TollnerJapanIvan Magalhaes UNQUALIFIED
Chavez L CaudyBrazilIvan Magalhaes NEGOTIATION
Munro B SchemmerCanadaBernardo Dominic RENEWAL
Claire C CaldareraGermanyBernardo Dominic RENEWAL
Jeanfrancois E MarrierJapanIvan Magalhaes QUALIFIED
Cody W KuskoUnited KingdomOnyama Limba RENEWAL
Aika B KuskoArgentinaIvan Magalhaes NEW
Maisha F OstroskySpainAmy Elsner UNQUALIFIED
Claire O SlusarskiCanadaAmy Elsner NEGOTIATION
Costa U GarufiRussiaBernardo Dominic RENEWAL
Antonio J GlickRussiaIvan Magalhaes NEW
Aruna F MaletUnited KingdomAsiya Javayant PROPOSAL
Cody J PoquetteAustraliaElwin Sharvill PROPOSAL
Wickens N BologniaIndiaXuxue Feng UNQUALIFIED
Isabel D MarrierSpainIvan Magalhaes QUALIFIED
Maria L WaycottAustraliaOnyama Limba UNQUALIFIED
Maisha L BologniaItalyAsiya Javayant NEGOTIATION
Antonio A PoquetteSpainBernardo Dominic NEW
Salvatore X GarufiArgentinaAsiya Javayant NEW
Nicolas P NestleArgentinaAmy Elsner QUALIFIED
Jeanfrancois J WaycottFranceStephen Shaw NEGOTIATION
Cody C DoeAustraliaIoni Bowcher UNQUALIFIED
Jeanfrancois A SlusarskiJapanAmy Elsner NEW
Aika E TollnerAustraliaBernardo Dominic NEGOTIATION
David I MarrierUnited KingdomAmy Elsner NEW
Misaki V MarrierGermanyXuxue Feng QUALIFIED
Maisha P PaprockiGermanyAnna Fali RENEWAL
Julie A InouyeUnited KingdomIvan Magalhaes RENEWAL
Jeanfrancois R GlickIndiaElwin Sharvill NEGOTIATION
Jeanfrancois I PoquetteIndiaAmy Elsner PROPOSAL
Aika O MorascaArgentinaStephen Shaw RENEWAL
Horizontal
NameCountryRepresentativeStatus
David L MacleadBrazilAnna Fali NEW
Salvatore I MaletCanadaOnyama Limba QUALIFIED
Jefferson M RutaCanadaAsiya Javayant NEGOTIATION
Stacey J AlbaresArgentinaAsiya Javayant NEW
Faith I OstroskyJapanElwin Sharvill UNQUALIFIED
Rodrigues E DarakjyRussiaIoni Bowcher QUALIFIED
Misaki W SergiGermanyBernardo Dominic RENEWAL
Mujtaba B AmigonSpainIoni Bowcher PROPOSAL
Murillo Z StensethCanadaElwin Sharvill UNQUALIFIED
Mayumi C SergiFranceXuxue Feng UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jefferson E DilliardJapan2026-07-16Morlong Associates UNQUALIFIED35Amy Elsner
1001Chavez P CaldareraBrazil2026-07-09Commercial Press UNQUALIFIED69Ioni Bowcher
1002Chavez D PaprockiIndia2026-07-28Buckley Miller Wright RENEWAL89Anna Fali
1003Adams Q ChuiItaly2026-07-29King, Christopher A Esq NEGOTIATION51Asiya Javayant
1004Faith F RimGermany2026-07-12Chapman, Ross E Esq RENEWAL62Anna Fali
1005Costa O CaldareraBrazil2026-07-10Truhlar And Truhlar Attys RENEWAL71Ivan Magalhaes
1006Costa Q GarufiFrance2026-07-17Feiner Bros UNQUALIFIED65Asiya Javayant
1007Octavia C KuskoGermany2026-07-08Feiner Bros PROPOSAL88Anna Fali
1008Costa L StockhamRussia2026-07-21Truhlar And Truhlar Attys PROPOSAL89Elwin Sharvill
1009Morrow Y WaycottUnited Kingdom2026-07-11Morlong Associates NEW14Ioni Bowcher
1010Sinclair Z RutaFrance2026-07-22Morlong Associates UNQUALIFIED32Amy Elsner
1011Morrow Z SchemmerSpain2026-07-28King, Christopher A Esq QUALIFIED43Bernardo Dominic
1012Adams K CampainArgentina2026-07-12King, Christopher A Esq UNQUALIFIED77Asiya Javayant
1013Aditya C ShinkoIndia2026-07-30Truhlar And Truhlar Attys PROPOSAL17Ivan Magalhaes
1014Francesco Z CampainGermany2026-07-17Commercial Press UNQUALIFIED89Onyama Limba
1015Cody Y VenereItaly2026-07-27Chemel, James L Cpa UNQUALIFIED69Ioni Bowcher
1016Emily E BriddickRussia2026-07-04Dorl, James J Esq UNQUALIFIED72Stephen Shaw
1017Rodrigues T SaylorsCanada2026-07-27Rangoni Of Florence RENEWAL87Anna Fali
1018Maisha F PoquetteBrazil2026-07-12King, Christopher A Esq QUALIFIED35Stephen Shaw
1019Greenwood R CampainAustralia2026-07-24Chemel, James L Cpa PROPOSAL93Amy Elsner
1020Izzy A RimJapan2026-07-24Rangoni Of Florence UNQUALIFIED18Anna Fali
1021Izzy B NestleFrance2026-07-12Feiner Bros QUALIFIED35Elwin Sharvill
1022Faith X CaldareraFrance2026-07-03Printing Dimensions NEW8Asiya Javayant
1023Kaitlin Y MacleadAustralia2026-07-31Printing Dimensions UNQUALIFIED55Xuxue Feng
1024Morrow V PaprockiItaly2026-07-16Commercial Press RENEWAL82Ivan Magalhaes
1025Jones I DarakjySpain2026-07-28Chemel, James L Cpa QUALIFIED6Ioni Bowcher
1026Isabel O MarrierRussia2026-07-18Morlong Associates RENEWAL86Amy Elsner
1027Maisha P WaycottGermany2026-07-30Feltz Printing Service UNQUALIFIED53Xuxue Feng
1028Alejandro H MacleadGermany2026-07-12Commercial Press NEW18Bernardo Dominic
1029Stacey V WaycottIndia2026-07-24King, Christopher A Esq NEGOTIATION15Anna Fali
1030James S PaprockiGermany2026-07-27Printing Dimensions UNQUALIFIED56Xuxue Feng
1031Leja R CaudyGermany2026-07-05Chapman, Ross E Esq QUALIFIED74Asiya Javayant
1032Costa X MacleadFrance2026-07-09Benton, John B Jr UNQUALIFIED39Amy Elsner
1033Claire J TollnerIndia2026-07-31Chapman, Ross E Esq NEW39Onyama Limba
1034Wickens B MaletRussia2026-07-04Rangoni Of Florence NEW73Anna Fali
1035Kaitlin U NestleJapan2026-07-30Chanay, Jeffrey A Esq RENEWAL11Xuxue Feng
1036Silvio K InouyeIndia2026-07-24Rangoni Of Florence NEGOTIATION37Elwin Sharvill
1037Claire W FigeroaFrance2026-07-11Morlong Associates PROPOSAL88Bernardo Dominic
1038Mujtaba C AlbaresAustralia2026-07-05Commercial Press QUALIFIED68Amy Elsner
1039Jeanfrancois W GillianCanada2026-07-25Rangoni Of Florence UNQUALIFIED58Ivan Magalhaes
1040Jeanfrancois Q MarrierAustralia2026-07-08Buckley Miller Wright NEGOTIATION12Anna Fali
1041Greenwood V AlbaresFrance2026-07-02Chanay, Jeffrey A Esq RENEWAL11Stephen Shaw
1042Maria B OstroskyJapan2026-07-23King, Christopher A Esq UNQUALIFIED9Ioni Bowcher
1043Jennifer H PoquetteAustralia2026-07-16Commercial Press PROPOSAL33Onyama Limba
1044Aruna J IturbideJapan2026-07-19Chapman, Ross E Esq UNQUALIFIED45Bernardo Dominic
1045Mayumi D MarrierCanada2026-07-08Chemel, James L Cpa NEW24Stephen Shaw
1046Isabel B PaprockiSpain2026-07-07Morlong Associates QUALIFIED20Amy Elsner
1047Ivar R GauchoJapan2026-07-14Commercial Press UNQUALIFIED88Xuxue Feng
1048Jeanfrancois G OstroskyItaly2026-07-03Chemel, James L Cpa NEGOTIATION43Amy Elsner
1049David Q RulapaughCanada2026-07-27Rangoni Of Florence PROPOSAL45Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Juan M WieserUnited KingdomAmy Elsner RENEWAL
David M OldroydAustraliaIoni Bowcher NEGOTIATION
James Z ShinkoJapanBernardo Dominic RENEWAL
Deepesh I KolmetzSpainElwin Sharvill NEW
Mujtaba D OstroskyFranceIvan Magalhaes RENEWAL
Francesco U WaycottFranceXuxue Feng PROPOSAL
Kaitlin B RulapaughGermanyAnna Fali PROPOSAL
Stacey I BologniaUnited KingdomElwin Sharvill UNQUALIFIED
Julie Q VenereArgentinaElwin Sharvill NEGOTIATION
Cody Z OldroydGermanyIvan Magalhaes PROPOSAL
Ricardo A BriddickArgentinaIoni Bowcher NEW
Wickens U WaycottGermanyOnyama Limba NEGOTIATION
Aruna D SlusarskiItalyIvan Magalhaes NEW
Jennifer A MaletArgentinaAnna Fali NEW
Munro R FollerBrazilAsiya Javayant PROPOSAL
Darci U SergiFranceAmy Elsner NEW
Leja V GarufiIndiaOnyama Limba NEW
Francesco V GarufiCanadaOnyama Limba PROPOSAL
Emily Z SergiSpainAsiya Javayant RENEWAL
Antonio W SlusarskiSpainStephen Shaw NEW
Morrow R BologniaItalyElwin Sharvill PROPOSAL
Kaitlin J PaprockiFranceOnyama Limba PROPOSAL
Isabel S SchemmerFranceIoni Bowcher UNQUALIFIED
Stacey T DilliardArgentinaBernardo Dominic NEGOTIATION
Alejandro P RimCanadaAnna Fali PROPOSAL
Misaki M WhobreyRussiaElwin Sharvill QUALIFIED
Greenwood Q MarrierFranceBernardo Dominic NEW
Sinclair G OldroydCanadaOnyama Limba QUALIFIED
Isabel E PaprockiJapanIvan Magalhaes UNQUALIFIED
Wickens V RulapaughRussiaXuxue Feng PROPOSAL
Smith T InouyeCanadaAmy Elsner RENEWAL
Leon A GarufiGermanyOnyama Limba NEGOTIATION
Adams C WaycottAustraliaAsiya Javayant UNQUALIFIED
Rodrigues Y MaletItalyIvan Magalhaes RENEWAL
Nicolas K MarrierGermanyIoni Bowcher PROPOSAL
Clifford A RimJapanXuxue Feng UNQUALIFIED
Kadeem I FerenczItalyBernardo Dominic UNQUALIFIED
Julie K InouyeSpainElwin Sharvill UNQUALIFIED
Murillo U ShinkoItalyAnna Fali NEGOTIATION
Maria W SaylorsUnited KingdomElwin Sharvill RENEWAL
Costa W CaudyFranceAmy Elsner RENEWAL
Rodrigues H GillianItalyXuxue Feng RENEWAL
Alejandro B AlbaresBrazilXuxue Feng RENEWAL
Juan D RoysterIndiaOnyama Limba NEW
Maria A VenereIndiaOnyama Limba UNQUALIFIED
Wickens L MarrierRussiaIoni Bowcher NEW
Tony X BriddickRussiaIvan Magalhaes PROPOSAL
Maisha E KuskoArgentinaIvan Magalhaes NEGOTIATION
Jeanfrancois U OstroskyCanadaAnna Fali PROPOSAL
Francesco Z ShinkoFranceXuxue Feng PROPOSAL
Frozen Columns
Name
Cody Q Figeroa
Smith X Ferencz
Tony C Gaucho
Aruna R Venere
Silvio U Whobrey
Maria Y Gillian
Chavez R Inouye
Misaki J Rim
Darci Q Whobrey
Claire J Gaucho
Emily U Oldroyd
Octavia S Butt
Stacey P Flosi
Jones P Venere
Izzy G Bowley
Rodrigues V Saylors
Smith K Dilliard
Morrow L Nestle
Kaitlin F Schemmer
Ivar G Caudy
Octavia R Chui
Kaitlin M Butt
Aditya I Inouye
Tony W Slusarski
Adams H Maclead
Izzy A Butt
David D Perin
Munro C Malet
Clifford D Ruta
Rodrigues K Inouye
Maria Y Doe
Stacey A Poquette
Misaki E Marrier
Cody J Rim
Costa L Wieser
Deepesh H Stenseth
Deepesh N Albares
Greenwood X Marrier
Murillo D Stockham
Kadeem C Slusarski
Rodrigues Q Garufi
Maria Z Sergi
Chavez L Schemmer
Aruna V Venere
Juan W Bolognia
Morrow M Slusarski
Aditya F Tollner
Alejandro U Malet
Aditya N Nestle
James L Glick
IdCountryDate
1000United Kingdom2026-07-25
1001Spain2026-07-27
1002Australia2026-07-23
1003United Kingdom2026-07-28
1004Brazil2026-07-27
1005Australia2026-07-22
1006Spain2026-07-06
1007Brazil2026-07-25
1008Russia2026-07-29
1009Spain2026-07-03
1010Italy2026-07-04
1011India2026-07-22
1012Spain2026-07-26
1013Argentina2026-07-06
1014Russia2026-07-02
1015Canada2026-07-07
1016Germany2026-07-19
1017Italy2026-07-27
1018Brazil2026-07-18
1019Canada2026-07-03
1020India2026-07-10
1021Spain2026-07-05
1022Brazil2026-07-16
1023Japan2026-07-22
1024Japan2026-07-18
1025Spain2026-07-18
1026Spain2026-07-03
1027India2026-07-08
1028Australia2026-07-03
1029United Kingdom2026-07-05
1030Australia2026-07-09
1031Argentina2026-07-30
1032Argentina2026-07-12
1033Argentina2026-07-07
1034Argentina2026-07-29
1035Germany2026-07-13
1036Italy2026-07-24
1037Germany2026-07-19
1038Germany2026-07-27
1039Italy2026-07-29
1040Brazil2026-07-09
1041Russia2026-07-27
1042Germany2026-07-29
1043France2026-07-23
1044Argentina2026-07-12
1045Spain2026-07-10
1046Canada2026-07-29
1047Canada2026-07-08
1048Germany2026-07-10
1049Italy2026-07-14

On-Demand Data

NameIdCountryDate
David H Tollner1000France2026-07-30
Maria T Oldroyd1001Brazil2026-07-15
Stacey O Poquette1002Russia2026-07-29
Aika H Bolognia1003Australia2026-07-09
Aruna K Dilliard1004Italy2026-07-11
Misaki V Rim1005Argentina2026-07-10
Morrow E Chui1006Germany2026-07-23
Darci I Caudy1007Germany2026-07-15
Kadeem I Chui1008Italy2026-07-03
Wickens S Tollner1009Germany2026-07-23
Tony P Butt1010Spain2026-07-11
Ricardo K Caudy1011Japan2026-07-07
Kaitlin D Ruta1012Japan2026-07-18
Juan A Doe1013Russia2026-07-05
Arvin W Rim1014Germany2026-07-27
Johnson C Gillian1015Brazil2026-07-11
Smith L Amigon1016Australia2026-07-20
Darci B Campain1017Australia2026-07-12
Mujtaba R Morasca1018Canada2026-07-26
Deepesh O Tollner1019Spain2026-07-08
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Salvatore T WieserItalyStephen Shaw RENEWAL
Nicolas M FollerRussiaAmy Elsner NEGOTIATION
Darci N MaletUnited KingdomAnna Fali UNQUALIFIED
Smith R RimUnited KingdomElwin Sharvill NEW
Salvatore U VocelkaGermanyOnyama Limba PROPOSAL
Stacey J WieserAustraliaAmy Elsner QUALIFIED
Morrow J KolmetzCanadaOnyama Limba PROPOSAL
Izzy M RimGermanyAnna Fali NEW
Arvin P IturbideCanadaElwin Sharvill NEW
Octavia R MaletUnited KingdomElwin Sharvill UNQUALIFIED
Francesco H RimGermanyIoni Bowcher UNQUALIFIED
Arvin G ShinkoArgentinaXuxue Feng UNQUALIFIED
Tony R PaprockiCanadaAsiya Javayant QUALIFIED
Aditya P TollnerUnited KingdomStephen Shaw NEW
Juan B GarufiSpainXuxue Feng NEW
Juan R FollerFranceIvan Magalhaes QUALIFIED
Morrow W SergiJapanAnna Fali NEGOTIATION
Salvatore R StensethArgentinaOnyama Limba NEGOTIATION
Kaitlin P FollerAustraliaStephen Shaw PROPOSAL
Chavez X KolmetzItalyBernardo Dominic UNQUALIFIED
Jennifer T MaletGermanyAmy Elsner NEGOTIATION
Clifford R CaldareraAustraliaAnna Fali UNQUALIFIED
Smith R IturbideItalyBernardo Dominic RENEWAL
Aruna Q MarrierAustraliaIvan Magalhaes UNQUALIFIED
Claire U MaletBrazilOnyama Limba UNQUALIFIED
Mujtaba P WhobreyAustraliaXuxue Feng UNQUALIFIED
Faith I ButtCanadaAsiya Javayant RENEWAL
David L GauchoArgentinaOnyama Limba NEW
Kaitlin L CaudyRussiaOnyama Limba QUALIFIED
Aditya E BriddickGermanyBernardo Dominic RENEWAL
Alejandro X RutaUnited KingdomBernardo Dominic PROPOSAL
Greenwood L ButtFranceBernardo Dominic UNQUALIFIED
Octavia K PoquetteAustraliaIoni Bowcher PROPOSAL
Misaki E GlickAustraliaAmy Elsner NEW
Kaitlin G MarrierRussiaOnyama Limba RENEWAL
Munro Y GauchoFranceAsiya Javayant NEGOTIATION
Ricardo T VocelkaUnited KingdomIoni Bowcher NEGOTIATION
Emily I VenereBrazilBernardo Dominic QUALIFIED
Ivar X BriddickIndiaAmy Elsner QUALIFIED
David F CaudyGermanyOnyama Limba QUALIFIED

<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>