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
Mujtaba R KolmetzBrazilIoni Bowcher NEW
Aruna Z PaprockiFranceAmy Elsner QUALIFIED
Mujtaba O OstroskyFranceIoni Bowcher UNQUALIFIED
Leja U PaprockiAustraliaAsiya Javayant RENEWAL
Chavez J CaldareraRussiaAmy Elsner RENEWAL
Clifford L GillianGermanyStephen Shaw RENEWAL
Adams M DilliardItalyAnna Fali PROPOSAL
Ivar Z AlbaresAustraliaOnyama Limba NEGOTIATION
Jones Y TollnerSpainIoni Bowcher QUALIFIED
Salvatore Y KuskoIndiaAsiya Javayant NEW
Kaitlin R FigeroaSpainElwin Sharvill NEW
David C NickaRussiaAmy Elsner NEGOTIATION
Faith Z ShinkoGermanyAsiya Javayant NEGOTIATION
Faith H VocelkaJapanOnyama Limba PROPOSAL
Arvin F SaylorsAustraliaAnna Fali QUALIFIED
Maisha B FlosiItalyElwin Sharvill RENEWAL
Mayumi B StensethGermanyAmy Elsner QUALIFIED
Adams B BriddickGermanyAnna Fali QUALIFIED
Wickens G GlickRussiaStephen Shaw UNQUALIFIED
Maisha A BriddickItalyElwin Sharvill PROPOSAL
Izzy D VocelkaGermanyIvan Magalhaes RENEWAL
Leon D FollerJapanAsiya Javayant PROPOSAL
Leja J BologniaAustraliaXuxue Feng UNQUALIFIED
Greenwood R ShinkoCanadaAnna Fali QUALIFIED
Maisha X TollnerItalyIoni Bowcher UNQUALIFIED
Deepesh C GlickCanadaAmy Elsner PROPOSAL
Costa Q FerenczArgentinaElwin Sharvill NEW
Faith G FlosiFranceStephen Shaw RENEWAL
Nicolas J SchemmerAustraliaAmy Elsner NEGOTIATION
Ivar O ChuiFranceIoni Bowcher NEW
Clifford W TollnerFranceAmy Elsner PROPOSAL
Jefferson H KuskoBrazilAsiya Javayant NEW
Isabel I PoquetteArgentinaOnyama Limba UNQUALIFIED
Johnson W PaprockiBrazilIvan Magalhaes UNQUALIFIED
Greenwood L KolmetzRussiaBernardo Dominic UNQUALIFIED
Tony N BowleyItalyAsiya Javayant NEGOTIATION
Mayumi J DoeRussiaOnyama Limba RENEWAL
Juan D FigeroaUnited KingdomAnna Fali QUALIFIED
Izzy W StockhamBrazilElwin Sharvill NEW
Murillo G DarakjySpainStephen Shaw QUALIFIED
Nicolas L OstroskyBrazilAnna Fali UNQUALIFIED
Adams E NickaItalyStephen Shaw RENEWAL
Aika K IturbideJapanIoni Bowcher QUALIFIED
Rodrigues W PaprockiFranceElwin Sharvill UNQUALIFIED
James M BriddickJapanStephen Shaw UNQUALIFIED
Octavia P FigeroaAustraliaBernardo Dominic NEGOTIATION
Ashley M OldroydIndiaXuxue Feng PROPOSAL
Julie Z KuskoUnited KingdomIoni Bowcher RENEWAL
Smith J VenereBrazilIvan Magalhaes UNQUALIFIED
Morrow P DoeIndiaIvan Magalhaes NEW
Horizontal
NameCountryRepresentativeStatus
Salvatore V ButtItalyIoni Bowcher RENEWAL
Darci M WaycottUnited KingdomAmy Elsner QUALIFIED
Chavez F MorascaItalyAsiya Javayant QUALIFIED
Salvatore C AlbaresSpainAnna Fali RENEWAL
Faith Q MorascaRussiaIoni Bowcher RENEWAL
Clifford W RutaCanadaBernardo Dominic NEGOTIATION
Darci G CaudyUnited KingdomStephen Shaw NEGOTIATION
Munro D StockhamIndiaElwin Sharvill RENEWAL
Aditya M KolmetzArgentinaBernardo Dominic NEW
James J SaylorsCanadaStephen Shaw RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jones Q NestleCanada2024-04-23Chanay, Jeffrey A Esq UNQUALIFIED56Elwin Sharvill
1001Aditya P WhobreyGermany2024-04-16Chemel, James L Cpa QUALIFIED0Stephen Shaw
1002Jones A PerinFrance2024-04-14Truhlar And Truhlar Attys RENEWAL50Bernardo Dominic
1003Alejandro Z SaylorsItaly2024-04-09Feltz Printing Service QUALIFIED59Ivan Magalhaes
1004Murillo A CaldareraSpain2024-04-21Benton, John B Jr RENEWAL19Bernardo Dominic
1005Emily V DilliardSpain2024-04-07King, Christopher A Esq NEW27Xuxue Feng
1006Kadeem P BriddickBrazil2024-04-27Rousseaux, Michael Esq NEW96Onyama Limba
1007Arvin O BowleyIndia2024-04-24Chapman, Ross E Esq UNQUALIFIED41Asiya Javayant
1008Ashley O VenereJapan2024-04-11Morlong Associates QUALIFIED88Ivan Magalhaes
1009Izzy L MarrierSpain2024-04-23Feiner Bros PROPOSAL59Onyama Limba
1010Misaki K RutaFrance2024-04-11Chemel, James L Cpa RENEWAL26Anna Fali
1011Silvio Y BologniaCanada2024-04-27Chanay, Jeffrey A Esq NEW82Onyama Limba
1012Claire R MarrierSpain2024-04-23King, Christopher A Esq RENEWAL6Elwin Sharvill
1013Clifford E PerinItaly2024-04-01Benton, John B Jr QUALIFIED20Bernardo Dominic
1014Greenwood Q FerenczUnited Kingdom2024-04-10Chapman, Ross E Esq RENEWAL91Onyama Limba
1015Mujtaba Q NestleGermany2024-04-10Printing Dimensions RENEWAL11Ioni Bowcher
1016Julie Y StensethRussia2024-04-06Truhlar And Truhlar Attys RENEWAL77Stephen Shaw
1017Maria B MaletSpain2024-04-29Benton, John B Jr UNQUALIFIED89Xuxue Feng
1018Jennifer G WhobreyUnited Kingdom2024-04-20Chapman, Ross E Esq NEGOTIATION81Onyama Limba
1019Cody K FollerBrazil2024-04-29King, Christopher A Esq PROPOSAL60Stephen Shaw
1020Murillo M DilliardCanada2024-04-05Chapman, Ross E Esq QUALIFIED46Stephen Shaw
1021Ashley N WieserRussia2024-04-24Commercial Press RENEWAL64Anna Fali
1022Faith V RoysterIndia2024-04-11Morlong Associates QUALIFIED58Asiya Javayant
1023Isabel Y InouyeGermany2024-04-12Rangoni Of Florence RENEWAL50Elwin Sharvill
1024Mayumi Z BowleyFrance2024-04-10Rangoni Of Florence UNQUALIFIED78Ioni Bowcher
1025Maisha H PaprockiCanada2024-03-31Printing Dimensions RENEWAL22Stephen Shaw
1026Greenwood U WieserFrance2024-04-21Chapman, Ross E Esq UNQUALIFIED59Ioni Bowcher
1027Jennifer W ChuiBrazil2024-04-14Commercial Press PROPOSAL86Asiya Javayant
1028Ivar J RimGermany2024-04-21Buckley Miller Wright UNQUALIFIED2Elwin Sharvill
1029Murillo C OldroydAustralia2024-04-01Chemel, James L Cpa PROPOSAL75Ioni Bowcher
1030Julie B KolmetzJapan2024-04-02Rousseaux, Michael Esq PROPOSAL87Bernardo Dominic
1031Emily M WaycottJapan2024-04-20Dorl, James J Esq PROPOSAL3Xuxue Feng
1032Smith P KolmetzSpain2024-04-22Rousseaux, Michael Esq NEGOTIATION81Anna Fali
1033Mujtaba L SergiItaly2024-04-15Truhlar And Truhlar Attys RENEWAL95Onyama Limba
1034Maria S FollerIndia2024-04-29Benton, John B Jr NEW1Bernardo Dominic
1035Claire W FollerArgentina2024-04-15Dorl, James J Esq RENEWAL57Xuxue Feng
1036Maisha A GlickBrazil2024-04-26Feiner Bros PROPOSAL57Amy Elsner
1037Silvio J DarakjyGermany2024-04-28Printing Dimensions RENEWAL93Onyama Limba
1038Julie B WaycottIndia2024-04-20Rousseaux, Michael Esq NEGOTIATION88Asiya Javayant
1039Stacey A CaudyCanada2024-04-09Feltz Printing Service QUALIFIED82Stephen Shaw
1040Ricardo X BowleyBrazil2024-04-09Commercial Press NEW46Elwin Sharvill
1041Isabel M NestleArgentina2024-04-14Rangoni Of Florence PROPOSAL50Elwin Sharvill
1042Aika G PerinGermany2024-04-03Chanay, Jeffrey A Esq NEGOTIATION36Elwin Sharvill
1043Greenwood X FollerRussia2024-04-25Chanay, Jeffrey A Esq PROPOSAL90Ivan Magalhaes
1044Francesco R AlbaresJapan2024-04-22Feltz Printing Service PROPOSAL99Asiya Javayant
1045Leon Y MaletAustralia2024-04-23Chanay, Jeffrey A Esq PROPOSAL43Elwin Sharvill
1046Ricardo Z MarrierCanada2024-04-07Benton, John B Jr UNQUALIFIED15Bernardo Dominic
1047Rodrigues V PaprockiBrazil2024-04-13Chemel, James L Cpa NEGOTIATION20Onyama Limba
1048Jefferson L BologniaSpain2024-04-20Feiner Bros PROPOSAL7Ioni Bowcher
1049Silvio Y CaldareraIndia2024-04-03Feltz Printing Service NEW9Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Aditya R InouyeFranceStephen Shaw PROPOSAL
Maisha A OldroydSpainIvan Magalhaes RENEWAL
Silvio N MacleadItalyIvan Magalhaes NEGOTIATION
Cody Z ChuiFranceElwin Sharvill PROPOSAL
Leon G MorascaFranceIvan Magalhaes UNQUALIFIED
Isabel S BriddickCanadaIoni Bowcher UNQUALIFIED
Kadeem W FollerArgentinaBernardo Dominic PROPOSAL
Misaki U DarakjyArgentinaBernardo Dominic PROPOSAL
James H VenereFranceAmy Elsner PROPOSAL
James A AmigonGermanyAmy Elsner NEW
Deepesh T PerinRussiaAnna Fali QUALIFIED
Aruna X AmigonAustraliaAnna Fali QUALIFIED
Mayumi W MaletBrazilAsiya Javayant PROPOSAL
Faith M FerenczArgentinaXuxue Feng NEGOTIATION
Kadeem V SlusarskiIndiaIoni Bowcher RENEWAL
Isabel M TollnerArgentinaBernardo Dominic NEGOTIATION
Salvatore J DarakjyRussiaAnna Fali NEGOTIATION
Adams X RoysterUnited KingdomAmy Elsner NEGOTIATION
Ivar A SlusarskiSpainIvan Magalhaes UNQUALIFIED
Maria I FerenczUnited KingdomIvan Magalhaes QUALIFIED
Claire E KuskoIndiaAnna Fali UNQUALIFIED
Costa D DilliardIndiaIoni Bowcher NEW
Jennifer S StensethIndiaOnyama Limba NEGOTIATION
Munro N ChuiBrazilXuxue Feng NEGOTIATION
Murillo I FlosiBrazilAmy Elsner RENEWAL
Claire E DilliardFranceElwin Sharvill QUALIFIED
Ivar F BriddickAustraliaStephen Shaw PROPOSAL
Kaitlin U MaletFranceAmy Elsner PROPOSAL
Maisha K OstroskyRussiaIvan Magalhaes NEGOTIATION
James W ChuiIndiaBernardo Dominic NEW
Jennifer P CampainIndiaAmy Elsner PROPOSAL
Nicolas A StensethBrazilElwin Sharvill RENEWAL
Kadeem R BriddickUnited KingdomAsiya Javayant NEGOTIATION
Rodrigues X IturbideCanadaOnyama Limba NEGOTIATION
Mujtaba H OldroydIndiaAnna Fali NEW
Chavez V VenereCanadaAsiya Javayant NEW
Deepesh W WieserBrazilOnyama Limba RENEWAL
Silvio C FlosiArgentinaAnna Fali RENEWAL
Darci Z BologniaItalyAmy Elsner NEW
Morrow K MaletIndiaOnyama Limba NEGOTIATION
Aika R KuskoAustraliaAmy Elsner NEGOTIATION
David Z TollnerAustraliaIvan Magalhaes PROPOSAL
Ashley S InouyeBrazilAmy Elsner UNQUALIFIED
Ashley Y OldroydRussiaStephen Shaw RENEWAL
Sinclair C OldroydCanadaBernardo Dominic NEGOTIATION
Leon M MaletArgentinaAnna Fali NEW
Nicolas D OldroydSpainIvan Magalhaes QUALIFIED
Mujtaba M DoeIndiaAmy Elsner UNQUALIFIED
Salvatore P CampainIndiaAnna Fali RENEWAL
Murillo H AmigonUnited KingdomStephen Shaw NEGOTIATION
Frozen Columns
Name
Aditya S Caldarera
Alejandro Q Maclead
Costa P Rulapaugh
Aika H Albares
Octavia Y Wieser
Clifford S Figeroa
Kadeem I Maclead
Maria C Flosi
Morrow V Shinko
Ivar R Tollner
Alejandro F Flosi
Rodrigues E Kolmetz
Ricardo H Malet
Antonio N Ferencz
Cody Y Ostrosky
Faith K Butt
Smith R Ferencz
Mujtaba I Foller
Smith U Rulapaugh
Alejandro M Stockham
Julie X Amigon
James S Figeroa
Deepesh Q Stockham
Kadeem B Morasca
Smith D Gillian
Costa W Stenseth
Emily D Vocelka
Jones V Whobrey
Juan P Nicka
Cody S Stenseth
Darci H Dilliard
Rodrigues I Malet
Juan P Royster
Julie T Marrier
Cody V Iturbide
Faith B Gillian
Izzy T Oldroyd
Johnson Y Iturbide
Ivar Q Albares
Mujtaba Z Rim
Ashley H Caudy
Costa H Gaucho
Morrow I Oldroyd
Aditya H Slusarski
James L Briddick
Kadeem A Bowley
Ricardo N Dilliard
Jeanfrancois Q Tollner
Kaitlin D Amigon
Costa W Briddick
IdCountryDate
1000Germany2024-04-27
1001India2024-04-05
1002France2024-04-21
1003Germany2024-04-02
1004Japan2024-04-19
1005Brazil2024-04-27
1006Canada2024-04-21
1007Russia2024-04-10
1008Australia2024-04-10
1009India2024-04-06
1010Russia2024-04-28
1011France2024-04-29
1012Canada2024-03-31
1013India2024-04-12
1014Brazil2024-04-08
1015Australia2024-04-04
1016Australia2024-04-23
1017Russia2024-04-18
1018Russia2024-04-06
1019Germany2024-04-12
1020Canada2024-04-28
1021Canada2024-04-14
1022United Kingdom2024-04-13
1023Argentina2024-04-14
1024Russia2024-04-23
1025Canada2024-04-29
1026Argentina2024-04-28
1027Germany2024-04-04
1028Germany2024-04-23
1029Spain2024-04-15
1030Italy2024-04-17
1031Canada2024-04-21
1032India2024-04-06
1033Canada2024-04-09
1034Russia2024-04-06
1035Germany2024-04-21
1036Brazil2024-04-12
1037Germany2024-04-26
1038India2024-04-09
1039Australia2024-04-03
1040Italy2024-04-19
1041Italy2024-04-07
1042Russia2024-04-20
1043Russia2024-04-10
1044Japan2024-04-16
1045Brazil2024-04-21
1046United Kingdom2024-03-31
1047France2024-04-01
1048France2024-04-28
1049United Kingdom2024-04-17

