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
Julie C SlusarskiCanadaAsiya Javayant RENEWAL
Salvatore L GauchoCanadaIvan Magalhaes PROPOSAL
Kadeem L PerinArgentinaIvan Magalhaes PROPOSAL
Tony M FigeroaUnited KingdomIvan Magalhaes UNQUALIFIED
Jennifer H StensethCanadaOnyama Limba QUALIFIED
Leja C GarufiSpainOnyama Limba NEGOTIATION
Morrow V PaprockiJapanBernardo Dominic UNQUALIFIED
Antonio E BowleySpainAsiya Javayant RENEWAL
Sinclair X SlusarskiArgentinaAsiya Javayant RENEWAL
Aruna M PerinFranceStephen Shaw PROPOSAL
Clifford E WaycottUnited KingdomIoni Bowcher UNQUALIFIED
Emily U VocelkaJapanXuxue Feng NEGOTIATION
Leja G InouyeAustraliaOnyama Limba NEGOTIATION
Jennifer W RoysterJapanBernardo Dominic PROPOSAL
Salvatore B VenereGermanyAnna Fali UNQUALIFIED
Darci B TollnerRussiaStephen Shaw RENEWAL
Jennifer Z OstroskyJapanXuxue Feng RENEWAL
Mujtaba J BriddickItalyXuxue Feng QUALIFIED
Sinclair U KuskoCanadaAnna Fali RENEWAL
Jones A NestleAustraliaElwin Sharvill NEGOTIATION
Wickens Z StensethItalyStephen Shaw QUALIFIED
Sinclair X BologniaGermanyIvan Magalhaes UNQUALIFIED
Clifford H CampainBrazilXuxue Feng NEW
Aditya O RoysterFranceBernardo Dominic NEW
Emily S MaletIndiaIvan Magalhaes NEW
Alejandro X WaycottArgentinaStephen Shaw UNQUALIFIED
Ivar W WaycottUnited KingdomOnyama Limba NEW
Maisha P TollnerUnited KingdomAmy Elsner UNQUALIFIED
Alejandro F BriddickArgentinaIoni Bowcher QUALIFIED
Isabel P RimUnited KingdomAnna Fali UNQUALIFIED
Wickens S IturbideJapanIvan Magalhaes NEGOTIATION
Kadeem N KolmetzArgentinaOnyama Limba QUALIFIED
Julie Z MorascaSpainAnna Fali RENEWAL
Juan E FerenczRussiaIoni Bowcher UNQUALIFIED
Johnson M PerinArgentinaIoni Bowcher QUALIFIED
Clifford V DarakjyRussiaAmy Elsner UNQUALIFIED
Octavia U FerenczGermanyXuxue Feng QUALIFIED
Misaki O BologniaFranceBernardo Dominic PROPOSAL
Mayumi H MaletUnited KingdomIvan Magalhaes PROPOSAL
Wickens G RulapaughIndiaOnyama Limba PROPOSAL
Ivar V OstroskyFranceXuxue Feng NEGOTIATION
Juan Y CaudyGermanyIvan Magalhaes PROPOSAL
Antonio G WaycottCanadaElwin Sharvill UNQUALIFIED
Salvatore H FlosiItalyAnna Fali RENEWAL
Maisha A OstroskyFranceElwin Sharvill NEW
Jones I DarakjyUnited KingdomAmy Elsner RENEWAL
Johnson G TollnerGermanyXuxue Feng QUALIFIED
Kadeem I DilliardRussiaAsiya Javayant NEGOTIATION
Costa V NestleItalyBernardo Dominic QUALIFIED
Chavez I MaletAustraliaIvan Magalhaes NEW
Horizontal
NameCountryRepresentativeStatus
Mayumi L FollerArgentinaXuxue Feng NEW
Munro B SaylorsCanadaAsiya Javayant NEW
Kadeem Z GauchoRussiaAnna Fali RENEWAL
Maisha S StockhamFranceAmy Elsner PROPOSAL
Jeanfrancois R SergiUnited KingdomOnyama Limba NEGOTIATION
Munro X RoysterGermanyIoni Bowcher UNQUALIFIED
Murillo O VocelkaFranceBernardo Dominic NEGOTIATION
Aditya E OldroydFranceElwin Sharvill QUALIFIED
Kaitlin T FigeroaBrazilBernardo Dominic UNQUALIFIED
David I DoeItalyOnyama Limba QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maisha K NestleItaly2024-04-11Benton, John B Jr QUALIFIED20Asiya Javayant
1001Octavia Y GauchoCanada2024-04-30Morlong Associates QUALIFIED79Ioni Bowcher
1002Arvin G PoquetteCanada2024-04-11Feltz Printing Service NEW89Anna Fali
1003Maria O PaprockiRussia2024-04-28Benton, John B Jr QUALIFIED5Stephen Shaw
1004Jennifer H DilliardAustralia2024-04-22Chanay, Jeffrey A Esq RENEWAL10Onyama Limba
1005Sinclair C SergiItaly2024-04-15Benton, John B Jr RENEWAL16Bernardo Dominic
1006Maisha N PoquetteIndia2024-04-20Printing Dimensions UNQUALIFIED46Xuxue Feng
1007Greenwood X FlosiItaly2024-04-05Rousseaux, Michael Esq NEGOTIATION17Amy Elsner
1008Izzy R GauchoCanada2024-04-08Rangoni Of Florence NEGOTIATION78Stephen Shaw
1009Morrow K FlosiSpain2024-04-27Truhlar And Truhlar Attys PROPOSAL79Onyama Limba
1010Isabel W KuskoFrance2024-04-05Chanay, Jeffrey A Esq NEGOTIATION18Amy Elsner
1011Jones H FerenczCanada2024-04-11Benton, John B Jr NEGOTIATION64Asiya Javayant
1012Jennifer H DoeUnited Kingdom2024-04-11Chemel, James L Cpa RENEWAL20Onyama Limba
1013Cody D BowleyArgentina2024-04-05King, Christopher A Esq UNQUALIFIED96Stephen Shaw
1014Maisha K MaletIndia2024-04-28Printing Dimensions PROPOSAL98Amy Elsner
1015Claire W CaldareraFrance2024-04-13Chanay, Jeffrey A Esq PROPOSAL96Xuxue Feng
1016Mayumi I FigeroaRussia2024-04-07Chemel, James L Cpa NEW44Ivan Magalhaes
1017Isabel C FerenczGermany2024-04-18Feiner Bros NEW67Ioni Bowcher
1018Salvatore O ButtFrance2024-04-26Rangoni Of Florence PROPOSAL62Amy Elsner
1019Kadeem Q MarrierFrance2024-04-20Dorl, James J Esq PROPOSAL76Ivan Magalhaes
1020Johnson Y MaletUnited Kingdom2024-04-11King, Christopher A Esq NEW1Asiya Javayant
1021Julie W TollnerBrazil2024-04-24Rousseaux, Michael Esq NEGOTIATION30Asiya Javayant
1022Clifford S PerinArgentina2024-05-02Benton, John B Jr UNQUALIFIED35Ioni Bowcher
1023Darci U RulapaughItaly2024-04-14Benton, John B Jr QUALIFIED0Elwin Sharvill
1024Johnson E WaycottAustralia2024-04-12Chanay, Jeffrey A Esq QUALIFIED68Xuxue Feng
1025Cody K SchemmerCanada2024-04-29Chanay, Jeffrey A Esq NEGOTIATION81Ioni Bowcher
1026Greenwood Z AlbaresGermany2024-04-12Rangoni Of Florence UNQUALIFIED5Xuxue Feng
1027Leja S GarufiItaly2024-05-01Dorl, James J Esq QUALIFIED35Bernardo Dominic
1028Emily L GarufiUnited Kingdom2024-05-02Rousseaux, Michael Esq NEW26Stephen Shaw
1029Emily R SaylorsUnited Kingdom2024-04-24Rangoni Of Florence PROPOSAL72Amy Elsner
1030Antonio X SergiAustralia2024-04-24Feiner Bros UNQUALIFIED61Anna Fali
1031Maria A RoysterJapan2024-04-26Truhlar And Truhlar Attys PROPOSAL95Xuxue Feng
1032Jones I StockhamItaly2024-04-03Buckley Miller Wright PROPOSAL86Xuxue Feng
1033Francesco H GauchoFrance2024-04-29Rousseaux, Michael Esq QUALIFIED74Asiya Javayant
1034Arvin R OldroydUnited Kingdom2024-04-15Commercial Press UNQUALIFIED63Onyama Limba
1035Alejandro N DilliardAustralia2024-04-03Truhlar And Truhlar Attys UNQUALIFIED10Onyama Limba
1036Jefferson F IturbideCanada2024-04-29Rangoni Of Florence NEW30Onyama Limba
1037David S DilliardIndia2024-04-05Buckley Miller Wright NEGOTIATION30Stephen Shaw
1038Morrow H InouyeUnited Kingdom2024-04-18Rousseaux, Michael Esq NEGOTIATION27Elwin Sharvill
1039Deepesh E FigeroaSpain2024-04-04Printing Dimensions NEW76Xuxue Feng
1040Aika J TollnerFrance2024-04-24Truhlar And Truhlar Attys PROPOSAL65Xuxue Feng
1041Cody C FollerGermany2024-04-09Feltz Printing Service QUALIFIED89Bernardo Dominic
1042Jeanfrancois C ShinkoSpain2024-04-07Rangoni Of Florence UNQUALIFIED0Stephen Shaw
1043Octavia M WaycottRussia2024-04-04Truhlar And Truhlar Attys RENEWAL63Ioni Bowcher
1044Kadeem U GarufiSpain2024-04-18Feiner Bros UNQUALIFIED51Ioni Bowcher
1045Adams C DilliardRussia2024-04-24Rangoni Of Florence NEGOTIATION27Amy Elsner
1046Salvatore W ButtItaly2024-04-16Feltz Printing Service PROPOSAL10Onyama Limba
1047Kaitlin K RulapaughSpain2024-04-18Feltz Printing Service NEGOTIATION69Elwin Sharvill
1048Leja J InouyeUnited Kingdom2024-05-01Rangoni Of Florence NEGOTIATION87Ioni Bowcher
1049Julie J AmigonCanada2024-04-18Rangoni Of Florence UNQUALIFIED98Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Munro Q DarakjyRussiaXuxue Feng NEW
Juan T BowleyArgentinaStephen Shaw NEGOTIATION
Kaitlin G PerinBrazilOnyama Limba NEW
Chavez A SchemmerFranceIvan Magalhaes PROPOSAL
Ivar J MorascaCanadaIoni Bowcher UNQUALIFIED
Rodrigues Q StensethCanadaAmy Elsner QUALIFIED
Aruna O SergiAustraliaOnyama Limba UNQUALIFIED
Munro U OldroydCanadaBernardo Dominic NEGOTIATION
James J DilliardCanadaBernardo Dominic UNQUALIFIED
Aruna Z PaprockiJapanXuxue Feng NEGOTIATION
Johnson G KolmetzItalyAsiya Javayant RENEWAL
Aruna D NestleArgentinaIoni Bowcher RENEWAL
Sinclair M MaletCanadaXuxue Feng NEW
Maisha L OstroskyAustraliaAnna Fali PROPOSAL
Costa M RutaIndiaAsiya Javayant NEW
Misaki L IturbideRussiaIoni Bowcher QUALIFIED
Antonio B BriddickJapanAsiya Javayant QUALIFIED
Misaki F WaycottArgentinaXuxue Feng UNQUALIFIED
Octavia C NickaGermanyBernardo Dominic RENEWAL
Costa O TollnerIndiaOnyama Limba RENEWAL
Cody F CampainIndiaAmy Elsner NEW
Wickens V InouyeAustraliaXuxue Feng NEW
Aika V BriddickCanadaAmy Elsner NEW
Alejandro L RimBrazilAmy Elsner NEGOTIATION
Clifford Q FigeroaBrazilOnyama Limba QUALIFIED
Juan J RoysterFranceOnyama Limba NEW
Silvio P FlosiUnited KingdomOnyama Limba NEGOTIATION
Maisha T WhobreyRussiaElwin Sharvill UNQUALIFIED
Faith X DilliardArgentinaOnyama Limba UNQUALIFIED
Smith J MarrierItalyXuxue Feng NEW
Misaki V StensethAustraliaAsiya Javayant QUALIFIED
Salvatore K FlosiAustraliaIoni Bowcher PROPOSAL
Salvatore R GlickUnited KingdomBernardo Dominic PROPOSAL
Maria L GlickSpainOnyama Limba PROPOSAL
Leon G RulapaughIndiaAmy Elsner PROPOSAL
Mujtaba M KolmetzRussiaIvan Magalhaes RENEWAL
Maria A OstroskyArgentinaBernardo Dominic PROPOSAL
David C MaletBrazilAmy Elsner RENEWAL
Salvatore H StockhamAustraliaAsiya Javayant NEW
Johnson Q VenereSpainAmy Elsner NEW
Leja B WhobreyCanadaXuxue Feng UNQUALIFIED
Salvatore J ButtIndiaAnna Fali UNQUALIFIED
Tony M GauchoIndiaIoni Bowcher RENEWAL
Adams C ChuiBrazilBernardo Dominic QUALIFIED
Misaki P RoysterItalyAsiya Javayant QUALIFIED
Chavez F WhobreyIndiaXuxue Feng UNQUALIFIED
Mayumi F NestleUnited KingdomAnna Fali UNQUALIFIED
Mayumi F KuskoCanadaStephen Shaw PROPOSAL
Misaki J KolmetzGermanyElwin Sharvill UNQUALIFIED
Salvatore R RoysterCanadaIoni Bowcher QUALIFIED
Frozen Columns
Name
Leja T Flosi
Jeanfrancois X Briddick
Juan T Perin
Adams Y Perin
Octavia F Maclead
Ricardo K Malet
Juan M Waycott
Tony V Slusarski
Adams A Dilliard
Kadeem W Amigon
Aruna R Caudy
Adams O Nicka
Tony Q Wieser
Jefferson K Morasca
Jeanfrancois T Gillian
Murillo V Whobrey
Clifford F Schemmer
Wickens K Rulapaugh
Wickens Z Nestle
Kadeem K Morasca
Johnson P Garufi
Ricardo E Paprocki
Ivar F Dilliard
Ricardo F Ferencz
Mayumi I Rim
Deepesh G Malet
Mayumi B Iturbide
Jefferson B Ostrosky
Stacey C Iturbide
Munro V Maclead
Kaitlin Z Foller
Faith B Ruta
Juan U Amigon
Misaki D Malet
Jones V Dilliard
Rodrigues G Amigon
Aika S Gillian
Kadeem F Glick
Mujtaba L Slusarski
Rodrigues D Malet
Smith R Wieser
Deepesh N Gillian
Mujtaba I Kusko
Nicolas K Glick
Izzy D Vocelka
Maria F Kusko
Ivar X Inouye
Jennifer X Waycott
Aditya X Dilliard
Kaitlin D Rulapaugh
IdCountryDate
1000Russia2024-04-30
1001Canada2024-05-02
1002Russia2024-04-11
1003Argentina2024-04-04
1004Canada2024-04-25
1005Russia2024-04-04
1006Russia2024-04-11
1007Japan2024-04-29
1008Canada2024-04-08
1009Brazil2024-04-30
1010Argentina2024-04-23
1011France2024-04-13
1012Argentina2024-04-04
1013Argentina2024-04-05
1014Japan2024-04-06
1015Canada2024-05-01
1016Japan2024-04-10
1017Argentina2024-04-28
1018Australia2024-05-01
1019Spain2024-04-23
1020Japan2024-05-01
1021Spain2024-04-22
1022Italy2024-04-16
1023Argentina2024-05-02
1024Australia2024-04-10
1025Canada2024-04-23
1026France2024-04-25
1027Germany2024-04-17
1028India2024-04-12
1029France2024-04-20
1030Argentina2024-04-21
1031Russia2024-04-09
1032Canada2024-05-01
1033Germany2024-04-21
1034Australia2024-04-16
1035Japan2024-04-05
1036France2024-04-27
1037Argentina2024-04-25
1038Spain2024-05-01
1039Brazil2024-04-07
1040Canada2024-04-23
1041Japan2024-05-01
1042Australia2024-04-14
1043Germany2024-04-08
1044Argentina2024-04-08
1045Russia2024-04-25
1046United Kingdom2024-04-06
1047Spain2024-05-02
1048Argentina2024-04-27
1049Germany2024-04-19

