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
Leja H MacleadIndiaStephen Shaw NEW
Ashley F MarrierRussiaAnna Fali NEW
Aruna S GlickIndiaOnyama Limba NEW
Morrow P StensethFranceAmy Elsner QUALIFIED
Rodrigues S CaudyGermanyStephen Shaw UNQUALIFIED
Nicolas Q KuskoIndiaStephen Shaw PROPOSAL
David K KolmetzUnited KingdomAmy Elsner RENEWAL
Alejandro P GarufiAustraliaXuxue Feng QUALIFIED
Wickens R InouyeGermanyAsiya Javayant NEGOTIATION
Munro A WhobreyCanadaAsiya Javayant NEW
Maria A SlusarskiJapanStephen Shaw NEW
Juan I FlosiSpainAnna Fali RENEWAL
Deepesh S WaycottSpainStephen Shaw PROPOSAL
Salvatore N BriddickArgentinaIoni Bowcher UNQUALIFIED
Chavez Q GauchoItalyIvan Magalhaes QUALIFIED
Antonio J AmigonAustraliaAnna Fali UNQUALIFIED
Maria L AmigonAustraliaStephen Shaw RENEWAL
Cody Y DoeItalyAsiya Javayant NEGOTIATION
Deepesh Z GauchoSpainIvan Magalhaes QUALIFIED
Adams O ButtAustraliaOnyama Limba UNQUALIFIED
Jones S WaycottIndiaXuxue Feng RENEWAL
Maria Y WieserUnited KingdomElwin Sharvill RENEWAL
Leon V DilliardAustraliaAsiya Javayant PROPOSAL
Deepesh P NestleBrazilIvan Magalhaes RENEWAL
Smith M GauchoUnited KingdomBernardo Dominic RENEWAL
Jefferson F WaycottBrazilAsiya Javayant NEGOTIATION
Silvio C SergiSpainAmy Elsner RENEWAL
Munro J MacleadUnited KingdomElwin Sharvill RENEWAL
Juan V IturbideItalyBernardo Dominic UNQUALIFIED
Ivar E DilliardCanadaAmy Elsner RENEWAL
David O IturbideCanadaAnna Fali PROPOSAL
Aditya Y RulapaughItalyIvan Magalhaes NEW
Morrow S FigeroaAustraliaAmy Elsner RENEWAL
Octavia U MaletIndiaAsiya Javayant RENEWAL
Ivar N CampainSpainStephen Shaw QUALIFIED
Jefferson I AlbaresFranceIoni Bowcher RENEWAL
Adams B CaldareraRussiaIvan Magalhaes RENEWAL
Maisha E NestleAustraliaAsiya Javayant QUALIFIED
Octavia D NestleIndiaAsiya Javayant UNQUALIFIED
Leja R ButtAustraliaIvan Magalhaes RENEWAL
Costa O PerinArgentinaElwin Sharvill QUALIFIED
Tony X CaldareraArgentinaXuxue Feng UNQUALIFIED
Leon J FlosiCanadaElwin Sharvill NEGOTIATION
Johnson L TollnerIndiaXuxue Feng NEW
Munro O DilliardJapanIoni Bowcher RENEWAL
Kadeem S CampainFranceStephen Shaw UNQUALIFIED
Julie F AmigonCanadaIvan Magalhaes RENEWAL
Aruna F NestleItalyAsiya Javayant QUALIFIED
Stacey B MorascaJapanAmy Elsner RENEWAL
Aruna B MorascaCanadaStephen Shaw RENEWAL
Horizontal
NameCountryRepresentativeStatus
Costa W VocelkaArgentinaBernardo Dominic NEW
Izzy S StockhamArgentinaIvan Magalhaes NEGOTIATION
Aruna B OldroydUnited KingdomAmy Elsner NEW
Arvin B GauchoGermanyIvan Magalhaes UNQUALIFIED
Jennifer A RimAustraliaBernardo Dominic QUALIFIED
Salvatore V CaudyIndiaXuxue Feng NEW
Jones W ShinkoArgentinaOnyama Limba NEW
Leon S GauchoGermanyOnyama Limba UNQUALIFIED
Maisha L PaprockiBrazilIvan Magalhaes UNQUALIFIED
Jefferson C ChuiSpainElwin Sharvill UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Nicolas F SaylorsGermany2024-04-11Chemel, James L Cpa RENEWAL36Asiya Javayant
1001Kadeem O VenereSpain2024-04-19Chemel, James L Cpa QUALIFIED35Bernardo Dominic
1002Kadeem W DarakjyCanada2024-04-05King, Christopher A Esq PROPOSAL26Amy Elsner
1003Morrow Q VocelkaItaly2024-04-21Buckley Miller Wright UNQUALIFIED99Ivan Magalhaes
1004Silvio V MaletJapan2024-03-27Rousseaux, Michael Esq NEW62Ioni Bowcher
1005Jeanfrancois P MaletFrance2024-04-23Buckley Miller Wright NEW42Ioni Bowcher
1006Murillo I SlusarskiBrazil2024-04-24Chemel, James L Cpa NEW35Bernardo Dominic
1007Costa X SlusarskiSpain2024-03-27Chapman, Ross E Esq RENEWAL68Ioni Bowcher
1008Leja N GauchoFrance2024-04-22Rangoni Of Florence PROPOSAL4Bernardo Dominic
1009Costa C SaylorsGermany2024-04-02King, Christopher A Esq PROPOSAL99Ivan Magalhaes
1010Mujtaba Q RulapaughSpain2024-04-16Feltz Printing Service UNQUALIFIED37Stephen Shaw
1011Antonio W FollerItaly2024-04-11Chemel, James L Cpa UNQUALIFIED7Amy Elsner
1012Kadeem E CaudyBrazil2024-04-06Chapman, Ross E Esq QUALIFIED79Asiya Javayant
1013Ivar L GillianFrance2024-04-19Morlong Associates RENEWAL48Xuxue Feng
1014Jefferson O MaletUnited Kingdom2024-04-02Chapman, Ross E Esq PROPOSAL40Stephen Shaw
1015Jennifer N ChuiArgentina2024-04-13Buckley Miller Wright NEGOTIATION76Ivan Magalhaes
1016Leon H DarakjyItaly2024-04-06Buckley Miller Wright NEGOTIATION90Xuxue Feng
1017Isabel I BowleyJapan2024-03-31Chapman, Ross E Esq RENEWAL41Ivan Magalhaes
1018Murillo K ShinkoBrazil2024-04-01Rousseaux, Michael Esq QUALIFIED8Onyama Limba
1019Ashley B GillianGermany2024-04-13Truhlar And Truhlar Attys PROPOSAL64Ivan Magalhaes
1020Maisha Z FlosiUnited Kingdom2024-03-26Benton, John B Jr PROPOSAL74Asiya Javayant
1021Darci S MorascaGermany2024-04-17Benton, John B Jr NEW88Ioni Bowcher
1022Darci R OldroydJapan2024-04-02Dorl, James J Esq QUALIFIED6Ioni Bowcher
1023Johnson L RimGermany2024-04-23King, Christopher A Esq RENEWAL30Ivan Magalhaes
1024Chavez J VenereBrazil2024-04-12Chemel, James L Cpa NEGOTIATION27Amy Elsner
1025Faith S MaletGermany2024-04-15Feiner Bros PROPOSAL47Bernardo Dominic
1026Aruna K AmigonSpain2024-03-31King, Christopher A Esq QUALIFIED24Elwin Sharvill
1027Emily I SlusarskiBrazil2024-04-04Printing Dimensions RENEWAL25Ivan Magalhaes
1028Claire C StockhamItaly2024-04-19Chanay, Jeffrey A Esq NEGOTIATION67Bernardo Dominic
1029Julie G BriddickBrazil2024-04-02Dorl, James J Esq RENEWAL29Stephen Shaw
1030Sinclair H SchemmerUnited Kingdom2024-04-12Printing Dimensions PROPOSAL15Xuxue Feng
1031Mayumi K PoquetteUnited Kingdom2024-03-26Feiner Bros PROPOSAL52Elwin Sharvill
1032Juan B KuskoJapan2024-03-26Feltz Printing Service UNQUALIFIED37Onyama Limba
1033Francesco Y OldroydGermany2024-04-20Buckley Miller Wright UNQUALIFIED4Ioni Bowcher
1034Antonio J InouyeAustralia2024-04-09Feiner Bros NEW78Elwin Sharvill
1035Kadeem E WhobreyBrazil2024-04-06Feltz Printing Service RENEWAL51Xuxue Feng
1036David Z WieserArgentina2024-04-24Printing Dimensions NEGOTIATION44Elwin Sharvill
1037Stacey E KuskoGermany2024-04-09Feltz Printing Service PROPOSAL29Elwin Sharvill
1038Arvin P IturbideJapan2024-04-15Dorl, James J Esq NEGOTIATION50Asiya Javayant
1039Darci N FigeroaCanada2024-04-12Commercial Press RENEWAL78Asiya Javayant
1040Nicolas O FollerCanada2024-04-01Feiner Bros QUALIFIED41Bernardo Dominic
1041James X StensethRussia2024-03-26Feiner Bros UNQUALIFIED33Stephen Shaw
1042Julie S BologniaFrance2024-04-07Chanay, Jeffrey A Esq NEW18Xuxue Feng
1043Salvatore E SlusarskiArgentina2024-04-16Rousseaux, Michael Esq QUALIFIED65Bernardo Dominic
1044Tony M ShinkoItaly2024-03-27Feltz Printing Service NEW85Onyama Limba
1045Leja Z PerinSpain2024-04-24Buckley Miller Wright RENEWAL1Onyama Limba
1046Clifford K RoysterCanada2024-03-31Feiner Bros UNQUALIFIED37Xuxue Feng
1047Maria V MorascaIndia2024-04-18Benton, John B Jr QUALIFIED16Bernardo Dominic
1048Sinclair U KuskoIndia2024-03-27Commercial Press RENEWAL35Bernardo Dominic
1049Isabel Q DoeBrazil2024-04-12Morlong Associates UNQUALIFIED73Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Tony G DoeJapanAmy Elsner NEGOTIATION
Kadeem F SlusarskiArgentinaXuxue Feng RENEWAL
Nicolas Y PerinRussiaOnyama Limba PROPOSAL
David M TollnerBrazilAsiya Javayant QUALIFIED
Aditya Q MarrierFranceStephen Shaw UNQUALIFIED
Sinclair H CaudyBrazilBernardo Dominic NEW
Maisha G SlusarskiGermanyIvan Magalhaes NEGOTIATION
Izzy M RutaIndiaAmy Elsner UNQUALIFIED
Claire M WhobreyCanadaStephen Shaw UNQUALIFIED
Julie U DoeJapanAmy Elsner QUALIFIED
Misaki Q RoysterGermanyAmy Elsner NEGOTIATION
Darci O VocelkaArgentinaElwin Sharvill NEGOTIATION
Chavez Q BologniaRussiaStephen Shaw NEGOTIATION
Deepesh G StockhamArgentinaAsiya Javayant QUALIFIED
Leon L NestleJapanIvan Magalhaes UNQUALIFIED
Maria E DilliardCanadaIoni Bowcher NEW
Chavez F PoquetteBrazilIvan Magalhaes NEGOTIATION
James B GlickItalyElwin Sharvill RENEWAL
Kadeem O CaudyAustraliaXuxue Feng RENEWAL
Juan N ShinkoItalyAmy Elsner QUALIFIED
Ivar D KolmetzRussiaIvan Magalhaes QUALIFIED
Ashley F BriddickCanadaIoni Bowcher UNQUALIFIED
Isabel R KolmetzAustraliaElwin Sharvill PROPOSAL
Arvin Y RulapaughArgentinaIvan Magalhaes QUALIFIED
Izzy T ShinkoCanadaIoni Bowcher QUALIFIED
Nicolas W KuskoSpainAsiya Javayant RENEWAL
Clifford U IturbideBrazilXuxue Feng NEW
Adams T StensethIndiaIoni Bowcher RENEWAL
Faith I StockhamRussiaElwin Sharvill RENEWAL
Murillo L RimCanadaBernardo Dominic UNQUALIFIED
Adams A InouyeCanadaIvan Magalhaes PROPOSAL
Aika J AmigonUnited KingdomIoni Bowcher PROPOSAL
Clifford F MaletRussiaElwin Sharvill QUALIFIED
Octavia X WaycottItalyAmy Elsner UNQUALIFIED
Jennifer I CampainCanadaElwin Sharvill NEW
Faith E SlusarskiAustraliaAmy Elsner NEW
James X KuskoAustraliaOnyama Limba UNQUALIFIED
Greenwood J CaudyBrazilIvan Magalhaes RENEWAL
Leon D TollnerRussiaIoni Bowcher NEGOTIATION
Octavia E ChuiItalyOnyama Limba QUALIFIED
David E InouyeSpainIoni Bowcher QUALIFIED
Julie M CaudySpainIoni Bowcher PROPOSAL
Darci Q FollerIndiaAnna Fali UNQUALIFIED
Costa W ButtJapanXuxue Feng NEW
Chavez H ShinkoAustraliaOnyama Limba NEGOTIATION
Stacey C GarufiArgentinaStephen Shaw QUALIFIED
Jones P CaudyItalyIvan Magalhaes RENEWAL
Maisha G GlickCanadaElwin Sharvill NEGOTIATION
Francesco V MorascaItalyElwin Sharvill NEW
Leja E CaldareraGermanyElwin Sharvill RENEWAL
Frozen Columns
Name
Faith Y Caldarera
Octavia B Stenseth
Julie M Perin
James O Whobrey
Faith M Nicka
Alejandro X Caldarera
Faith Q Whobrey
Juan Q Gaucho
Aruna I Saylors
Stacey J Oldroyd
Adams I Sergi
Johnson W Flosi
Julie U Briddick
Ashley M Waycott
Kadeem Y Malet
Izzy E Vocelka
Izzy E Morasca
Sinclair S Garufi
Aditya G Briddick
Chavez R Amigon
Stacey E Schemmer
Faith F Albares
Antonio N Whobrey
Rodrigues H Sergi
Antonio G Darakjy
Emily F Amigon
Aditya E Butt
Leon G Marrier
Ricardo J Doe
Julie D Campain
Jeanfrancois P Figeroa
Salvatore U Kusko
Darci I Campain
Deepesh L Bolognia
Emily W Chui
Tony R Marrier
Smith P Marrier
Izzy C Albares
Jefferson C Waycott
Darci Q Gaucho
Emily D Nicka
Wickens V Darakjy
Emily B Caudy
Jennifer Q Kusko
Chavez A Slusarski
Clifford W Nestle
Cody D Schemmer
Cody R Gaucho
James J Sergi
Tony S Waycott
IdCountryDate
1000Brazil2024-04-05
1001Argentina2024-03-27
1002France2024-04-17
1003Japan2024-04-01
1004Brazil2024-04-02
1005Russia2024-04-13
1006Brazil2024-04-23
1007Canada2024-04-21
1008United Kingdom2024-04-14
1009Japan2024-04-06
1010Argentina2024-04-10
1011Canada2024-04-02
1012India2024-03-28
1013Canada2024-04-10
1014Spain2024-04-15
1015India2024-03-28
1016Russia2024-04-06
1017Australia2024-04-11
1018United Kingdom2024-04-06
1019Russia2024-04-06
1020Canada2024-04-10
1021Russia2024-04-02
1022Spain2024-04-24
1023Spain2024-04-05
1024Brazil2024-04-21
1025Australia2024-04-02
1026United Kingdom2024-03-27
1027France2024-04-18
1028Italy2024-04-10
1029United Kingdom2024-04-20
1030Spain2024-03-27
1031Japan2024-04-12
1032United Kingdom2024-04-05
1033Australia2024-04-11
1034Japan2024-04-18
1035Italy2024-04-19
1036France2024-04-15
1037Germany2024-04-09
1038United Kingdom2024-04-18
1039Brazil2024-04-15
1040United Kingdom2024-03-30
1041India2024-04-17
1042United Kingdom2024-04-19
1043Canada2024-04-08
1044Russia2024-04-10
1045Japan2024-03-30
1046Argentina2024-03-27
1047Spain2024-04-02
1048Italy2024-04-14
1049Australia2024-04-11

