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
Jennifer K TollnerArgentinaAsiya Javayant RENEWAL
Francesco L OstroskyBrazilStephen Shaw RENEWAL
Jones C KolmetzBrazilStephen Shaw QUALIFIED
Kadeem U GillianIndiaAsiya Javayant NEGOTIATION
Ricardo A OldroydCanadaAnna Fali RENEWAL
Johnson C KolmetzUnited KingdomIvan Magalhaes PROPOSAL
Julie Y NestleItalyXuxue Feng NEGOTIATION
Octavia X IturbideBrazilXuxue Feng QUALIFIED
Smith W StensethRussiaAmy Elsner PROPOSAL
Sinclair S RoysterBrazilIvan Magalhaes NEW
Maisha W InouyeRussiaBernardo Dominic PROPOSAL
Antonio S DilliardGermanyXuxue Feng QUALIFIED
Munro G BriddickJapanAsiya Javayant RENEWAL
Ricardo T OldroydGermanyIoni Bowcher RENEWAL
Aruna U NestleRussiaOnyama Limba NEW
Silvio O FollerFranceAsiya Javayant UNQUALIFIED
Johnson K BowleyFranceXuxue Feng PROPOSAL
Darci V ChuiItalyBernardo Dominic RENEWAL
Costa V AmigonCanadaIoni Bowcher PROPOSAL
Costa M SaylorsCanadaBernardo Dominic NEW
Adams J AlbaresCanadaOnyama Limba NEGOTIATION
Leja W RulapaughRussiaIoni Bowcher NEW
Clifford A MacleadAustraliaAnna Fali UNQUALIFIED
Faith A ButtSpainAnna Fali PROPOSAL
Aika U InouyeUnited KingdomStephen Shaw QUALIFIED
Nicolas R NestleSpainAmy Elsner NEGOTIATION
Aditya N ChuiJapanElwin Sharvill NEGOTIATION
Adams I InouyeRussiaAnna Fali QUALIFIED
Ivar X VenereBrazilElwin Sharvill RENEWAL
Wickens Q PaprockiSpainOnyama Limba PROPOSAL
Emily G PoquetteUnited KingdomAnna Fali UNQUALIFIED
Maisha O StensethAustraliaStephen Shaw PROPOSAL
Claire M TollnerRussiaAmy Elsner UNQUALIFIED
Salvatore T MorascaItalyElwin Sharvill PROPOSAL
Clifford O OldroydIndiaStephen Shaw UNQUALIFIED
Ricardo X CaudyAustraliaIvan Magalhaes NEW
Darci W DoeItalyAnna Fali UNQUALIFIED
Julie C MorascaIndiaAsiya Javayant PROPOSAL
Jeanfrancois A RoysterFranceElwin Sharvill PROPOSAL
Greenwood U AmigonJapanIvan Magalhaes QUALIFIED
Leja M FerenczArgentinaAsiya Javayant PROPOSAL
Greenwood Y RimBrazilAnna Fali NEGOTIATION
Leja R ButtIndiaAmy Elsner UNQUALIFIED
Jefferson L MorascaIndiaElwin Sharvill QUALIFIED
Maisha U WieserAustraliaAmy Elsner RENEWAL
Greenwood K RutaJapanElwin Sharvill NEGOTIATION
Ricardo Y CaldareraCanadaIoni Bowcher NEW
Munro O MorascaFranceElwin Sharvill PROPOSAL
Sinclair S WaycottBrazilStephen Shaw NEW
Costa A SaylorsGermanyIvan Magalhaes RENEWAL
Horizontal
NameCountryRepresentativeStatus
Adams F RimFranceBernardo Dominic PROPOSAL
Izzy Z BriddickCanadaIoni Bowcher UNQUALIFIED
Leon J InouyeFranceXuxue Feng NEW
Jeanfrancois V MaletItalyOnyama Limba NEGOTIATION
Jennifer O CaldareraIndiaOnyama Limba NEGOTIATION
Ricardo C MaletCanadaAmy Elsner NEW
Jennifer D NickaGermanyAmy Elsner NEGOTIATION
Aika I IturbideBrazilXuxue Feng NEGOTIATION
Juan T NickaJapanAmy Elsner PROPOSAL
Antonio A ChuiAustraliaStephen Shaw NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Wickens D TollnerItaly2024-04-09Buckley Miller Wright NEGOTIATION83Amy Elsner
1001Wickens G GarufiFrance2024-04-18Feltz Printing Service QUALIFIED69Elwin Sharvill
1002Maisha J BowleyFrance2024-04-28Truhlar And Truhlar Attys QUALIFIED87Amy Elsner
1003Deepesh T MaletRussia2024-04-15Feiner Bros NEGOTIATION91Ioni Bowcher
1004Tony O WaycottIndia2024-04-04Feiner Bros NEGOTIATION44Ivan Magalhaes
1005Munro J StockhamArgentina2024-04-20Commercial Press UNQUALIFIED56Xuxue Feng
1006Rodrigues X RulapaughArgentina2024-04-14Benton, John B Jr PROPOSAL33Stephen Shaw
1007Cody E MaletRussia2024-03-31Chemel, James L Cpa UNQUALIFIED20Amy Elsner
1008James P RulapaughArgentina2024-04-13Chanay, Jeffrey A Esq RENEWAL18Amy Elsner
1009Mayumi S MarrierCanada2024-04-17Truhlar And Truhlar Attys RENEWAL95Xuxue Feng
1010Silvio U BologniaJapan2024-04-04Chapman, Ross E Esq NEGOTIATION60Amy Elsner
1011Aika T MacleadArgentina2024-04-12Rangoni Of Florence NEGOTIATION93Amy Elsner
1012Alejandro U AmigonRussia2024-04-20Chapman, Ross E Esq PROPOSAL7Stephen Shaw
1013Emily A ButtUnited Kingdom2024-04-28Chemel, James L Cpa QUALIFIED24Anna Fali
1014Isabel T BologniaBrazil2024-04-19Rangoni Of Florence NEGOTIATION43Xuxue Feng
1015Jennifer Q KuskoArgentina2024-04-21Chemel, James L Cpa UNQUALIFIED9Stephen Shaw
1016Isabel W PoquetteIndia2024-03-31Benton, John B Jr NEW81Ioni Bowcher
1017Silvio I WaycottBrazil2024-04-10Rangoni Of Florence PROPOSAL17Amy Elsner
1018Smith C RulapaughUnited Kingdom2024-04-23Dorl, James J Esq NEGOTIATION35Amy Elsner
1019Kaitlin Y WhobreyBrazil2024-03-31Feltz Printing Service UNQUALIFIED67Stephen Shaw
1020Ivar B WhobreyBrazil2024-04-19King, Christopher A Esq QUALIFIED29Asiya Javayant
1021Francesco B BriddickUnited Kingdom2024-04-16Truhlar And Truhlar Attys QUALIFIED50Asiya Javayant
1022Alejandro G MaletArgentina2024-04-16Rousseaux, Michael Esq NEW49Asiya Javayant
1023Costa M RoysterJapan2024-04-14Chapman, Ross E Esq NEGOTIATION34Stephen Shaw
1024Aditya H DilliardSpain2024-04-09Chapman, Ross E Esq PROPOSAL62Ioni Bowcher
1025Maisha E DilliardGermany2024-04-23Rousseaux, Michael Esq NEW40Xuxue Feng
1026Aditya J PoquetteArgentina2024-04-28Morlong Associates RENEWAL76Ivan Magalhaes
1027Isabel F KuskoItaly2024-04-14Morlong Associates RENEWAL15Asiya Javayant
1028Mujtaba V BowleyIndia2024-04-04Printing Dimensions NEW10Xuxue Feng
1029Kadeem C PerinArgentina2024-04-07Chapman, Ross E Esq QUALIFIED52Ioni Bowcher
1030Nicolas Y CampainGermany2024-03-30Printing Dimensions UNQUALIFIED70Asiya Javayant
1031Nicolas J VocelkaCanada2024-04-19Chapman, Ross E Esq PROPOSAL24Ioni Bowcher
1032Greenwood Y CampainJapan2024-04-26Truhlar And Truhlar Attys QUALIFIED15Stephen Shaw
1033Greenwood N KolmetzUnited Kingdom2024-04-01Feltz Printing Service NEW25Ivan Magalhaes
1034Antonio Y BriddickCanada2024-04-18Dorl, James J Esq PROPOSAL78Onyama Limba
1035Kaitlin W ChuiIndia2024-04-15Benton, John B Jr QUALIFIED56Stephen Shaw
1036Jefferson U MaletUnited Kingdom2024-04-08Feiner Bros RENEWAL21Ioni Bowcher
1037Wickens C SchemmerSpain2024-04-04Truhlar And Truhlar Attys RENEWAL98Elwin Sharvill
1038Silvio V DarakjyCanada2024-04-18Rangoni Of Florence NEGOTIATION82Onyama Limba
1039Francesco U DilliardCanada2024-03-30Rangoni Of Florence QUALIFIED95Asiya Javayant
1040Ivar X VenereSpain2024-04-01Dorl, James J Esq QUALIFIED72Ivan Magalhaes
1041Stacey P WieserGermany2024-04-22Benton, John B Jr NEGOTIATION91Onyama Limba
1042Claire K StockhamFrance2024-04-09Morlong Associates NEGOTIATION19Anna Fali
1043Clifford N FigeroaGermany2024-04-19Printing Dimensions RENEWAL46Stephen Shaw
1044Silvio L NestleItaly2024-04-10Rousseaux, Michael Esq RENEWAL84Asiya Javayant
1045James R KuskoIndia2024-04-16Morlong Associates RENEWAL49Elwin Sharvill
1046Jeanfrancois F BologniaItaly2024-04-21King, Christopher A Esq QUALIFIED81Bernardo Dominic
1047Arvin R VocelkaUnited Kingdom2024-04-01Rangoni Of Florence UNQUALIFIED90Bernardo Dominic
1048Munro X RoysterUnited Kingdom2024-04-22Chanay, Jeffrey A Esq NEGOTIATION71Xuxue Feng
1049Francesco P PaprockiAustralia2024-04-18Rangoni Of Florence RENEWAL47Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Wickens P VocelkaItalyBernardo Dominic RENEWAL
Isabel T OldroydGermanyBernardo Dominic RENEWAL
Ricardo C MorascaItalyIvan Magalhaes NEGOTIATION
Emily D RoysterSpainBernardo Dominic NEGOTIATION
Deepesh R TollnerArgentinaAmy Elsner NEW
Clifford J CaudyUnited KingdomXuxue Feng NEGOTIATION
Munro J FerenczCanadaStephen Shaw RENEWAL
Aditya W StockhamRussiaStephen Shaw UNQUALIFIED
Costa W GillianSpainIvan Magalhaes RENEWAL
Sinclair C SergiBrazilAnna Fali NEW
Nicolas D TollnerSpainIvan Magalhaes RENEWAL
Costa N BriddickCanadaAsiya Javayant NEGOTIATION
Octavia V StockhamGermanyAmy Elsner PROPOSAL
Greenwood Q SergiArgentinaXuxue Feng NEGOTIATION
Misaki Y WaycottRussiaStephen Shaw QUALIFIED
Maisha K PoquetteIndiaAnna Fali QUALIFIED
Darci S KuskoSpainIvan Magalhaes RENEWAL
Octavia Q MaletAustraliaAsiya Javayant UNQUALIFIED
Chavez J VocelkaBrazilIoni Bowcher NEGOTIATION
Ivar X GlickGermanyIvan Magalhaes QUALIFIED
Munro U StensethSpainOnyama Limba NEW
Wickens K CaldareraSpainElwin Sharvill NEGOTIATION
Aika X AmigonFranceAsiya Javayant RENEWAL
Jefferson S RoysterBrazilIvan Magalhaes UNQUALIFIED
Antonio F GlickRussiaAmy Elsner NEGOTIATION
Izzy U DarakjyJapanXuxue Feng NEW
Francesco Y PerinItalyAnna Fali RENEWAL
Clifford C DilliardJapanXuxue Feng QUALIFIED
Tony G GillianCanadaIvan Magalhaes RENEWAL
Juan C FollerItalyIoni Bowcher NEW
Kaitlin W IturbideJapanStephen Shaw NEW
Murillo A RutaRussiaAnna Fali UNQUALIFIED
Adams O VenereGermanyIvan Magalhaes RENEWAL
Ivar E GillianArgentinaBernardo Dominic NEW
David V GillianCanadaBernardo Dominic RENEWAL
Johnson T BowleyGermanyIoni Bowcher PROPOSAL
Ashley A VocelkaItalyIoni Bowcher NEW
Ricardo V GauchoIndiaIvan Magalhaes NEGOTIATION
Arvin F InouyeCanadaIvan Magalhaes NEW
Aditya O RulapaughAustraliaAnna Fali UNQUALIFIED
Ivar X SchemmerCanadaStephen Shaw UNQUALIFIED
Arvin N TollnerBrazilAsiya Javayant PROPOSAL
Kadeem W FollerFranceAmy Elsner PROPOSAL
Julie H IturbideArgentinaIvan Magalhaes NEW
Izzy B ChuiGermanyXuxue Feng UNQUALIFIED
Julie X StensethIndiaIvan Magalhaes QUALIFIED
Costa Y NestleGermanyStephen Shaw UNQUALIFIED
Jeanfrancois V MorascaUnited KingdomAnna Fali NEGOTIATION
Tony A SchemmerSpainOnyama Limba NEW
Adams F BowleyCanadaOnyama Limba NEGOTIATION
Frozen Columns
Name
Kadeem F Ruta
Emily Q Inouye
Kadeem H Oldroyd
Isabel R Ferencz
Rodrigues E Darakjy
Emily A Malet
James O Campain
Jeanfrancois H Malet
Aditya X Royster
Sinclair J Whobrey
Kadeem A Morasca
Kaitlin T Morasca
Wickens H Paprocki
Arvin I Doe
Stacey G Malet
Deepesh U Nicka
David U Oldroyd
Greenwood U Sergi
Francesco Y Bowley
Darci H Amigon
Antonio P Rulapaugh
Isabel I Sergi
Kadeem B Inouye
Nicolas P Dilliard
Chavez B Rim
Wickens P Marrier
David Q Caudy
Kaitlin I Saylors
Aika Q Campain
Emily A Tollner
Maria F Malet
James P Perin
Alejandro R Iturbide
Nicolas R Darakjy
Maisha A Royster
Izzy O Saylors
Morrow S Oldroyd
Rodrigues A Flosi
Jones B Gaucho
Antonio T Malet
Darci Q Oldroyd
Cody K Flosi
Claire G Poquette
Ricardo O Campain
Juan G Foller
Tony R Waycott
Deepesh Y Campain
Johnson C Marrier
Jeanfrancois B Doe
Costa D Garufi
IdCountryDate
1000Canada2024-04-24
1001Russia2024-04-18
1002Canada2024-04-03
1003Germany2024-03-30
1004Brazil2024-03-31
1005Brazil2024-04-16
1006Japan2024-04-22
1007India2024-04-15
1008Australia2024-04-26
1009Italy2024-04-01
1010France2024-04-26
1011India2024-04-15
1012Italy2024-04-22
1013Germany2024-04-27
1014Brazil2024-04-24
1015Brazil2024-04-27
1016France2024-04-16
1017United Kingdom2024-04-17
1018Australia2024-04-16
1019United Kingdom2024-04-21
1020India2024-04-28
1021Australia2024-04-26
1022United Kingdom2024-04-26
1023Canada2024-04-17
1024France2024-04-03
1025Brazil2024-04-01
1026Argentina2024-04-15
1027United Kingdom2024-04-20
1028Brazil2024-04-21
1029Brazil2024-04-27
1030Spain2024-04-25
1031Russia2024-04-08
1032Germany2024-04-26
1033Argentina2024-03-31
1034Argentina2024-04-24
1035Russia2024-04-17
1036Australia2024-04-17
1037Russia2024-04-03
1038Spain2024-04-04
1039India2024-04-20
1040Japan2024-04-02
1041United Kingdom2024-04-27
1042France2024-04-22
1043Russia2024-04-17
1044Japan2024-04-25
1045Canada2024-04-19
1046India2024-03-30
1047Russia2024-04-19
1048Japan2024-04-22
1049Australia2024-04-12