On-Demand Data

NameIdCountryDate
Mayumi L Chui1000Brazil2024-04-19
Adams V Wieser1001Japan2024-04-03
Wickens A Schemmer1002Brazil2024-05-01
Adams L Doe1003United Kingdom2024-04-20
Izzy U Tollner1004United Kingdom2024-04-04
Maisha S Dilliard1005Canada2024-04-26
Jefferson J Amigon1006France2024-04-20
Cody T Gillian1007Spain2024-04-25
Morrow U Iturbide1008Japan2024-04-20
Misaki W Bowley1009France2024-04-22
Jeanfrancois J Ruta1010Argentina2024-04-22
Emily U Foller1011Spain2024-04-07
Isabel G Maclead1012Germany2024-04-26
Aruna I Waycott1013Russia2024-04-15
Deepesh R Paprocki1014India2024-04-25
Juan M Butt1015France2024-04-05
Francesco P Inouye1016Brazil2024-04-28
Cody W Sergi1017Canada2024-05-01
Julie F Nestle1018United Kingdom2024-04-12
Isabel N Stockham1019Argentina2024-04-21
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Deepesh T NestleUnited KingdomOnyama Limba UNQUALIFIED
Aditya V OldroydCanadaAnna Fali QUALIFIED
Maisha J WieserSpainIvan Magalhaes UNQUALIFIED
Darci Q StensethAustraliaAsiya Javayant QUALIFIED
Arvin H PoquetteIndiaBernardo Dominic RENEWAL
Faith Z TollnerGermanyBernardo Dominic NEGOTIATION
Sinclair Z CaudyArgentinaOnyama Limba NEGOTIATION
Stacey X MacleadIndiaAnna Fali NEGOTIATION
Isabel K InouyeArgentinaAmy Elsner RENEWAL
Chavez Q RimIndiaStephen Shaw RENEWAL
Emily R SaylorsBrazilAmy Elsner RENEWAL
Ivar X MacleadArgentinaAmy Elsner QUALIFIED
Arvin U SergiItalyAmy Elsner RENEWAL
Smith G ShinkoFranceIoni Bowcher NEGOTIATION
Ricardo C CampainCanadaAnna Fali UNQUALIFIED
Jennifer L NickaSpainStephen Shaw UNQUALIFIED
Maisha Q CaudyItalyAmy Elsner PROPOSAL
Ricardo N PaprockiArgentinaStephen Shaw NEGOTIATION
David F MacleadJapanXuxue Feng NEGOTIATION
Silvio F KuskoSpainBernardo Dominic RENEWAL
Claire B InouyeRussiaAnna Fali PROPOSAL
James Q SchemmerCanadaOnyama Limba PROPOSAL
Cody G InouyeBrazilAsiya Javayant RENEWAL
Adams O SergiBrazilXuxue Feng PROPOSAL
Julie V AmigonFranceAmy Elsner UNQUALIFIED
Smith H MaletAustraliaElwin Sharvill UNQUALIFIED
Claire P CaudyBrazilXuxue Feng RENEWAL
Costa J NickaUnited KingdomStephen Shaw QUALIFIED
Silvio M VenereJapanBernardo Dominic QUALIFIED
Maisha G FigeroaBrazilStephen Shaw NEW
Octavia R RoysterIndiaOnyama Limba UNQUALIFIED
Antonio O TollnerSpainAnna Fali PROPOSAL
Smith K CaldareraAustraliaOnyama Limba NEGOTIATION
Leja N GauchoGermanyAsiya Javayant QUALIFIED
Kadeem M FlosiRussiaAmy Elsner NEW
Juan Q BologniaGermanyIvan Magalhaes UNQUALIFIED
Jennifer D FerenczBrazilBernardo Dominic RENEWAL
Darci C RoysterGermanyAmy Elsner RENEWAL
Deepesh M MacleadJapanElwin Sharvill RENEWAL
Jennifer W RulapaughCanadaIvan Magalhaes 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>