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
Adams V PaprockiRussiaBernardo Dominic RENEWAL
Rodrigues O RutaArgentinaAsiya Javayant PROPOSAL
Cody Y MaletItalyAsiya Javayant UNQUALIFIED
Claire Q OstroskySpainOnyama Limba QUALIFIED
Jeanfrancois C VocelkaCanadaBernardo Dominic QUALIFIED
Salvatore D RimCanadaBernardo Dominic NEGOTIATION
Leja V FerenczCanadaBernardo Dominic RENEWAL
Chavez W GlickGermanyElwin Sharvill PROPOSAL
Jennifer C MaletItalyStephen Shaw NEGOTIATION
Silvio W PerinFranceXuxue Feng QUALIFIED
Deepesh N MarrierItalyAsiya Javayant NEW
Arvin C MorascaGermanyBernardo Dominic PROPOSAL
Aruna J DoeGermanyAnna Fali PROPOSAL
Leon B MaletGermanyIvan Magalhaes UNQUALIFIED
Greenwood H StockhamRussiaOnyama Limba NEGOTIATION
Mujtaba I PaprockiUnited KingdomBernardo Dominic UNQUALIFIED
Claire A VenereArgentinaStephen Shaw PROPOSAL
Adams Y MarrierGermanyOnyama Limba NEW
Arvin L BologniaBrazilXuxue Feng QUALIFIED
Kaitlin M OstroskyRussiaElwin Sharvill RENEWAL
Salvatore M InouyeCanadaStephen Shaw UNQUALIFIED
Mayumi Q DoeRussiaIvan Magalhaes UNQUALIFIED
Ricardo L RulapaughCanadaOnyama Limba QUALIFIED
Francesco I CampainGermanyXuxue Feng PROPOSAL
Salvatore W VenereBrazilAsiya Javayant UNQUALIFIED
David S PerinCanadaStephen Shaw NEGOTIATION
Salvatore A NestleFranceBernardo Dominic QUALIFIED
Adams P WhobreyArgentinaIoni Bowcher NEGOTIATION
Ivar M StensethAustraliaAnna Fali RENEWAL
Rodrigues N CampainSpainAsiya Javayant PROPOSAL
Rodrigues P MacleadRussiaElwin Sharvill RENEWAL
Wickens N KolmetzRussiaStephen Shaw RENEWAL
Smith O SaylorsBrazilAmy Elsner NEGOTIATION
Sinclair E VocelkaBrazilBernardo Dominic RENEWAL
Ivar K RutaGermanyBernardo Dominic NEW
Aika H AlbaresGermanyOnyama Limba NEW
Antonio D SchemmerBrazilAmy Elsner RENEWAL
Wickens L WaycottCanadaAmy Elsner NEW
Murillo G VenereCanadaIvan Magalhaes RENEWAL
Clifford N MarrierJapanAmy Elsner UNQUALIFIED
Octavia S TollnerRussiaAsiya Javayant QUALIFIED
Jeanfrancois A GarufiJapanElwin Sharvill QUALIFIED
Adams V RutaBrazilXuxue Feng RENEWAL
Ricardo G BowleyBrazilElwin Sharvill PROPOSAL
Alejandro C VocelkaBrazilAsiya Javayant NEW
Mujtaba M DarakjyBrazilOnyama Limba NEW
Ashley V DoeGermanyElwin Sharvill QUALIFIED
Kadeem G MarrierGermanyIoni Bowcher UNQUALIFIED
Misaki C PoquetteBrazilStephen Shaw PROPOSAL
Octavia Z MaletCanadaElwin Sharvill RENEWAL
Horizontal
NameCountryRepresentativeStatus
Ricardo O MorascaSpainAsiya Javayant NEW
Misaki G ChuiIndiaXuxue Feng NEGOTIATION
Isabel E SergiIndiaAsiya Javayant RENEWAL
Kaitlin A AlbaresFranceStephen Shaw RENEWAL
Kadeem N SlusarskiJapanIoni Bowcher NEGOTIATION
Emily G BologniaIndiaStephen Shaw NEW
Claire C OldroydUnited KingdomIvan Magalhaes QUALIFIED
Ivar Q AmigonUnited KingdomAnna Fali PROPOSAL
Jefferson N OstroskyUnited KingdomAmy Elsner NEW
Greenwood G WhobreySpainIoni Bowcher PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Johnson Y RulapaughItaly2024-03-29Feiner Bros NEGOTIATION66Onyama Limba
1001Octavia E DarakjyAustralia2024-03-25King, Christopher A Esq PROPOSAL48Xuxue Feng
1002Alejandro O GauchoAustralia2024-03-21Rousseaux, Michael Esq UNQUALIFIED10Bernardo Dominic
1003Darci B PaprockiItaly2024-03-18Dorl, James J Esq PROPOSAL78Asiya Javayant
1004Cody A DilliardItaly2024-03-28Printing Dimensions QUALIFIED98Onyama Limba
1005Leja I WhobreyJapan2024-04-13Feltz Printing Service QUALIFIED31Bernardo Dominic
1006David M IturbideJapan2024-03-24Rangoni Of Florence PROPOSAL51Anna Fali
1007David S DilliardBrazil2024-04-06King, Christopher A Esq NEGOTIATION24Asiya Javayant
1008Jefferson Q WhobreyFrance2024-03-25Chemel, James L Cpa QUALIFIED38Ivan Magalhaes
1009Aika B SchemmerSpain2024-03-20Chanay, Jeffrey A Esq RENEWAL65Elwin Sharvill
1010Kaitlin I SlusarskiAustralia2024-04-08Commercial Press PROPOSAL50Bernardo Dominic
1011Aditya P FollerGermany2024-04-07King, Christopher A Esq NEGOTIATION47Stephen Shaw
1012Salvatore J DilliardItaly2024-04-14Morlong Associates QUALIFIED61Elwin Sharvill
1013Juan B WhobreyUnited Kingdom2024-04-08Rousseaux, Michael Esq NEW18Elwin Sharvill
1014Leon S SchemmerFrance2024-04-06Printing Dimensions NEGOTIATION33Ioni Bowcher
1015Kaitlin O VocelkaJapan2024-03-25Buckley Miller Wright PROPOSAL72Onyama Limba
1016Jefferson L SchemmerAustralia2024-04-06Morlong Associates RENEWAL71Anna Fali
1017Kaitlin L SergiIndia2024-04-11Chanay, Jeffrey A Esq QUALIFIED20Bernardo Dominic
1018Jennifer B OstroskyFrance2024-04-14Feltz Printing Service RENEWAL83Onyama Limba
1019Morrow B RoysterCanada2024-04-14Truhlar And Truhlar Attys UNQUALIFIED12Anna Fali
1020Salvatore U GauchoCanada2024-04-06Commercial Press UNQUALIFIED7Xuxue Feng
1021Arvin B FlosiCanada2024-04-12Feiner Bros NEGOTIATION58Ioni Bowcher
1022Salvatore B AlbaresAustralia2024-04-09Chemel, James L Cpa RENEWAL64Ioni Bowcher
1023Leon Q BologniaIndia2024-04-09Chanay, Jeffrey A Esq NEW50Xuxue Feng
1024Mayumi I PoquetteSpain2024-03-24Dorl, James J Esq PROPOSAL63Stephen Shaw
1025Ivar L DilliardArgentina2024-03-25Printing Dimensions UNQUALIFIED81Xuxue Feng
1026Claire U MaletJapan2024-04-13Chapman, Ross E Esq QUALIFIED41Onyama Limba
1027Nicolas N ButtSpain2024-03-18Rangoni Of Florence NEGOTIATION22Bernardo Dominic
1028Izzy T WaycottBrazil2024-03-25King, Christopher A Esq RENEWAL59Amy Elsner
1029Ivar H RimAustralia2024-04-12Printing Dimensions RENEWAL60Ivan Magalhaes
1030Greenwood E ShinkoItaly2024-03-26Dorl, James J Esq NEW78Bernardo Dominic
1031Julie M FollerIndia2024-04-04Morlong Associates NEW98Amy Elsner
1032Jeanfrancois O MaletIndia2024-03-26Commercial Press NEW89Asiya Javayant
1033Stacey Z WieserJapan2024-03-21Chanay, Jeffrey A Esq QUALIFIED16Ioni Bowcher
1034Ricardo W RimFrance2024-04-04Commercial Press QUALIFIED13Bernardo Dominic
1035Cody T CaudyRussia2024-04-09Dorl, James J Esq NEW92Asiya Javayant
1036Deepesh S MaletUnited Kingdom2024-04-05Dorl, James J Esq UNQUALIFIED30Elwin Sharvill
1037Jones A OstroskyIndia2024-03-19Feiner Bros UNQUALIFIED53Bernardo Dominic
1038Leon K BriddickBrazil2024-04-02Chapman, Ross E Esq PROPOSAL45Amy Elsner
1039Smith Z VocelkaAustralia2024-04-05Truhlar And Truhlar Attys RENEWAL41Onyama Limba
1040Nicolas E PaprockiArgentina2024-03-28Benton, John B Jr NEW17Anna Fali
1041Julie S SaylorsAustralia2024-04-09Rousseaux, Michael Esq UNQUALIFIED19Bernardo Dominic
1042Deepesh W DilliardUnited Kingdom2024-04-14Chapman, Ross E Esq NEGOTIATION57Stephen Shaw
1043Jefferson X RutaRussia2024-03-28Feltz Printing Service NEW82Elwin Sharvill
1044Clifford J AlbaresJapan2024-04-04Dorl, James J Esq UNQUALIFIED59Asiya Javayant
1045Isabel W CaldareraArgentina2024-04-12Feltz Printing Service NEW46Bernardo Dominic
1046Aruna R MaletUnited Kingdom2024-04-05Morlong Associates UNQUALIFIED18Elwin Sharvill
1047Julie J PoquetteItaly2024-03-24Rangoni Of Florence QUALIFIED45Ivan Magalhaes
1048Jefferson G MaletItaly2024-03-17Buckley Miller Wright QUALIFIED96Elwin Sharvill
1049Julie S MorascaIndia2024-03-27Benton, John B Jr UNQUALIFIED61Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Aditya C PoquetteGermanyIoni Bowcher UNQUALIFIED
Nicolas X InouyeIndiaIvan Magalhaes PROPOSAL
Ivar V KolmetzArgentinaXuxue Feng RENEWAL
Isabel Z DarakjyFranceAnna Fali NEW
Morrow N RutaSpainAnna Fali UNQUALIFIED
Costa I OldroydBrazilElwin Sharvill QUALIFIED
Johnson I PaprockiAustraliaAsiya Javayant NEW
Misaki O PerinBrazilBernardo Dominic QUALIFIED
Jefferson G TollnerGermanyAsiya Javayant RENEWAL
Isabel O ChuiSpainIvan Magalhaes UNQUALIFIED
Isabel Q VenereFranceIoni Bowcher PROPOSAL
Mujtaba G BowleyGermanyAsiya Javayant NEGOTIATION
Mujtaba G WhobreyAustraliaStephen Shaw NEGOTIATION
Izzy K WaycottCanadaIoni Bowcher NEGOTIATION
Claire X GauchoFranceOnyama Limba UNQUALIFIED
Arvin X MorascaGermanyXuxue Feng NEGOTIATION
Adams N AlbaresFranceAnna Fali NEGOTIATION
Salvatore E SchemmerIndiaIvan Magalhaes QUALIFIED
Maria N GarufiIndiaStephen Shaw RENEWAL
Julie M CaldareraBrazilIoni Bowcher PROPOSAL
Silvio M PoquetteUnited KingdomOnyama Limba NEW
Jennifer M ShinkoCanadaElwin Sharvill UNQUALIFIED
Stacey B WhobreyCanadaOnyama Limba UNQUALIFIED
Leja N DoeGermanyAsiya Javayant QUALIFIED
Jeanfrancois E FollerUnited KingdomIoni Bowcher QUALIFIED
Mujtaba D DarakjyJapanAsiya Javayant PROPOSAL
Rodrigues T FigeroaAustraliaAnna Fali UNQUALIFIED
Darci G RoysterCanadaAnna Fali PROPOSAL
Maisha W WhobreyArgentinaElwin Sharvill NEW
Jefferson J SergiFranceStephen Shaw NEW
Rodrigues B OldroydAustraliaElwin Sharvill PROPOSAL
Izzy E DoeIndiaAsiya Javayant NEGOTIATION
Darci S WhobreyBrazilElwin Sharvill UNQUALIFIED
Aruna P NickaItalyBernardo Dominic NEGOTIATION
Julie N BologniaGermanyBernardo Dominic RENEWAL
Jeanfrancois B ButtBrazilIvan Magalhaes UNQUALIFIED
Darci Y MarrierItalyXuxue Feng RENEWAL
Jefferson F CaldareraGermanyIoni Bowcher QUALIFIED
Morrow U BowleyAustraliaStephen Shaw RENEWAL
Greenwood U BowleyIndiaXuxue Feng NEW
Emily I FollerJapanAnna Fali PROPOSAL
Wickens N MacleadSpainAnna Fali RENEWAL
Faith M OstroskySpainAnna Fali UNQUALIFIED
Aditya T KolmetzUnited KingdomAsiya Javayant NEW
Silvio I SlusarskiFranceXuxue Feng RENEWAL
Jones X NickaCanadaXuxue Feng NEW
David W GlickUnited KingdomXuxue Feng NEGOTIATION
Claire K AlbaresFranceIoni Bowcher UNQUALIFIED
Alejandro T DilliardFranceAmy Elsner PROPOSAL
Aditya T RulapaughFranceBernardo Dominic RENEWAL
Frozen Columns
Name
Emily D Ostrosky
Octavia V Inouye
Munro M Bolognia
Jones T Chui
Salvatore R Flosi
Antonio N Whobrey
Sinclair B Marrier
Leon W Flosi
Kadeem J Gaucho
Ashley F Schemmer
Leon C Royster
Julie Y Kolmetz
Ivar Q Stockham
Juan U Tollner
James A Rim
Chavez Z Dilliard
Juan R Malet
Greenwood H Flosi
Johnson M Campain
Octavia U Stenseth
Wickens J Ruta
Faith B Saylors
Claire A Royster
Francesco Y Inouye
Darci N Stockham
Misaki S Rulapaugh
Greenwood W Nicka
Jones B Flosi
Antonio Y Paprocki
James H Figeroa
Clifford R Briddick
Deepesh S Morasca
Kaitlin T Tollner
Greenwood R Ruta
James S Dilliard
Leja K Marrier
Wickens G Foller
Salvatore V Kusko
Misaki U Ferencz
Alejandro J Iturbide
Julie L Morasca
Chavez F Stockham
Salvatore P Kusko
Aruna V Nestle
Ricardo X Slusarski
Kadeem Q Saylors
Munro U Figeroa
Maria T Amigon
Leja R Maclead
Morrow H Briddick
IdCountryDate
1000United Kingdom2024-03-20
1001Russia2024-04-14
1002Germany2024-04-02
1003Australia2024-04-14
1004Australia2024-03-22
1005Australia2024-03-21
1006France2024-03-17
1007Russia2024-03-25
1008India2024-03-30
1009Italy2024-04-11
1010Canada2024-03-31
1011Japan2024-04-10
1012Spain2024-03-19
1013Italy2024-04-03
1014Russia2024-04-14
1015Canada2024-03-18
1016France2024-04-05
1017Russia2024-03-25
1018Brazil2024-03-21
1019Germany2024-04-03
1020Germany2024-04-13
1021Spain2024-04-06
1022Italy2024-03-17
1023Russia2024-04-05
1024Australia2024-04-12
1025Argentina2024-03-25
1026United Kingdom2024-03-28
1027Germany2024-04-15
1028Canada2024-03-28
1029Canada2024-03-23
1030United Kingdom2024-03-17
1031Canada2024-04-06
1032India2024-04-01
1033Australia2024-03-22
1034Argentina2024-04-08
1035France2024-04-14
1036Brazil2024-03-20
1037United Kingdom2024-04-03
1038United Kingdom2024-04-12
1039Canada2024-03-19
1040Russia2024-03-27
1041France2024-03-18
1042Germany2024-03-27
1043Italy2024-03-28
1044Spain2024-03-24
1045Spain2024-04-09
1046India2024-04-15
1047Japan2024-03-30
1048Spain2024-04-07
1049United Kingdom2024-03-31