On-Demand Data

NameIdCountryDate
Francesco F Ferencz1000Argentina2024-04-05
James Q Venere1001Canada2024-04-28
Alejandro L Saylors1002Australia2024-04-26
Julie E Campain1003Italy2024-04-24
Jeanfrancois G Dilliard1004Spain2024-04-26
Juan D Morasca1005Argentina2024-04-10
Tony S Glick1006Brazil2024-04-15
Maria K Foller1007Japan2024-04-04
Isabel O Doe1008Germany2024-04-11
Nicolas Y Malet1009Spain2024-04-26
Leon S Tollner1010Canada2024-04-17
Mujtaba I Albares1011Argentina2024-04-24
Silvio S Marrier1012United Kingdom2024-04-24
Julie G Slusarski1013Australia2024-03-30
Aditya F Venere1014Italy2024-04-17
Faith S Caldarera1015Italy2024-04-21
Jefferson T Glick1016Germany2024-04-02
Mujtaba B Doe1017Spain2024-04-24
Leon D Stockham1018United Kingdom2024-04-02
Jefferson G Albares1019Canada2024-04-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Emily N StensethCanadaStephen Shaw NEGOTIATION
Morrow X SlusarskiUnited KingdomIvan Magalhaes NEW
Leon S FollerFranceStephen Shaw PROPOSAL
David L MaletGermanyAsiya Javayant RENEWAL
Salvatore X KuskoJapanStephen Shaw PROPOSAL
Smith V MacleadRussiaAnna Fali NEGOTIATION
Adams P BologniaIndiaAsiya Javayant PROPOSAL
Ashley D GauchoArgentinaAsiya Javayant UNQUALIFIED
Johnson V VocelkaRussiaElwin Sharvill QUALIFIED
Isabel D DarakjyBrazilStephen Shaw QUALIFIED
Deepesh Q GlickArgentinaXuxue Feng QUALIFIED
Faith Y WaycottRussiaIoni Bowcher QUALIFIED
Emily U SchemmerFranceElwin Sharvill QUALIFIED
Mujtaba I OstroskyUnited KingdomElwin Sharvill RENEWAL
Adams V GarufiJapanBernardo Dominic QUALIFIED
Arvin E StockhamCanadaStephen Shaw RENEWAL
Leon P TollnerArgentinaAmy Elsner RENEWAL
Misaki G BologniaFranceAmy Elsner PROPOSAL
Wickens K ShinkoItalyBernardo Dominic PROPOSAL
Alejandro Z ButtCanadaAnna Fali PROPOSAL
Rodrigues B PaprockiCanadaElwin Sharvill QUALIFIED
Chavez K RulapaughRussiaStephen Shaw NEGOTIATION
Murillo O FlosiItalyIoni Bowcher NEGOTIATION
Mayumi C MarrierArgentinaIoni Bowcher PROPOSAL
Costa P DilliardRussiaAnna Fali NEGOTIATION
Aditya O MaletUnited KingdomOnyama Limba PROPOSAL
Deepesh G OldroydItalyBernardo Dominic RENEWAL
Juan Q TollnerFranceBernardo Dominic PROPOSAL
Adams N FlosiAustraliaAsiya Javayant QUALIFIED
Aditya J KolmetzGermanyOnyama Limba NEW
Alejandro I SaylorsItalyAnna Fali QUALIFIED
Cody N RimFranceStephen Shaw NEW
Leja E GauchoArgentinaAmy Elsner PROPOSAL
Jones X GarufiFranceAmy Elsner UNQUALIFIED
Izzy R KolmetzGermanyOnyama Limba QUALIFIED
Antonio A WhobreyItalyElwin Sharvill NEGOTIATION
Jones M SaylorsAustraliaXuxue Feng NEGOTIATION
Jennifer T PaprockiUnited KingdomIvan Magalhaes UNQUALIFIED
Izzy W VocelkaFranceXuxue Feng RENEWAL
Maria U OstroskySpainAnna Fali 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>