On-Demand Data

NameIdCountryDate
Clifford A Marrier1000Russia2024-04-07
Kaitlin P Foller1001Australia2024-04-01
Izzy M Slusarski1002Russia2024-04-16
Alejandro T Ferencz1003Germany2024-04-23
Maria I Saylors1004Italy2024-04-13
Kaitlin H Rim1005Germany2024-04-17
Kadeem P Whobrey1006United Kingdom2024-04-23
Antonio B Stockham1007Spain2024-04-13
Aditya S Garufi1008India2024-03-28
Jones E Royster1009India2024-03-31
Kadeem Q Ostrosky1010France2024-04-12
Smith D Marrier1011Brazil2024-04-08
Stacey X Albares1012Australia2024-04-14
Murillo A Stockham1013Germany2024-04-23
Izzy W Darakjy1014Japan2024-03-29
Emily O Rim1015Germany2024-04-13
Leja T Campain1016Spain2024-04-10
Aditya G Waycott1017Italy2024-04-22
Leon T Poquette1018Australia2024-03-27
Darci W Slusarski1019Brazil2024-03-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Adams U KuskoJapanXuxue Feng NEGOTIATION
Mayumi Z SergiUnited KingdomXuxue Feng QUALIFIED
Tony S RulapaughCanadaStephen Shaw UNQUALIFIED
Jefferson P GlickRussiaAmy Elsner QUALIFIED
Jones Z WhobreyRussiaBernardo Dominic NEGOTIATION
Wickens P MorascaSpainElwin Sharvill QUALIFIED
Salvatore L KuskoSpainXuxue Feng RENEWAL
Morrow Z ChuiArgentinaXuxue Feng QUALIFIED
Izzy Z DilliardAustraliaOnyama Limba QUALIFIED
Faith W FollerUnited KingdomStephen Shaw QUALIFIED
Mujtaba Y BologniaUnited KingdomIoni Bowcher UNQUALIFIED
Silvio I NickaUnited KingdomAmy Elsner PROPOSAL
Jones R ChuiArgentinaOnyama Limba RENEWAL
Stacey X FollerGermanyBernardo Dominic PROPOSAL
Octavia K SchemmerUnited KingdomStephen Shaw PROPOSAL
Silvio A GauchoSpainXuxue Feng NEGOTIATION
Alejandro Z IturbideUnited KingdomStephen Shaw NEW
Silvio E MorascaSpainAnna Fali PROPOSAL
Ashley H WieserRussiaElwin Sharvill UNQUALIFIED
Wickens H ButtSpainElwin Sharvill RENEWAL
Misaki A AlbaresBrazilXuxue Feng NEGOTIATION
Ricardo N VocelkaJapanAnna Fali PROPOSAL
Mayumi F AmigonRussiaStephen Shaw UNQUALIFIED
Kaitlin G DoeIndiaBernardo Dominic UNQUALIFIED
Izzy Y GlickIndiaBernardo Dominic PROPOSAL
Jefferson U KolmetzJapanElwin Sharvill PROPOSAL
Izzy Z GauchoUnited KingdomIvan Magalhaes UNQUALIFIED
Tony L DilliardGermanyIvan Magalhaes NEGOTIATION
Munro V SlusarskiUnited KingdomAmy Elsner NEGOTIATION
Jones B WhobreyArgentinaAsiya Javayant UNQUALIFIED
Leja E NickaBrazilElwin Sharvill QUALIFIED
Adams D OstroskyAustraliaAsiya Javayant RENEWAL
Misaki G RutaAustraliaStephen Shaw NEW
Juan X InouyeUnited KingdomIvan Magalhaes UNQUALIFIED
Jefferson V InouyeSpainAsiya Javayant QUALIFIED
Claire P TollnerGermanyXuxue Feng NEW
Alejandro D StockhamArgentinaAmy Elsner UNQUALIFIED
Leon K InouyeBrazilIvan Magalhaes UNQUALIFIED
Jeanfrancois Z DilliardRussiaIoni Bowcher QUALIFIED
Julie H RoysterArgentinaIvan Magalhaes RENEWAL

<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>