On-Demand Data

NameIdCountryDate
Francesco O Marrier1000Russia2024-03-31
Maisha U Stockham1001Germany2024-04-07
Darci U Doe1002Italy2024-04-03
Emily Z Bowley1003Argentina2024-03-18
Ashley T Slusarski1004India2024-04-03
Silvio N Inouye1005Russia2024-04-07
Aruna B Tollner1006Australia2024-04-11
Rodrigues H Kusko1007India2024-04-07
Leja M Wieser1008Australia2024-04-07
Leon Z Tollner1009Germany2024-03-24
Deepesh G Whobrey1010Spain2024-03-26
Emily H Whobrey1011United Kingdom2024-03-21
Misaki L Dilliard1012Italy2024-03-22
Costa N Poquette1013Brazil2024-03-26
Mayumi W Kolmetz1014Japan2024-04-01
Morrow O Ostrosky1015Brazil2024-04-14
Aruna X Chui1016Japan2024-03-31
Aditya M Gaucho1017Brazil2024-03-25
Kadeem J Doe1018Italy2024-03-19
Ricardo W Ruta1019Italy2024-04-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Juan U CampainSpainAnna Fali NEGOTIATION
Ricardo B InouyeUnited KingdomAsiya Javayant RENEWAL
Maisha X FlosiBrazilAnna Fali RENEWAL
Johnson R GlickIndiaAnna Fali PROPOSAL
Darci F FerenczArgentinaElwin Sharvill RENEWAL
Greenwood O InouyeAustraliaStephen Shaw NEW
Alejandro V DoeSpainStephen Shaw NEGOTIATION
Cody C CaldareraUnited KingdomAsiya Javayant NEGOTIATION
Silvio R TollnerItalyBernardo Dominic QUALIFIED
Jeanfrancois U WieserRussiaOnyama Limba NEGOTIATION
Aika W BologniaRussiaIvan Magalhaes UNQUALIFIED
Ashley T MarrierCanadaAnna Fali PROPOSAL
Emily C KolmetzCanadaAmy Elsner NEW
Jennifer O KolmetzRussiaBernardo Dominic UNQUALIFIED
Kaitlin J ButtCanadaIoni Bowcher NEW
Alejandro J StensethIndiaElwin Sharvill UNQUALIFIED
Isabel L InouyeIndiaOnyama Limba NEGOTIATION
Ashley A CampainJapanAmy Elsner NEW
Kadeem F FlosiRussiaElwin Sharvill NEGOTIATION
Kadeem P RimItalyAsiya Javayant QUALIFIED
Murillo E StensethRussiaAmy Elsner NEGOTIATION
Leja C GarufiUnited KingdomElwin Sharvill UNQUALIFIED
Kaitlin K ButtSpainAnna Fali QUALIFIED
Nicolas Y FollerArgentinaXuxue Feng RENEWAL
Octavia P KolmetzAustraliaIvan Magalhaes PROPOSAL
Kadeem B MorascaIndiaXuxue Feng NEW
Cody V SergiFranceStephen Shaw NEGOTIATION
Greenwood M OldroydGermanyElwin Sharvill NEW
Aika N WhobreyUnited KingdomIoni Bowcher NEW
Maria F BologniaCanadaAnna Fali QUALIFIED
Faith F FollerUnited KingdomAsiya Javayant UNQUALIFIED
Murillo Q DoeItalyAsiya Javayant RENEWAL
Leja L MaletGermanyAnna Fali NEGOTIATION
Leja P TollnerSpainAsiya Javayant NEGOTIATION
Leja V IturbideRussiaBernardo Dominic UNQUALIFIED
Antonio K ChuiCanadaAmy Elsner NEGOTIATION
Aruna Q CaudySpainAsiya Javayant QUALIFIED
Arvin R StockhamCanadaAmy Elsner QUALIFIED
Antonio Q ButtIndiaAsiya Javayant PROPOSAL
Greenwood E PaprockiUnited KingdomIvan Magalhaes 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>