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
Tony G BologniaArgentinaAnna Fali UNQUALIFIED
Maria E PaprockiCanadaElwin Sharvill PROPOSAL
James U RimArgentinaStephen Shaw NEW
Morrow I SchemmerGermanyIvan Magalhaes PROPOSAL
Aruna I StockhamIndiaAmy Elsner RENEWAL
Leon C SlusarskiGermanyAsiya Javayant NEGOTIATION
Deepesh B FlosiIndiaBernardo Dominic NEW
Silvio F PerinRussiaIoni Bowcher NEW
Octavia B GarufiJapanBernardo Dominic RENEWAL
Jeanfrancois O GauchoRussiaAmy Elsner PROPOSAL
Mujtaba H MaletJapanAmy Elsner RENEWAL
Antonio F BriddickBrazilElwin Sharvill RENEWAL
Clifford T GillianRussiaIvan Magalhaes QUALIFIED
Munro E BowleyItalyAmy Elsner RENEWAL
Kadeem X FigeroaCanadaIoni Bowcher QUALIFIED
Nicolas H ShinkoSpainAnna Fali NEGOTIATION
Costa Z StockhamSpainAsiya Javayant QUALIFIED
Antonio K GarufiRussiaStephen Shaw NEGOTIATION
Aika Z GillianBrazilAmy Elsner NEGOTIATION
Johnson L OldroydGermanyAmy Elsner PROPOSAL
Adams Y PaprockiIndiaOnyama Limba NEW
Leja W DarakjyArgentinaStephen Shaw NEGOTIATION
Rodrigues K PaprockiUnited KingdomAsiya Javayant RENEWAL
Emily Y DarakjyArgentinaOnyama Limba UNQUALIFIED
Chavez G RulapaughFranceStephen Shaw PROPOSAL
James J InouyeSpainIoni Bowcher NEGOTIATION
Leon G PerinCanadaBernardo Dominic QUALIFIED
Mayumi N GillianIndiaIoni Bowcher RENEWAL
Silvio I BriddickAustraliaAsiya Javayant PROPOSAL
Mayumi M CaldareraBrazilIoni Bowcher PROPOSAL
Sinclair S GillianFranceXuxue Feng NEGOTIATION
Sinclair B ChuiAustraliaAmy Elsner NEGOTIATION
Kaitlin A CaldareraArgentinaOnyama Limba UNQUALIFIED
Isabel V RimFranceAnna Fali UNQUALIFIED
Silvio W RimJapanXuxue Feng NEW
Arvin D BowleyUnited KingdomIvan Magalhaes NEW
Silvio U IturbideRussiaStephen Shaw PROPOSAL
Faith Q FollerJapanAmy Elsner PROPOSAL
Emily X FerenczUnited KingdomOnyama Limba QUALIFIED
Maria G RoysterArgentinaOnyama Limba UNQUALIFIED
Clifford I NestleRussiaAnna Fali RENEWAL
Clifford X GillianAustraliaIoni Bowcher NEW
James K BowleyIndiaBernardo Dominic NEGOTIATION
Ricardo E GlickUnited KingdomElwin Sharvill UNQUALIFIED
Nicolas I PerinIndiaIvan Magalhaes QUALIFIED
Arvin F SaylorsRussiaIvan Magalhaes PROPOSAL
Jones X IturbideSpainElwin Sharvill NEW
Kaitlin P RulapaughItalyAsiya Javayant UNQUALIFIED
Morrow U SlusarskiJapanAsiya Javayant QUALIFIED
Leja G NickaRussiaIvan Magalhaes PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Morrow M MaletArgentinaElwin Sharvill NEGOTIATION
Antonio R BologniaRussiaAnna Fali NEGOTIATION
Mujtaba Z GlickCanadaBernardo Dominic NEW
Ashley F NestleAustraliaAmy Elsner UNQUALIFIED
Ricardo G VenereJapanAsiya Javayant QUALIFIED
Costa Q PaprockiJapanStephen Shaw QUALIFIED
Greenwood P MaletAustraliaIoni Bowcher PROPOSAL
Ivar K MaletFranceOnyama Limba PROPOSAL
Deepesh X CaldareraAustraliaIvan Magalhaes RENEWAL
Tony K ButtGermanyElwin Sharvill NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Kaitlin W PerinGermany2026-07-26Chemel, James L Cpa PROPOSAL20Asiya Javayant
1001Greenwood V RoysterJapan2026-07-16Chanay, Jeffrey A Esq QUALIFIED16Asiya Javayant
1002Kadeem U MarrierAustralia2026-07-16Chemel, James L Cpa QUALIFIED26Onyama Limba
1003Faith E IturbideSpain2026-07-15Feiner Bros UNQUALIFIED66Amy Elsner
1004Juan K WhobreyJapan2026-07-28Commercial Press PROPOSAL67Onyama Limba
1005James G CampainUnited Kingdom2026-07-19Dorl, James J Esq UNQUALIFIED96Asiya Javayant
1006Maisha B RoysterJapan2026-07-30Feltz Printing Service NEW59Ioni Bowcher
1007Rodrigues H WhobreyAustralia2026-07-23Dorl, James J Esq NEW81Elwin Sharvill
1008Misaki I SaylorsItaly2026-07-08Printing Dimensions QUALIFIED90Xuxue Feng
1009Wickens I CaldareraUnited Kingdom2026-07-09Morlong Associates RENEWAL81Anna Fali
1010Johnson O CaldareraBrazil2026-07-25Morlong Associates NEW27Bernardo Dominic
1011Chavez T ButtSpain2026-08-01Feltz Printing Service PROPOSAL27Ivan Magalhaes
1012Ivar H GlickCanada2026-07-31Chanay, Jeffrey A Esq RENEWAL57Ioni Bowcher
1013Tony P FerenczSpain2026-07-08Rousseaux, Michael Esq NEGOTIATION74Anna Fali
1014Aika J RulapaughFrance2026-07-07Rousseaux, Michael Esq NEW56Amy Elsner
1015Misaki O SergiIndia2026-07-26Feltz Printing Service RENEWAL82Asiya Javayant
1016Jefferson B ButtCanada2026-07-27Rousseaux, Michael Esq UNQUALIFIED33Xuxue Feng
1017Mujtaba U MaletFrance2026-07-04Commercial Press NEGOTIATION27Bernardo Dominic
1018Rodrigues D DilliardSpain2026-07-04Chemel, James L Cpa QUALIFIED80Asiya Javayant
1019Maisha D RulapaughSpain2026-07-05Morlong Associates PROPOSAL76Stephen Shaw
1020Francesco A SchemmerCanada2026-07-24Feiner Bros RENEWAL17Xuxue Feng
1021Tony N MaletJapan2026-07-28Truhlar And Truhlar Attys QUALIFIED53Onyama Limba
1022Ricardo Z SlusarskiArgentina2026-07-08Feiner Bros RENEWAL57Ivan Magalhaes
1023Nicolas V ShinkoArgentina2026-07-27Feiner Bros RENEWAL60Bernardo Dominic
1024Stacey B OldroydBrazil2026-07-17Dorl, James J Esq PROPOSAL28Ioni Bowcher
1025Aika W CampainCanada2026-07-13Rangoni Of Florence UNQUALIFIED20Xuxue Feng
1026Jeanfrancois V IturbideSpain2026-07-24Chanay, Jeffrey A Esq PROPOSAL88Bernardo Dominic
1027Misaki R FerenczGermany2026-07-11Chemel, James L Cpa PROPOSAL19Bernardo Dominic
1028Aditya K PaprockiIndia2026-07-22Feiner Bros RENEWAL45Bernardo Dominic
1029Maisha T SlusarskiGermany2026-07-12Rangoni Of Florence NEGOTIATION11Onyama Limba
1030Kaitlin W InouyeGermany2026-07-03Truhlar And Truhlar Attys UNQUALIFIED41Elwin Sharvill
1031Deepesh N StockhamJapan2026-07-03Printing Dimensions NEGOTIATION12Anna Fali
1032Silvio O WaycottBrazil2026-07-11Feltz Printing Service UNQUALIFIED13Onyama Limba
1033Misaki C WaycottUnited Kingdom2026-07-16Chapman, Ross E Esq NEW15Anna Fali
1034Ivar E VocelkaJapan2026-08-01Printing Dimensions PROPOSAL58Stephen Shaw
1035Nicolas D SaylorsIndia2026-07-06Feiner Bros QUALIFIED4Stephen Shaw
1036Jeanfrancois K MaletCanada2026-07-03Buckley Miller Wright NEGOTIATION34Asiya Javayant
1037Morrow Y DarakjyItaly2026-07-30Printing Dimensions UNQUALIFIED29Onyama Limba
1038Aruna G AlbaresAustralia2026-07-09Chapman, Ross E Esq NEW39Elwin Sharvill
1039Maisha O MorascaCanada2026-07-07King, Christopher A Esq NEW88Elwin Sharvill
1040Antonio S CaudyGermany2026-07-14Morlong Associates QUALIFIED51Xuxue Feng
1041Kadeem L PerinItaly2026-07-19Rousseaux, Michael Esq QUALIFIED70Ivan Magalhaes
1042Mayumi U StensethUnited Kingdom2026-07-04Buckley Miller Wright NEGOTIATION10Bernardo Dominic
1043Ashley O FollerItaly2026-07-22Commercial Press RENEWAL42Asiya Javayant
1044Munro A WieserRussia2026-07-10Truhlar And Truhlar Attys RENEWAL67Asiya Javayant
1045Jefferson X DarakjyArgentina2026-07-28Rousseaux, Michael Esq QUALIFIED42Onyama Limba
1046Aruna N MaletFrance2026-07-18Chapman, Ross E Esq RENEWAL98Anna Fali
1047Cody E GauchoJapan2026-07-23Buckley Miller Wright NEGOTIATION20Amy Elsner
1048Jeanfrancois E PerinFrance2026-07-05Dorl, James J Esq QUALIFIED92Bernardo Dominic
1049Adams D MorascaArgentina2026-07-24Buckley Miller Wright PROPOSAL59Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Jennifer V TollnerArgentinaOnyama Limba UNQUALIFIED
Jeanfrancois U GillianUnited KingdomStephen Shaw NEW
Murillo L DoeItalyBernardo Dominic NEW
Darci S SlusarskiFranceStephen Shaw NEW
Ivar K MarrierIndiaBernardo Dominic NEGOTIATION
Nicolas S SchemmerRussiaStephen Shaw PROPOSAL
Salvatore P RoysterRussiaAnna Fali QUALIFIED
Ashley K SaylorsItalyElwin Sharvill PROPOSAL
Francesco D NickaIndiaXuxue Feng NEGOTIATION
Leja S WieserRussiaAsiya Javayant PROPOSAL
Julie D DoeGermanyElwin Sharvill NEW
Clifford V InouyeBrazilAsiya Javayant RENEWAL
Aruna I RutaSpainAsiya Javayant PROPOSAL
Emily S ButtFranceAnna Fali NEW
Izzy J NestleItalyAsiya Javayant NEGOTIATION
David C SchemmerIndiaElwin Sharvill RENEWAL
Antonio O PoquetteUnited KingdomStephen Shaw UNQUALIFIED
Misaki R DarakjyCanadaAmy Elsner NEW
Cody V GlickArgentinaStephen Shaw QUALIFIED
Arvin N WieserAustraliaAmy Elsner NEW
Chavez P PoquetteAustraliaAsiya Javayant RENEWAL
Deepesh I CaudyItalyAmy Elsner UNQUALIFIED
Ivar V CampainIndiaOnyama Limba NEW
Leon H KolmetzBrazilStephen Shaw NEGOTIATION
Rodrigues H WieserRussiaStephen Shaw NEGOTIATION
Isabel S DarakjyIndiaStephen Shaw PROPOSAL
Juan D SchemmerSpainOnyama Limba PROPOSAL
Emily F PoquetteAustraliaAsiya Javayant PROPOSAL
Murillo G SergiSpainAsiya Javayant UNQUALIFIED
Adams G KuskoRussiaAsiya Javayant NEW
Clifford Y BologniaSpainAmy Elsner PROPOSAL
Claire Z WieserGermanyElwin Sharvill QUALIFIED
Wickens O SaylorsJapanOnyama Limba PROPOSAL
Chavez W PerinBrazilOnyama Limba UNQUALIFIED
Faith U DilliardCanadaOnyama Limba QUALIFIED
Morrow N ChuiRussiaAmy Elsner NEW
David E FlosiBrazilIoni Bowcher UNQUALIFIED
Isabel J AmigonFranceAmy Elsner QUALIFIED
Juan C SlusarskiFranceAmy Elsner UNQUALIFIED
Jeanfrancois V SaylorsJapanXuxue Feng NEGOTIATION
Leon I PoquetteIndiaAsiya Javayant RENEWAL
Antonio Z SaylorsJapanIoni Bowcher UNQUALIFIED
Sinclair J BriddickSpainIvan Magalhaes NEGOTIATION
Jefferson L OldroydUnited KingdomAnna Fali PROPOSAL
Francesco X VocelkaSpainAsiya Javayant RENEWAL
Mujtaba M GauchoGermanyAsiya Javayant RENEWAL
Misaki O ChuiIndiaIoni Bowcher UNQUALIFIED
Claire P WaycottAustraliaIvan Magalhaes RENEWAL
Antonio B IturbideGermanyElwin Sharvill QUALIFIED
Johnson C ShinkoArgentinaAmy Elsner QUALIFIED
Frozen Columns
Name
Ashley L Wieser
Rodrigues I Albares
Kadeem Q Rim
Isabel J Stenseth
Antonio Y Ferencz
Chavez P Doe
Emily V Inouye
Maisha A Amigon
Claire W Kolmetz
Jefferson T Poquette
Munro B Caudy
Antonio W Dilliard
Munro K Doe
Emily B Tollner
Alejandro O Caudy
Greenwood Y Darakjy
Jefferson X Gillian
Kadeem O Sergi
Aditya R Bowley
Murillo D Royster
Clifford Y Albares
Faith S Ruta
Chavez V Chui
Emily P Royster
Alejandro Z Chui
Clifford M Royster
Rodrigues R Gaucho
Faith I Iturbide
Morrow X Poquette
Arvin Y Iturbide
Izzy V Stenseth
Claire F Slusarski
Aditya T Caudy
Chavez Z Flosi
Darci S Foller
Maisha C Glick
Sinclair F Glick
Wickens P Malet
David I Shinko
Kaitlin I Bowley
Francesco Z Chui
Maria Y Iturbide
Faith I Garufi
Salvatore O Waycott
Ricardo R Inouye
Silvio H Poquette
Cody P Ostrosky
Arvin G Vocelka
Salvatore N Kolmetz
Clifford K Oldroyd
IdCountryDate
1000Italy2026-07-24
1001Brazil2026-07-16
1002Argentina2026-07-19
1003Russia2026-07-15
1004Spain2026-07-29
1005Australia2026-07-23
1006India2026-07-06
1007Brazil2026-07-05
1008India2026-07-30
1009United Kingdom2026-07-24
1010Italy2026-07-19
1011Brazil2026-07-06
1012Japan2026-07-07
1013Canada2026-07-30
1014Russia2026-07-13
1015Australia2026-07-30
1016India2026-07-17
1017Australia2026-07-21
1018Spain2026-07-27
1019Argentina2026-07-21
1020Russia2026-07-03
1021Russia2026-07-09
1022United Kingdom2026-07-30
1023Argentina2026-07-28
1024France2026-07-04
1025Germany2026-07-23
1026Canada2026-07-10
1027France2026-08-01
1028Italy2026-07-30
1029Russia2026-07-04
1030Argentina2026-07-17
1031Spain2026-07-26
1032Canada2026-07-06
1033Argentina2026-07-11
1034Italy2026-07-25
1035Japan2026-07-06
1036India2026-07-24
1037Brazil2026-07-06
1038Japan2026-07-06
1039Canada2026-07-13
1040United Kingdom2026-07-04
1041Italy2026-07-06
1042France2026-07-08
1043Spain2026-08-01
1044Italy2026-07-21
1045Italy2026-07-30
1046Brazil2026-07-20
1047Australia2026-07-12
1048United Kingdom2026-07-31
1049Spain2026-07-05

