Locale

Change the locale of the datepicker, schedule and client side validation messages.

Language
English
French
German
Italian
Korean
Spanish
Catalan
Dutch
Portuguese
Portuguese
Arabic
Czech
Greek
Persian
Hindi
Indonesian
Croatian
Japanese
Hungarian
Hebrew
Georgian
Lithuanian
Latvian
Norwegian
Polish
Romanian
Russian
Slovak
Slovenian
Serbian
Swedish
Turkish
Ukrainian
Vietnamese
Chinese
Chinese

Input Style

Free Themes

Built-in component themes created by the PrimeFaces Theme Designer.

PrimeOne Design

Saga Saga
Vela Vela
Arya Arya

Premium Themes

Premium themes are only available exclusively for PrimeFaces Theme Designer subscribers and therefore not included in PrimeFaces core.

Bootstrap light blue and dark blue themes are also included in PrimeFaces 10.x builds for Elite subscribers.

bootstrap4-blue-light Bootstrap Blue
bootstrap4-purple-light Bootstrap Purple
bootstrap4-blue-dark Bootstrap Blue
bootstrap4-purple-dark Bootstrap Purple

Legacy Free Themes

Luna Amber Luna Amber
Luna Blue Luna Blue
Luna Green Luna Green
Luna Pink Luna Pink
Nova Nova
Nova Nova Alt
Nova Nova Accent

PREMIUM TEMPLATES

Create awesome applications in no time using the premium templates and impress your users.

DataTable Scroll

Both vertical and horizontal scrolling of the data is supported with optional frozen rows-columns and on-demand loading features.

