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
Tony H VenereRussiaXuxue Feng RENEWAL
Nicolas G MaletCanadaIvan Magalhaes RENEWAL
James O VenereArgentinaAnna Fali QUALIFIED
Munro U WhobreyBrazilXuxue Feng UNQUALIFIED
Silvio M IturbideIndiaElwin Sharvill QUALIFIED
Octavia A VocelkaFranceBernardo Dominic PROPOSAL
Misaki T GarufiCanadaAnna Fali NEGOTIATION
Murillo T VenereSpainStephen Shaw NEW
Tony P DarakjyFranceAnna Fali QUALIFIED
Ivar H NestleIndiaIoni Bowcher NEGOTIATION
Jeanfrancois V PoquetteCanadaStephen Shaw NEGOTIATION
Salvatore C ButtCanadaBernardo Dominic UNQUALIFIED
Jefferson H MaletRussiaStephen Shaw NEW
Tony C BologniaJapanStephen Shaw UNQUALIFIED
Deepesh U WhobreyBrazilIoni Bowcher UNQUALIFIED
Aditya C PaprockiArgentinaAsiya Javayant UNQUALIFIED
Antonio I BriddickGermanyXuxue Feng PROPOSAL
Adams Y NestleSpainAnna Fali UNQUALIFIED
Aruna E MorascaGermanyAmy Elsner PROPOSAL
Maisha C CaldareraFranceIoni Bowcher NEW
Arvin L VenereJapanElwin Sharvill NEGOTIATION
Sinclair W BologniaAustraliaBernardo Dominic UNQUALIFIED
Wickens U OldroydItalyAmy Elsner QUALIFIED
Kaitlin U SaylorsArgentinaXuxue Feng RENEWAL
Leja R MacleadJapanBernardo Dominic UNQUALIFIED
Sinclair S PoquetteFranceAnna Fali NEGOTIATION
Kadeem U FollerCanadaBernardo Dominic PROPOSAL
Costa I CampainIndiaIoni Bowcher QUALIFIED
Darci B OstroskyFranceAsiya Javayant UNQUALIFIED
Leja I ChuiUnited KingdomStephen Shaw QUALIFIED
David J NestleSpainAnna Fali RENEWAL
Isabel Y KuskoRussiaAsiya Javayant UNQUALIFIED
Tony I AlbaresJapanIoni Bowcher RENEWAL
Silvio A GauchoGermanyXuxue Feng QUALIFIED
Claire J KolmetzJapanAmy Elsner QUALIFIED
Deepesh J DoeCanadaElwin Sharvill NEW
Faith G GlickRussiaXuxue Feng QUALIFIED
Stacey W OstroskyUnited KingdomXuxue Feng NEGOTIATION
Maisha G StensethCanadaOnyama Limba RENEWAL
Ricardo T WhobreyBrazilElwin Sharvill PROPOSAL
Chavez T KolmetzArgentinaStephen Shaw NEW
Jennifer Y VocelkaFranceElwin Sharvill NEGOTIATION
Sinclair Q AmigonJapanIvan Magalhaes RENEWAL
Leja E FigeroaIndiaXuxue Feng NEGOTIATION
Aruna R PoquetteIndiaAsiya Javayant PROPOSAL
Julie D MaletBrazilXuxue Feng NEW
Silvio U MaletBrazilAmy Elsner UNQUALIFIED
Jefferson A ShinkoArgentinaXuxue Feng PROPOSAL
Juan W RimAustraliaIoni Bowcher RENEWAL
Aditya T ButtGermanyBernardo Dominic RENEWAL
Horizontal
NameCountryRepresentativeStatus
Chavez C BologniaIndiaElwin Sharvill PROPOSAL
Jeanfrancois M GauchoFranceXuxue Feng NEW
Cody G CaudyCanadaAmy Elsner QUALIFIED
Jeanfrancois P WaycottFranceIvan Magalhaes NEW
Mayumi H KolmetzAustraliaOnyama Limba RENEWAL
Faith F PoquetteIndiaElwin Sharvill RENEWAL
Morrow L AlbaresFranceXuxue Feng RENEWAL
Munro W CaudyIndiaXuxue Feng PROPOSAL
Claire S DoeCanadaIvan Magalhaes QUALIFIED
Maria L CampainSpainAnna Fali NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Chavez Q FigeroaArgentina2024-04-23Benton, John B Jr QUALIFIED27Ivan Magalhaes
1001Maisha A SchemmerCanada2024-04-20Commercial Press NEGOTIATION4Xuxue Feng
1002Darci E ChuiGermany2024-04-06Chemel, James L Cpa UNQUALIFIED72Anna Fali
1003Kadeem H GarufiUnited Kingdom2024-04-16King, Christopher A Esq RENEWAL1Stephen Shaw
1004Mujtaba G DoeArgentina2024-03-30Feltz Printing Service RENEWAL97Ivan Magalhaes
1005Ivar I StensethRussia2024-04-14Chanay, Jeffrey A Esq QUALIFIED29Anna Fali
1006Antonio I WaycottArgentina2024-04-19Morlong Associates RENEWAL15Amy Elsner
1007Ivar J WaycottBrazil2024-04-13Benton, John B Jr RENEWAL44Xuxue Feng
1008Octavia P PaprockiFrance2024-04-06Rangoni Of Florence QUALIFIED89Anna Fali
1009Julie R MaletArgentina2024-04-17Chapman, Ross E Esq PROPOSAL80Bernardo Dominic
1010Izzy B RimRussia2024-04-03King, Christopher A Esq RENEWAL24Xuxue Feng
1011Johnson D RulapaughCanada2024-04-16Commercial Press RENEWAL51Xuxue Feng
1012Salvatore E RimRussia2024-03-30Chapman, Ross E Esq NEW30Stephen Shaw
1013Wickens Y DarakjyBrazil2024-04-01Rousseaux, Michael Esq NEW37Xuxue Feng
1014Tony P BowleyRussia2024-04-19Truhlar And Truhlar Attys RENEWAL80Ioni Bowcher
1015Misaki L FerenczIndia2024-04-13Buckley Miller Wright NEW34Anna Fali
1016Jefferson Z StensethFrance2024-04-19Chapman, Ross E Esq RENEWAL72Anna Fali
1017Jennifer M TollnerFrance2024-04-24Chemel, James L Cpa PROPOSAL88Stephen Shaw
1018Ricardo I PerinCanada2024-04-20Rangoni Of Florence RENEWAL92Xuxue Feng
1019Jennifer L RoysterBrazil2024-04-13Feiner Bros RENEWAL40Bernardo Dominic
1020Ashley X TollnerArgentina2024-04-05Benton, John B Jr NEGOTIATION91Anna Fali
1021Kadeem Y WaycottSpain2024-04-14Dorl, James J Esq QUALIFIED55Bernardo Dominic
1022Jeanfrancois X KolmetzSpain2024-04-23Chemel, James L Cpa UNQUALIFIED17Ivan Magalhaes
1023Kadeem K KuskoCanada2024-04-15Buckley Miller Wright PROPOSAL33Elwin Sharvill
1024Clifford N StensethJapan2024-04-16Dorl, James J Esq QUALIFIED32Bernardo Dominic
1025Wickens L SergiSpain2024-04-08Chemel, James L Cpa QUALIFIED52Asiya Javayant
1026Emily E AmigonJapan2024-04-11Chapman, Ross E Esq QUALIFIED6Stephen Shaw
1027Adams X CaudyBrazil2024-04-10Morlong Associates NEW56Anna Fali
1028Adams F StockhamSpain2024-04-14Chemel, James L Cpa NEGOTIATION18Xuxue Feng
1029Jennifer F DilliardIndia2024-04-10Buckley Miller Wright NEW20Onyama Limba
1030Kadeem M GauchoArgentina2024-04-24Morlong Associates QUALIFIED61Asiya Javayant
1031Deepesh J BriddickGermany2024-04-08Chemel, James L Cpa RENEWAL2Amy Elsner
1032Izzy P GlickIndia2024-04-13Buckley Miller Wright PROPOSAL25Anna Fali
1033Wickens A WaycottJapan2024-04-14Chemel, James L Cpa UNQUALIFIED85Anna Fali
1034Izzy S RimBrazil2024-04-13Benton, John B Jr RENEWAL58Stephen Shaw
1035Rodrigues C GlickJapan2024-04-05Truhlar And Truhlar Attys QUALIFIED97Onyama Limba
1036Morrow L KuskoArgentina2024-04-17King, Christopher A Esq QUALIFIED12Bernardo Dominic
1037Ricardo P VenereJapan2024-04-27Chanay, Jeffrey A Esq PROPOSAL53Ivan Magalhaes
1038Aika T VocelkaBrazil2024-04-11Truhlar And Truhlar Attys RENEWAL26Onyama Limba
1039Rodrigues F KolmetzIndia2024-04-01Rangoni Of Florence RENEWAL59Asiya Javayant
1040Julie N RoysterBrazil2024-04-13Rangoni Of Florence NEGOTIATION66Bernardo Dominic
1041Morrow G RoysterBrazil2024-04-14Dorl, James J Esq NEGOTIATION37Bernardo Dominic
1042Isabel N OldroydArgentina2024-04-18Buckley Miller Wright QUALIFIED37Elwin Sharvill
1043Kadeem T GarufiIndia2024-04-26Morlong Associates RENEWAL76Ivan Magalhaes
1044Antonio Z BologniaGermany2024-04-25Truhlar And Truhlar Attys NEGOTIATION78Elwin Sharvill
1045Murillo I MaletJapan2024-04-17Benton, John B Jr RENEWAL32Stephen Shaw
1046Jennifer B RoysterUnited Kingdom2024-04-26Truhlar And Truhlar Attys NEGOTIATION12Amy Elsner
1047Julie V ChuiRussia2024-04-23Feltz Printing Service NEW56Stephen Shaw
1048Aika Z VocelkaGermany2024-04-24Morlong Associates RENEWAL32Bernardo Dominic
1049Ricardo X BologniaAustralia2024-04-22Chapman, Ross E Esq UNQUALIFIED29Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Silvio Q InouyeBrazilIvan Magalhaes UNQUALIFIED
Emily I KolmetzJapanOnyama Limba RENEWAL
Sinclair S RutaJapanBernardo Dominic RENEWAL
Claire B VenereGermanyIoni Bowcher UNQUALIFIED
Silvio D VenereAustraliaAmy Elsner RENEWAL
Aditya M AmigonJapanElwin Sharvill NEW
Mujtaba B InouyeRussiaElwin Sharvill NEGOTIATION
Claire E RutaFranceBernardo Dominic NEGOTIATION
Sinclair X GarufiBrazilStephen Shaw QUALIFIED
Juan N DarakjyGermanyStephen Shaw NEW
Cody F FerenczCanadaIvan Magalhaes QUALIFIED
Stacey F DoeArgentinaElwin Sharvill PROPOSAL
Leja X OstroskyItalyElwin Sharvill UNQUALIFIED
Aditya K VocelkaIndiaAmy Elsner NEW
Francesco F NestleAustraliaBernardo Dominic UNQUALIFIED
Julie T BowleyItalyOnyama Limba NEW
Smith J StockhamSpainAmy Elsner NEW
Misaki I MaletJapanStephen Shaw NEW
Ricardo Z SlusarskiIndiaAsiya Javayant PROPOSAL
Arvin O DilliardUnited KingdomIoni Bowcher PROPOSAL
Octavia U ButtFranceBernardo Dominic RENEWAL
Greenwood H OldroydUnited KingdomXuxue Feng UNQUALIFIED
Stacey V PoquetteRussiaAmy Elsner QUALIFIED
Aditya A OstroskyGermanyXuxue Feng QUALIFIED
Kadeem E AlbaresArgentinaIvan Magalhaes NEGOTIATION
Leja A RulapaughRussiaIvan Magalhaes PROPOSAL
Arvin X DoeIndiaXuxue Feng NEW
Emily S WaycottAustraliaAnna Fali QUALIFIED
Murillo M WhobreyBrazilOnyama Limba UNQUALIFIED
Isabel G ButtIndiaOnyama Limba NEW
Sinclair Q BowleyCanadaAmy Elsner PROPOSAL
Izzy N RoysterIndiaBernardo Dominic NEGOTIATION
Stacey L FerenczJapanAsiya Javayant NEGOTIATION
Arvin H StockhamFranceOnyama Limba UNQUALIFIED
Stacey C TollnerBrazilAsiya Javayant RENEWAL
Stacey H CaldareraBrazilAsiya Javayant UNQUALIFIED
Deepesh U GauchoGermanyElwin Sharvill RENEWAL
Greenwood I RoysterCanadaXuxue Feng NEGOTIATION
Ivar B KuskoBrazilStephen Shaw NEGOTIATION
Aika O AlbaresBrazilElwin Sharvill QUALIFIED
Adams O TollnerGermanyIvan Magalhaes QUALIFIED
Adams G ShinkoUnited KingdomAnna Fali RENEWAL
Octavia P MacleadItalyXuxue Feng UNQUALIFIED
Octavia G TollnerGermanyElwin Sharvill RENEWAL
Emily Y DarakjyAustraliaAmy Elsner RENEWAL
Nicolas D InouyeBrazilIoni Bowcher NEW
Ricardo C KuskoAustraliaIoni Bowcher QUALIFIED
Jones R GillianUnited KingdomOnyama Limba NEW
Faith M MaletAustraliaElwin Sharvill QUALIFIED
Octavia T ShinkoSpainAmy Elsner NEW
Frozen Columns
Name
Murillo P Morasca
Chavez E Rulapaugh
Izzy Y Caudy
Salvatore K Doe
Greenwood T Sergi
Mujtaba Z Poquette
Clifford Y Rulapaugh
Misaki R Bolognia
Rodrigues W Garufi
David S Oldroyd
Costa D Briddick
Tony Q Dilliard
Deepesh C Glick
Julie F Butt
Wickens H Bolognia
Jefferson T Caudy
Emily W Flosi
Leja Q Rulapaugh
Jefferson U Glick
Ashley B Caudy
Morrow S Perin
Salvatore D Whobrey
Leon V Darakjy
Morrow F Venere
Stacey Y Malet
Costa H Poquette
Misaki V Gillian
Cody H Kusko
Alejandro V Marrier
Juan O Rim
Ashley Y Foller
David U Butt
Leja U Paprocki
Maria F Kolmetz
Faith Q Morasca
Munro P Waycott
Costa H Malet
James O Chui
Greenwood K Caudy
Salvatore V Tollner
Juan J Vocelka
Aika R Amigon
Aika C Kusko
Leon J Dilliard
Munro T Ostrosky
Emily R Perin
Jeanfrancois K Wieser
Octavia B Royster
Jennifer W Caldarera
Johnson D Amigon
IdCountryDate
1000France2024-04-02
1001Argentina2024-04-26
1002Italy2024-04-01
1003Russia2024-04-03
1004Argentina2024-04-23
1005Canada2024-04-23
1006Brazil2024-04-26
1007Japan2024-04-09
1008Canada2024-04-05
1009Argentina2024-04-13
1010United Kingdom2024-04-06
1011India2024-04-23
1012Australia2024-04-02
1013Argentina2024-04-10
1014India2024-04-15
1015Australia2024-04-26
1016India2024-04-05
1017Italy2024-04-22
1018Argentina2024-04-28
1019Spain2024-04-02
1020Australia2024-04-16
1021Brazil2024-03-30
1022India2024-04-21
1023Brazil2024-04-07
1024Spain2024-04-12
1025India2024-04-15
1026India2024-04-06
1027Italy2024-04-26
1028Italy2024-04-21
1029United Kingdom2024-04-06
1030Australia2024-04-26
1031Canada2024-04-11
1032Brazil2024-04-22
1033Japan2024-04-24
1034Russia2024-04-04
1035France2024-04-12
1036France2024-03-31
1037Canada2024-04-25
1038Brazil2024-04-06
1039Japan2024-04-07
1040India2024-04-15
1041Italy2024-04-03
1042India2024-04-11
1043India2024-04-28
1044France2024-04-13
1045Brazil2024-04-15
1046Canada2024-04-01
1047Argentina2024-04-02
1048Canada2024-04-26
1049Canada2024-04-15