On-Demand Data

NameIdCountryDate
Rodrigues M Gillian1000India2026-07-14
Smith L Perin1001Brazil2026-07-16
Sinclair Q Malet1002Australia2026-07-14
Chavez P Stockham1003Australia2026-07-20
Kaitlin W Saylors1004Brazil2026-07-17
Smith W Albares1005France2026-07-10
Juan R Malet1006Australia2026-07-19
Smith H Ostrosky1007France2026-08-01
Isabel H Inouye1008Argentina2026-07-08
Jefferson P Campain1009Germany2026-07-25
Rodrigues I Caldarera1010Brazil2026-07-13
Adams B Ruta1011Japan2026-07-15
Sinclair B Albares1012France2026-07-22
Deepesh K Campain1013Germany2026-07-12
Ivar B Dilliard1014Brazil2026-07-06
Antonio Z Garufi1015Germany2026-08-01
Darci B Rim1016Russia2026-07-21
Aruna M Bolognia1017Russia2026-07-14
Nicolas F Slusarski1018Canada2026-07-26
Smith R Iturbide1019Spain2026-07-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Misaki G KuskoRussiaIoni Bowcher RENEWAL
Clifford K MaletUnited KingdomBernardo Dominic RENEWAL
Mujtaba V RimCanadaOnyama Limba QUALIFIED
James C GauchoSpainBernardo Dominic UNQUALIFIED
Leon Z SergiItalyBernardo Dominic NEGOTIATION
Smith E PoquetteIndiaElwin Sharvill NEGOTIATION
Arvin T InouyeRussiaIvan Magalhaes QUALIFIED
Octavia Q PaprockiFranceOnyama Limba NEW
Arvin U MacleadBrazilAsiya Javayant NEGOTIATION
Juan D MaletAustraliaIvan Magalhaes NEGOTIATION
Francesco M GauchoFranceAnna Fali NEW
Stacey C SlusarskiSpainIoni Bowcher QUALIFIED
Mujtaba P NestleSpainXuxue Feng UNQUALIFIED
Nicolas Y BriddickRussiaOnyama Limba UNQUALIFIED
Arvin M GarufiUnited KingdomXuxue Feng NEW
Rodrigues J PaprockiBrazilAsiya Javayant QUALIFIED
Adams B DarakjyAustraliaIvan Magalhaes NEW
Stacey E RimCanadaElwin Sharvill QUALIFIED
Francesco W SlusarskiAustraliaBernardo Dominic RENEWAL
Wickens V CampainBrazilBernardo Dominic PROPOSAL
Aika X WaycottSpainOnyama Limba PROPOSAL
Kaitlin I GauchoIndiaStephen Shaw UNQUALIFIED
Antonio T IturbideUnited KingdomAsiya Javayant NEGOTIATION
Rodrigues R FerenczGermanyBernardo Dominic UNQUALIFIED
Mayumi F AlbaresItalyXuxue Feng PROPOSAL
Chavez H GlickRussiaBernardo Dominic PROPOSAL
Munro M FlosiAustraliaXuxue Feng NEGOTIATION
Leja K AlbaresJapanAnna Fali QUALIFIED
Jennifer U BologniaItalyXuxue Feng QUALIFIED
Julie M AmigonCanadaAnna Fali RENEWAL
Smith D GlickFranceStephen Shaw NEW
Julie E TollnerIndiaAmy Elsner NEW
Aika C OldroydJapanIoni Bowcher PROPOSAL
Adams O CaudyItalyAnna Fali NEW
Faith K IturbideAustraliaOnyama Limba PROPOSAL
Izzy T FollerJapanAmy Elsner QUALIFIED
Francesco N WieserBrazilStephen Shaw PROPOSAL
Jennifer N GarufiUnited KingdomAmy Elsner NEGOTIATION
David Z PerinCanadaAsiya Javayant RENEWAL
Clifford R GauchoIndiaAmy Elsner UNQUALIFIED

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