Vertical
NameCountryRepresentativeStatus
Octavia O CampainRussiaElwin Sharvill UNQUALIFIED
Izzy N SergiUnited KingdomAnna Fali NEW
Isabel C ChuiJapanOnyama Limba NEGOTIATION
Morrow B MaletBrazilBernardo Dominic NEGOTIATION
Izzy W GlickSpainIoni Bowcher NEGOTIATION
Isabel S CaldareraGermanyIvan Magalhaes UNQUALIFIED
Francesco W AlbaresArgentinaAsiya Javayant PROPOSAL
Wickens V AlbaresItalyAsiya Javayant NEGOTIATION
Arvin J RulapaughIndiaIoni Bowcher NEW
Wickens U RimJapanOnyama Limba RENEWAL
Leja J DilliardRussiaAsiya Javayant NEW
Aika A IturbideItalyBernardo Dominic NEGOTIATION
Maria Y RoysterUnited KingdomStephen Shaw NEGOTIATION
Aruna M ButtCanadaIoni Bowcher NEW
Jones B KuskoAustraliaIvan Magalhaes NEW
Kadeem I NickaItalyIoni Bowcher NEGOTIATION
Cody L FigeroaCanadaAnna Fali QUALIFIED
Kadeem U MaletBrazilIoni Bowcher NEGOTIATION
Aditya X NickaJapanAsiya Javayant UNQUALIFIED
James N FollerRussiaIoni Bowcher NEW
Jennifer V OldroydFranceAsiya Javayant RENEWAL
Cody I OstroskyItalyOnyama Limba RENEWAL
Claire X SlusarskiItalyIoni Bowcher RENEWAL
Clifford J StensethIndiaAnna Fali QUALIFIED
Salvatore B SlusarskiJapanXuxue Feng PROPOSAL
Leja V DarakjyCanadaXuxue Feng UNQUALIFIED
Mayumi W RimRussiaStephen Shaw UNQUALIFIED
Clifford P RoysterIndiaBernardo Dominic QUALIFIED
Francesco Z ChuiBrazilIvan Magalhaes NEW
Murillo A GarufiFranceAsiya Javayant RENEWAL
Aditya S SaylorsBrazilIoni Bowcher PROPOSAL
Ivar D RimGermanyIvan Magalhaes QUALIFIED
James T MarrierRussiaAmy Elsner QUALIFIED
Ricardo T ShinkoAustraliaAsiya Javayant RENEWAL
Juan B StockhamJapanAsiya Javayant NEW
Isabel U ButtArgentinaIvan Magalhaes RENEWAL
Cody C RulapaughBrazilAsiya Javayant UNQUALIFIED
Julie C RutaSpainElwin Sharvill UNQUALIFIED
Munro U PoquetteCanadaBernardo Dominic QUALIFIED
Arvin O ChuiIndiaXuxue Feng NEW
Emily M BriddickArgentinaIoni Bowcher NEGOTIATION
Jones F NestleArgentinaIoni Bowcher NEW
David S SchemmerIndiaStephen Shaw NEGOTIATION
Claire Q FigeroaFranceOnyama Limba NEW
Alejandro R CaudyAustraliaXuxue Feng NEW
Julie O DoeIndiaAnna Fali QUALIFIED
Ivar D OldroydRussiaIoni Bowcher PROPOSAL
Sinclair X SlusarskiRussiaIvan Magalhaes UNQUALIFIED
Jeanfrancois R StensethArgentinaAnna Fali QUALIFIED
Antonio N ChuiGermanyElwin Sharvill NEW
Horizontal
NameCountryRepresentativeStatus
Arvin F WhobreyUnited KingdomAmy Elsner PROPOSAL
Alejandro R WhobreyJapanStephen Shaw QUALIFIED
Kadeem U RutaRussiaBernardo Dominic NEGOTIATION
Antonio Q GauchoUnited KingdomAnna Fali RENEWAL
Tony J GauchoBrazilIvan Magalhaes PROPOSAL
Tony O PaprockiCanadaOnyama Limba UNQUALIFIED
Arvin C ChuiAustraliaElwin Sharvill RENEWAL
Chavez B CaudyUnited KingdomStephen Shaw NEW
Aika F VocelkaJapanIvan Magalhaes NEGOTIATION
Cody C RulapaughFranceAsiya Javayant NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Julie I VocelkaJapan2024-04-08Feiner Bros NEGOTIATION71Asiya Javayant
1001Salvatore K GarufiSpain2024-04-10Buckley Miller Wright QUALIFIED51Amy Elsner
1002Silvio Z StensethCanada2024-04-21Rousseaux, Michael Esq UNQUALIFIED41Ioni Bowcher
1003Misaki L FollerGermany2024-04-07Truhlar And Truhlar Attys PROPOSAL47Bernardo Dominic
1004Mayumi O BologniaFrance2024-04-15Feltz Printing Service NEGOTIATION57Xuxue Feng
1005Kaitlin U OldroydIndia2024-03-30Truhlar And Truhlar Attys PROPOSAL4Xuxue Feng
1006Kaitlin C OldroydSpain2024-04-25Benton, John B Jr QUALIFIED73Anna Fali
1007Aditya U GarufiArgentina2024-04-24Chapman, Ross E Esq RENEWAL48Ivan Magalhaes
1008Tony N SchemmerJapan2024-04-26Feltz Printing Service PROPOSAL91Bernardo Dominic
1009Faith P DoeSpain2024-04-06Rangoni Of Florence UNQUALIFIED0Xuxue Feng
1010Chavez J SlusarskiAustralia2024-04-06Chemel, James L Cpa RENEWAL96Stephen Shaw
1011Izzy L WaycottSpain2024-04-14King, Christopher A Esq UNQUALIFIED17Ivan Magalhaes
1012Isabel E VenereItaly2024-04-10Commercial Press PROPOSAL28Ivan Magalhaes
1013Kaitlin N RimFrance2024-04-05Buckley Miller Wright NEGOTIATION10Elwin Sharvill
1014Juan X AlbaresIndia2024-04-23Morlong Associates RENEWAL1Ioni Bowcher
1015Murillo U TollnerCanada2024-04-24Chemel, James L Cpa RENEWAL97Asiya Javayant
1016Kadeem I NestleUnited Kingdom2024-04-24Buckley Miller Wright PROPOSAL80Stephen Shaw
1017Arvin T PoquetteGermany2024-04-20Rousseaux, Michael Esq UNQUALIFIED3Xuxue Feng
1018Arvin V PoquetteJapan2024-04-13Rangoni Of Florence UNQUALIFIED61Asiya Javayant
1019James B RulapaughItaly2024-04-01Chanay, Jeffrey A Esq UNQUALIFIED47Bernardo Dominic
1020Faith Z BowleyBrazil2024-04-02Chemel, James L Cpa NEGOTIATION50Amy Elsner
1021Wickens N CaudySpain2024-04-23Feltz Printing Service RENEWAL43Bernardo Dominic
1022Stacey Y KolmetzUnited Kingdom2024-04-17Dorl, James J Esq NEW39Asiya Javayant
1023Izzy Q FollerGermany2024-04-18Feiner Bros NEW90Asiya Javayant
1024Tony P VenereBrazil2024-04-19Rousseaux, Michael Esq RENEWAL28Ivan Magalhaes
1025Emily C BologniaArgentina2024-04-18Benton, John B Jr NEGOTIATION10Amy Elsner
1026Alejandro G MorascaCanada2024-04-26Benton, John B Jr RENEWAL52Anna Fali
1027Misaki L CaldareraGermany2024-03-31Chapman, Ross E Esq QUALIFIED1Ivan Magalhaes
1028Sinclair X WieserIndia2024-04-15Rangoni Of Florence NEW67Ioni Bowcher
1029Johnson C GillianJapan2024-04-20Benton, John B Jr PROPOSAL46Amy Elsner
1030Maisha J SlusarskiSpain2024-04-15Rousseaux, Michael Esq NEGOTIATION25Elwin Sharvill
1031Greenwood K MarrierJapan2024-04-17Chapman, Ross E Esq NEW75Stephen Shaw
1032Aruna O GlickArgentina2024-04-08Commercial Press UNQUALIFIED14Ioni Bowcher
1033Emily S RutaAustralia2024-04-01Truhlar And Truhlar Attys PROPOSAL79Stephen Shaw
1034Francesco J ButtRussia2024-04-24Printing Dimensions NEW93Amy Elsner
1035Greenwood C RoysterItaly2024-04-25Commercial Press UNQUALIFIED84Amy Elsner
1036Morrow P CaldareraSpain2024-04-22Benton, John B Jr UNQUALIFIED38Bernardo Dominic
1037Nicolas A PaprockiIndia2024-04-19Printing Dimensions RENEWAL23Xuxue Feng
1038Francesco C DilliardSpain2024-03-28Buckley Miller Wright UNQUALIFIED46Onyama Limba
1039Jennifer J StockhamArgentina2024-04-15Commercial Press UNQUALIFIED73Ioni Bowcher
1040Misaki D CaudyAustralia2024-04-15Commercial Press UNQUALIFIED80Stephen Shaw
1041Jennifer K PerinArgentina2024-04-16Morlong Associates RENEWAL17Bernardo Dominic
1042Murillo W MorascaCanada2024-03-28Dorl, James J Esq UNQUALIFIED86Anna Fali
1043Kadeem U OldroydCanada2024-04-14Dorl, James J Esq NEW36Stephen Shaw
1044Munro Y FlosiSpain2024-04-14Buckley Miller Wright QUALIFIED55Anna Fali
1045Ashley N RulapaughRussia2024-04-26Printing Dimensions PROPOSAL11Stephen Shaw
1046Mujtaba C PoquetteArgentina2024-04-01Feiner Bros RENEWAL58Anna Fali
1047Nicolas I KolmetzJapan2024-04-02Benton, John B Jr RENEWAL39Anna Fali
1048James D BowleyCanada2024-03-30Chemel, James L Cpa PROPOSAL87Ioni Bowcher
1049Antonio B PaprockiGermany2024-04-11Dorl, James J Esq NEGOTIATION55Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Octavia S KuskoGermanyAsiya Javayant NEGOTIATION
Aika I WhobreyArgentinaXuxue Feng UNQUALIFIED
Leon L WaycottUnited KingdomXuxue Feng NEW
Ricardo R AmigonJapanIvan Magalhaes RENEWAL
Aruna T FlosiGermanyStephen Shaw RENEWAL
Juan W FollerCanadaAsiya Javayant QUALIFIED
Costa M FerenczSpainXuxue Feng NEW
Wickens W RulapaughBrazilXuxue Feng PROPOSAL
Darci O AlbaresAustraliaIvan Magalhaes UNQUALIFIED
Johnson L DoeAustraliaOnyama Limba RENEWAL
Clifford I PerinGermanyAmy Elsner PROPOSAL
Tony J PerinFranceAnna Fali QUALIFIED
Chavez U MaletGermanyXuxue Feng NEW
Juan C DarakjyIndiaElwin Sharvill QUALIFIED
Maisha D CaldareraJapanXuxue Feng NEGOTIATION
Antonio A DoeArgentinaXuxue Feng UNQUALIFIED
David V ShinkoUnited KingdomBernardo Dominic UNQUALIFIED
Tony X FerenczFranceOnyama Limba QUALIFIED
Isabel K SergiBrazilStephen Shaw QUALIFIED
Kadeem W ButtAustraliaBernardo Dominic UNQUALIFIED
Julie D VocelkaBrazilBernardo Dominic NEGOTIATION
Adams Q VenereGermanyBernardo Dominic RENEWAL
Juan M SaylorsSpainOnyama Limba RENEWAL
Claire O KuskoArgentinaAmy Elsner QUALIFIED
Murillo X AmigonArgentinaStephen Shaw QUALIFIED
Kaitlin Y StensethIndiaOnyama Limba PROPOSAL
Isabel F WieserArgentinaAnna Fali UNQUALIFIED
Francesco B PoquetteRussiaXuxue Feng RENEWAL
Sinclair U CaudyJapanStephen Shaw NEGOTIATION
Julie G AmigonFranceElwin Sharvill QUALIFIED
Julie O DoeBrazilAnna Fali QUALIFIED
Salvatore E MacleadArgentinaIvan Magalhaes QUALIFIED
Jeanfrancois F NickaArgentinaAmy Elsner NEW
Tony Q OstroskyBrazilAnna Fali UNQUALIFIED
Jennifer B NickaBrazilAnna Fali NEGOTIATION
Stacey J WaycottItalyIvan Magalhaes QUALIFIED
James F DilliardJapanIvan Magalhaes PROPOSAL
Misaki Y InouyeFranceElwin Sharvill NEGOTIATION
Jeanfrancois N VocelkaJapanStephen Shaw UNQUALIFIED
Rodrigues G ChuiItalyElwin Sharvill UNQUALIFIED
Adams W CampainIndiaBernardo Dominic NEW
Jeanfrancois H StensethIndiaOnyama Limba PROPOSAL
Ashley O AmigonJapanOnyama Limba RENEWAL
Stacey B BologniaIndiaElwin Sharvill PROPOSAL
Misaki P PoquetteJapanIoni Bowcher NEW
Isabel K ShinkoIndiaOnyama Limba RENEWAL
Ricardo G WhobreyFranceElwin Sharvill NEGOTIATION
Darci V RoysterBrazilAnna Fali PROPOSAL
Jefferson Y KolmetzBrazilXuxue Feng QUALIFIED
Mayumi C MaletFranceStephen Shaw PROPOSAL
Frozen Columns
Name
Chavez M Glick
Cody T Butt
Jones C Schemmer
Munro I Kusko
Antonio V Nicka
Jeanfrancois Q Tollner
Leon S Ferencz
Adams G Maclead
Kaitlin H Stockham
Cody D Amigon
Smith J Oldroyd
Kadeem H Royster
Octavia Z Dilliard
Cody V Gillian
Wickens V Perin
Stacey V Iturbide
Aika M Vocelka
Ricardo B Rim
Smith H Morasca
Antonio B Dilliard
Stacey G Foller
Mujtaba Z Amigon
Jeanfrancois J Sergi
Kadeem R Ferencz
Greenwood W Poquette
Ricardo Z Glick
Rodrigues H Shinko
Jennifer Z Kusko
Smith T Figeroa
Faith J Whobrey
Leon D Saylors
Isabel I Garufi
David J Ostrosky
Ricardo I Stenseth
Jones V Gaucho
Costa T Glick
Arvin G Caldarera
Sinclair D Darakjy
Munro W Darakjy
Julie P Rulapaugh
Jones L Bolognia
Smith R Darakjy
Morrow N Bowley
Nicolas S Flosi
Leon W Stockham
Murillo F Malet
Mayumi E Nicka
Antonio J Bowley
Johnson E Doe
Morrow I Caudy
IdCountryDate
1000India2024-03-31
1001France2024-04-22
1002Argentina2024-04-15
1003France2024-04-11
1004United Kingdom2024-04-19
1005Brazil2024-04-21
1006Spain2024-04-20
1007Brazil2024-04-24
1008India2024-03-29
1009Japan2024-04-06
1010Argentina2024-03-31
1011Spain2024-04-22
1012Germany2024-04-04
1013Japan2024-04-10
1014France2024-04-18
1015India2024-04-08
1016Australia2024-04-25
1017France2024-04-26
1018India2024-03-28
1019Argentina2024-04-25
1020Spain2024-04-12
1021Canada2024-04-21
1022United Kingdom2024-03-28
1023Japan2024-04-04
1024Canada2024-04-05
1025Russia2024-04-11
1026India2024-04-12
1027Argentina2024-03-29
1028Germany2024-04-05
1029India2024-04-02
1030Germany2024-04-10
1031France2024-04-21
1032Russia2024-04-05
1033Australia2024-04-11
1034Argentina2024-04-19
1035Argentina2024-04-15
1036Canada2024-04-10
1037France2024-04-08
1038India2024-04-19
1039Brazil2024-04-14
1040India2024-04-03
1041France2024-04-26
1042Germany2024-04-06
1043United Kingdom2024-04-08
1044Italy2024-04-17
1045Brazil2024-04-01
1046United Kingdom2024-04-05
1047France2024-04-14
1048Brazil2024-04-06
1049France2024-04-04