On-Demand Data

NameIdCountryDate
Nicolas F Caldarera1000Japan2024-04-23
Salvatore Q Caldarera1001France2024-04-25
Munro Y Glick1002Germany2024-04-12
Silvio X Rulapaugh1003Australia2024-04-04
Leon J Vocelka1004Russia2024-04-14
David M Bolognia1005Canada2024-04-19
Alejandro H Caudy1006Italy2024-04-27
Kaitlin C Gillian1007Brazil2024-04-20
Murillo D Caldarera1008United Kingdom2024-04-11
Chavez N Stockham1009India2024-04-22
Mayumi V Foller1010Australia2024-03-31
Adams R Royster1011Brazil2024-04-24
Sinclair S Saylors1012India2024-04-24
Morrow U Sergi1013India2024-04-19
Leon B Gillian1014Argentina2024-04-25
Octavia L Campain1015Australia2024-04-28
Salvatore G Schemmer1016Brazil2024-04-22
Mayumi N Briddick1017India2024-04-12
Faith F Malet1018Japan2024-04-11
Adams K Garufi1019Spain2024-04-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Salvatore Z FigeroaBrazilAsiya Javayant RENEWAL
Aika L VenereUnited KingdomXuxue Feng UNQUALIFIED
Wickens J RutaUnited KingdomIoni Bowcher RENEWAL
Jefferson V SchemmerRussiaStephen Shaw PROPOSAL
Ricardo R RutaItalyIvan Magalhaes PROPOSAL
Sinclair X CaudySpainOnyama Limba PROPOSAL
Leja S CaudyIndiaAmy Elsner PROPOSAL
Ashley K RutaCanadaAmy Elsner QUALIFIED
Alejandro N InouyeRussiaIvan Magalhaes NEW
Jefferson Q WhobreyGermanyBernardo Dominic RENEWAL
Greenwood A VocelkaJapanBernardo Dominic UNQUALIFIED
Octavia W TollnerItalyAmy Elsner NEW
Leja P BriddickCanadaXuxue Feng NEW
Ashley I FerenczUnited KingdomAnna Fali PROPOSAL
Cody P MacleadUnited KingdomStephen Shaw UNQUALIFIED
Arvin V RulapaughSpainIvan Magalhaes QUALIFIED
Greenwood D RoysterRussiaStephen Shaw UNQUALIFIED
Isabel G MacleadAustraliaAsiya Javayant NEGOTIATION
Kadeem I AmigonGermanyAmy Elsner NEW
Darci M InouyeFranceStephen Shaw PROPOSAL
Leon L GillianSpainAmy Elsner NEGOTIATION
Julie I StensethGermanyElwin Sharvill RENEWAL
Kadeem Z FerenczJapanIvan Magalhaes NEGOTIATION
Sinclair P FerenczGermanyOnyama Limba QUALIFIED
Maria F SaylorsItalyAsiya Javayant QUALIFIED
Jeanfrancois U GillianCanadaElwin Sharvill NEGOTIATION
Jones Z CaldareraFranceIoni Bowcher UNQUALIFIED
Leja F BriddickFranceBernardo Dominic UNQUALIFIED
Misaki O PerinArgentinaIoni Bowcher NEW
Cody O VocelkaItalyIoni Bowcher UNQUALIFIED
Tony H RimCanadaAnna Fali PROPOSAL
Adams O PaprockiRussiaAnna Fali UNQUALIFIED
Faith O NestleIndiaBernardo Dominic NEW
Isabel Y PaprockiAustraliaStephen Shaw QUALIFIED
Jones F TollnerIndiaElwin Sharvill RENEWAL
Chavez S ShinkoCanadaBernardo Dominic RENEWAL
Munro Q BowleyAustraliaIoni Bowcher NEW
Costa Y WhobreyFranceIvan Magalhaes NEGOTIATION
Juan D VocelkaArgentinaBernardo Dominic RENEWAL
Emily V NestleSpainElwin Sharvill 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>