On-Demand Data

NameIdCountryDate
Salvatore T Royster1000Japan2024-04-20
Mayumi W Malet1001Australia2024-04-12
Misaki S Foller1002United Kingdom2024-04-23
Chavez Z Kolmetz1003Italy2024-04-23
Leon H Malet1004Argentina2024-04-25
Ashley X Ferencz1005Russia2024-04-03
Jones X Whobrey1006France2024-04-03
Misaki M Amigon1007Argentina2024-04-04
Mujtaba G Nestle1008Russia2024-04-03
Francesco W Ruta1009Canada2024-04-23
Jennifer E Dilliard1010Japan2024-04-27
Munro V Ostrosky1011Russia2024-04-19
Morrow R Campain1012Canada2024-04-15
Ashley S Wieser1013United Kingdom2024-04-21
Greenwood C Figeroa1014United Kingdom2024-04-21
Greenwood E Morasca1015Canada2024-04-28
Juan V Saylors1016India2024-04-13
Aika I Butt1017Russia2024-04-25
Juan Y Waycott1018Canada2024-04-02
Silvio K Chui1019Canada2024-04-11
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Salvatore A CampainSpainOnyama Limba RENEWAL
Isabel F MarrierBrazilIoni Bowcher UNQUALIFIED
Claire R GillianSpainIvan Magalhaes NEGOTIATION
Arvin T RulapaughArgentinaBernardo Dominic RENEWAL
Aruna I CampainRussiaOnyama Limba QUALIFIED
Rodrigues N SaylorsSpainBernardo Dominic NEGOTIATION
Tony N FlosiAustraliaBernardo Dominic NEGOTIATION
Francesco D DoeSpainXuxue Feng UNQUALIFIED
Julie L BologniaRussiaStephen Shaw UNQUALIFIED
Johnson F ChuiCanadaAsiya Javayant QUALIFIED
Deepesh G SaylorsSpainStephen Shaw RENEWAL
Salvatore Z NickaRussiaIvan Magalhaes QUALIFIED
Chavez Y AmigonIndiaOnyama Limba UNQUALIFIED
Izzy S AmigonAustraliaStephen Shaw RENEWAL
Rodrigues Q SergiCanadaIoni Bowcher RENEWAL
Johnson I NickaSpainBernardo Dominic NEW
Cody B InouyeFranceAmy Elsner UNQUALIFIED
David M OstroskyItalyAmy Elsner NEW
Aika H GauchoItalyXuxue Feng PROPOSAL
Maisha V StockhamJapanAsiya Javayant UNQUALIFIED
Alejandro B MacleadCanadaOnyama Limba PROPOSAL
Rodrigues Q WhobreyFranceIvan Magalhaes PROPOSAL
Claire A GauchoArgentinaAmy Elsner UNQUALIFIED
Maria U PerinFranceElwin Sharvill NEW
Leja K CaudySpainStephen Shaw RENEWAL
Arvin S RutaRussiaIvan Magalhaes NEW
Greenwood B MaletFranceAnna Fali UNQUALIFIED
Ashley U StockhamUnited KingdomAsiya Javayant PROPOSAL
David N GillianSpainAsiya Javayant PROPOSAL
Adams V WaycottArgentinaAsiya Javayant QUALIFIED
Jones A ButtFranceXuxue Feng RENEWAL
Isabel Q CaudyArgentinaStephen Shaw QUALIFIED
Julie S ButtAustraliaIoni Bowcher PROPOSAL
Jones Z StockhamUnited KingdomStephen Shaw RENEWAL
Jefferson T FigeroaUnited KingdomIvan Magalhaes NEGOTIATION
Stacey J AlbaresGermanyAsiya Javayant NEGOTIATION
James H AlbaresBrazilIvan Magalhaes UNQUALIFIED
Cody W AmigonBrazilIoni Bowcher RENEWAL
Chavez J PerinBrazilAnna Fali NEGOTIATION
Faith H MaletBrazilBernardo Dominic 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>