On-Demand Data

NameIdCountryDate
Maria Z Royster1000India2024-04-10
Salvatore O Campain1001Germany2024-04-03
Smith R Bowley1002Russia2024-04-25
Izzy K Rim1003Brazil2024-04-13
Misaki Q Amigon1004Brazil2024-04-19
Leja Q Whobrey1005Russia2024-04-02
James T Morasca1006Russia2024-04-15
Jennifer W Poquette1007United Kingdom2024-04-05
Izzy I Rulapaugh1008Germany2024-04-18
Claire T Chui1009Australia2024-04-05
Smith X Briddick1010Germany2024-04-16
Claire G Perin1011Canada2024-04-13
Misaki F Iturbide1012Italy2024-04-20
Kadeem N Caldarera1013Argentina2024-04-13
Misaki N Paprocki1014Germany2024-04-09
Izzy V Bowley1015Japan2024-04-05
Alejandro V Rim1016Spain2024-04-23
Faith L Bowley1017Brazil2024-04-03
Mayumi R Gaucho1018Australia2024-04-14
Julie U Campain1019United Kingdom2024-04-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Arvin O OstroskyArgentinaIoni Bowcher QUALIFIED
Adams J MacleadFranceAsiya Javayant NEGOTIATION
Johnson V GarufiItalyAsiya Javayant UNQUALIFIED
Claire Z CampainIndiaIoni Bowcher PROPOSAL
Morrow C WieserGermanyXuxue Feng NEW
Morrow R GauchoCanadaAsiya Javayant NEW
Aruna E InouyeRussiaBernardo Dominic QUALIFIED
Silvio K GlickAustraliaAsiya Javayant UNQUALIFIED
Ivar D AmigonBrazilAmy Elsner NEGOTIATION
Kadeem T OstroskyGermanyIvan Magalhaes QUALIFIED
Misaki V NickaFranceOnyama Limba UNQUALIFIED
Jennifer Z KolmetzUnited KingdomXuxue Feng UNQUALIFIED
Misaki W OstroskyBrazilOnyama Limba UNQUALIFIED
Clifford A InouyeAustraliaAsiya Javayant NEW
Murillo P OstroskyArgentinaAnna Fali UNQUALIFIED
Cody M DarakjyItalyAnna Fali NEGOTIATION
Clifford K FigeroaIndiaStephen Shaw NEGOTIATION
Antonio S RoysterGermanyAmy Elsner PROPOSAL
Aditya M BriddickFranceAnna Fali UNQUALIFIED
James X GauchoJapanBernardo Dominic NEGOTIATION
Greenwood N AlbaresUnited KingdomElwin Sharvill PROPOSAL
Faith F ShinkoCanadaIvan Magalhaes UNQUALIFIED
Jefferson W WieserBrazilBernardo Dominic NEGOTIATION
Francesco D WieserArgentinaAmy Elsner UNQUALIFIED
Emily L SergiBrazilElwin Sharvill QUALIFIED
James R NestleGermanyIoni Bowcher PROPOSAL
Maisha Y BologniaCanadaOnyama Limba RENEWAL
Ivar T MorascaJapanBernardo Dominic UNQUALIFIED
Aika D WhobreyFranceAmy Elsner RENEWAL
Darci Y FollerCanadaIvan Magalhaes RENEWAL
Munro B FlosiSpainIvan Magalhaes NEGOTIATION
Ricardo O CaudyCanadaBernardo Dominic QUALIFIED
Aruna P FerenczFranceIvan Magalhaes NEW
Jefferson P DoeCanadaOnyama Limba QUALIFIED
Sinclair Q InouyeFranceIvan Magalhaes UNQUALIFIED
Clifford H CampainArgentinaIoni Bowcher NEGOTIATION
Sinclair G OstroskyJapanAmy Elsner RENEWAL
Julie L MorascaGermanyBernardo Dominic UNQUALIFIED
Arvin P StockhamAustraliaIoni Bowcher NEW
Ricardo L FerenczItalyXuxue Feng 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>