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
Costa C IturbideUnited KingdomAmy Elsner NEGOTIATION
Julie J RoysterJapanElwin Sharvill UNQUALIFIED
Smith R FerenczCanadaElwin Sharvill NEW
Munro K MaletJapanStephen Shaw NEW
David Z PaprockiAustraliaOnyama Limba RENEWAL
Mujtaba S NickaSpainBernardo Dominic PROPOSAL
Isabel L OstroskyBrazilOnyama Limba PROPOSAL
James F OstroskyGermanyIvan Magalhaes PROPOSAL
Stacey B CaldareraGermanyOnyama Limba PROPOSAL
Juan L SchemmerGermanyXuxue Feng NEW
Faith Y VocelkaRussiaAsiya Javayant UNQUALIFIED
Aika B OstroskyGermanyAsiya Javayant UNQUALIFIED
Emily P SaylorsGermanyBernardo Dominic QUALIFIED
Aika F BowleyGermanyAsiya Javayant PROPOSAL
Johnson E RutaIndiaBernardo Dominic NEGOTIATION
Silvio I StensethItalyAsiya Javayant QUALIFIED
Wickens Z FollerBrazilIvan Magalhaes UNQUALIFIED
Ivar X VocelkaFranceBernardo Dominic UNQUALIFIED
Morrow M GlickAustraliaStephen Shaw NEW
Tony Q InouyeUnited KingdomIvan Magalhaes QUALIFIED
Clifford Q TollnerIndiaXuxue Feng NEW
Jefferson F ChuiArgentinaElwin Sharvill PROPOSAL
James K GauchoSpainElwin Sharvill RENEWAL
Mayumi J FerenczJapanOnyama Limba UNQUALIFIED
Octavia Q SaylorsIndiaAsiya Javayant PROPOSAL
James G PaprockiJapanIoni Bowcher RENEWAL
Johnson Q RimCanadaAsiya Javayant QUALIFIED
Munro G VocelkaItalyAsiya Javayant UNQUALIFIED
Isabel Y ChuiRussiaElwin Sharvill UNQUALIFIED
Isabel V ChuiRussiaAnna Fali NEGOTIATION
Wickens W WhobreySpainXuxue Feng NEW
Johnson K MorascaArgentinaAmy Elsner RENEWAL
Octavia A StockhamRussiaIvan Magalhaes NEW
Cody B SlusarskiUnited KingdomIoni Bowcher NEW
Johnson L BologniaJapanXuxue Feng UNQUALIFIED
Aditya L GauchoRussiaIvan Magalhaes UNQUALIFIED
Maria N InouyeFranceIvan Magalhaes NEW
Jeanfrancois T InouyeFranceAsiya Javayant QUALIFIED
Jones V SergiRussiaIvan Magalhaes RENEWAL
Emily D DarakjyRussiaAmy Elsner QUALIFIED
Adams W SchemmerJapanBernardo Dominic NEW
Julie F TollnerSpainBernardo Dominic PROPOSAL
Mayumi W CaldareraCanadaAnna Fali NEW
Arvin D RoysterRussiaElwin Sharvill QUALIFIED
Arvin C ShinkoFranceOnyama Limba NEW
Johnson A BologniaBrazilElwin Sharvill PROPOSAL
Aika W MarrierIndiaBernardo Dominic UNQUALIFIED
Darci P TollnerSpainElwin Sharvill QUALIFIED
Cody A SchemmerGermanyBernardo Dominic RENEWAL
Arvin X SaylorsUnited KingdomAmy Elsner UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Leja A KolmetzJapanStephen Shaw RENEWAL
Jefferson O PoquetteJapanAnna Fali UNQUALIFIED
Leon W PaprockiUnited KingdomIoni Bowcher PROPOSAL
Izzy V TollnerJapanIvan Magalhaes UNQUALIFIED
Kaitlin G CaldareraIndiaElwin Sharvill PROPOSAL
Cody A MaletRussiaBernardo Dominic PROPOSAL
Clifford V VocelkaGermanyBernardo Dominic PROPOSAL
Aruna E NestleIndiaBernardo Dominic PROPOSAL
Jeanfrancois F ShinkoArgentinaAsiya Javayant PROPOSAL
Maria U MacleadBrazilXuxue Feng NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aruna M AlbaresItaly2024-04-15Commercial Press RENEWAL41Ioni Bowcher
1001Mayumi Z SergiFrance2024-04-13Morlong Associates NEW62Amy Elsner
1002Mujtaba Y WaycottItaly2024-04-07Morlong Associates PROPOSAL53Ivan Magalhaes
1003Maisha G ChuiUnited Kingdom2024-04-27Morlong Associates UNQUALIFIED6Ivan Magalhaes
1004Silvio W GlickFrance2024-03-31Truhlar And Truhlar Attys PROPOSAL65Asiya Javayant
1005Jefferson Q PaprockiGermany2024-04-03Chanay, Jeffrey A Esq NEGOTIATION21Anna Fali
1006Cody Z TollnerGermany2024-04-17Morlong Associates NEW41Elwin Sharvill
1007Emily O CampainFrance2024-04-12Printing Dimensions NEGOTIATION20Asiya Javayant
1008Deepesh H ButtArgentina2024-04-21Printing Dimensions QUALIFIED98Elwin Sharvill
1009Deepesh V FollerArgentina2024-04-16Truhlar And Truhlar Attys UNQUALIFIED89Anna Fali
1010Faith V PerinCanada2024-04-02Feiner Bros UNQUALIFIED63Xuxue Feng
1011Cody M ShinkoArgentina2024-04-26Truhlar And Truhlar Attys NEGOTIATION5Ioni Bowcher
1012Leon A CaldareraAustralia2024-04-17Truhlar And Truhlar Attys NEW81Amy Elsner
1013Johnson U IturbideJapan2024-04-06Buckley Miller Wright NEW22Ioni Bowcher
1014Maria Y MacleadFrance2024-04-09Chemel, James L Cpa NEW24Ivan Magalhaes
1015Stacey Y StensethArgentina2024-03-31Buckley Miller Wright NEW66Stephen Shaw
1016Jennifer F ChuiArgentina2024-04-14Dorl, James J Esq QUALIFIED20Amy Elsner
1017Nicolas S MaletSpain2024-04-20Rousseaux, Michael Esq UNQUALIFIED57Ioni Bowcher
1018Salvatore W KuskoArgentina2024-04-03Benton, John B Jr QUALIFIED46Elwin Sharvill
1019Munro N SchemmerGermany2024-04-24Buckley Miller Wright RENEWAL3Ioni Bowcher
1020Jones I SergiArgentina2024-04-11Morlong Associates UNQUALIFIED62Ioni Bowcher
1021Maria S ChuiArgentina2024-04-09Benton, John B Jr QUALIFIED96Onyama Limba
1022Deepesh H StockhamCanada2024-04-19King, Christopher A Esq NEGOTIATION62Anna Fali
1023Kadeem A DilliardItaly2024-04-24Chapman, Ross E Esq NEW23Stephen Shaw
1024Emily K MaletAustralia2024-04-03Rangoni Of Florence QUALIFIED95Anna Fali
1025Greenwood C BriddickUnited Kingdom2024-04-18Buckley Miller Wright QUALIFIED44Asiya Javayant
1026Chavez Q BriddickIndia2024-04-11Chanay, Jeffrey A Esq NEW9Bernardo Dominic
1027Maisha G CaudyRussia2024-04-24King, Christopher A Esq QUALIFIED15Ivan Magalhaes
1028Tony L NickaJapan2024-04-29Commercial Press RENEWAL19Elwin Sharvill
1029Wickens X MaletBrazil2024-04-07King, Christopher A Esq RENEWAL6Ioni Bowcher
1030Darci R RoysterSpain2024-04-09Rousseaux, Michael Esq RENEWAL4Onyama Limba
1031Jefferson E TollnerItaly2024-04-26Buckley Miller Wright UNQUALIFIED6Onyama Limba
1032Tony K StensethItaly2024-04-18Morlong Associates PROPOSAL54Amy Elsner
1033Faith F PaprockiAustralia2024-04-25Chapman, Ross E Esq QUALIFIED35Xuxue Feng
1034Chavez K ButtRussia2024-04-12Dorl, James J Esq QUALIFIED41Ioni Bowcher
1035Leon E MaletUnited Kingdom2024-04-14Rousseaux, Michael Esq NEGOTIATION58Stephen Shaw
1036Jefferson I FlosiFrance2024-04-05Morlong Associates RENEWAL87Onyama Limba
1037Kadeem F SchemmerAustralia2024-04-13Commercial Press PROPOSAL2Anna Fali
1038Salvatore I SaylorsRussia2024-04-28Printing Dimensions PROPOSAL44Amy Elsner
1039Silvio Z BriddickSpain2024-04-25Feltz Printing Service PROPOSAL23Bernardo Dominic
1040Wickens B RulapaughJapan2024-03-31King, Christopher A Esq NEW31Bernardo Dominic
1041Morrow J RulapaughGermany2024-04-27Truhlar And Truhlar Attys UNQUALIFIED36Onyama Limba
1042Jefferson D RimUnited Kingdom2024-04-25Truhlar And Truhlar Attys PROPOSAL3Amy Elsner
1043Kadeem F StockhamArgentina2024-04-18Rousseaux, Michael Esq RENEWAL9Bernardo Dominic
1044Maisha L DoeRussia2024-04-11Benton, John B Jr PROPOSAL86Stephen Shaw
1045Jeanfrancois C CaldareraIndia2024-04-19Buckley Miller Wright PROPOSAL36Anna Fali
1046Faith M FollerRussia2024-04-14Rangoni Of Florence NEGOTIATION99Asiya Javayant
1047Maria A DoeItaly2024-04-19Dorl, James J Esq NEGOTIATION32Ioni Bowcher
1048Salvatore P KuskoFrance2024-04-26Dorl, James J Esq NEW7Elwin Sharvill
1049Mayumi K WaycottBrazil2024-04-29Chapman, Ross E Esq PROPOSAL98Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
James Q InouyeArgentinaIvan Magalhaes NEGOTIATION
Alejandro D DilliardFranceElwin Sharvill RENEWAL
Aruna X DarakjyCanadaAnna Fali PROPOSAL
Costa H CampainArgentinaBernardo Dominic PROPOSAL
Salvatore J BriddickUnited KingdomIoni Bowcher QUALIFIED
Arvin W GlickBrazilAnna Fali QUALIFIED
Smith B NestleGermanyOnyama Limba NEGOTIATION
Octavia D StensethCanadaOnyama Limba UNQUALIFIED
David V FigeroaArgentinaXuxue Feng NEW
Jefferson M SaylorsIndiaIoni Bowcher QUALIFIED
Jones N StensethUnited KingdomStephen Shaw NEGOTIATION
Octavia X PaprockiFranceElwin Sharvill RENEWAL
Izzy G CampainJapanBernardo Dominic NEGOTIATION
Wickens Z FigeroaFranceElwin Sharvill QUALIFIED
Mayumi D BowleyItalyIvan Magalhaes UNQUALIFIED
Chavez F BowleyFranceElwin Sharvill NEGOTIATION
Misaki R AmigonItalyBernardo Dominic NEW
Maisha U RoysterItalyIvan Magalhaes UNQUALIFIED
Antonio C WaycottArgentinaBernardo Dominic QUALIFIED
Leon H TollnerRussiaIoni Bowcher RENEWAL
Alejandro O SergiRussiaAnna Fali UNQUALIFIED
Octavia Q SlusarskiArgentinaXuxue Feng QUALIFIED
Leon D RimSpainAsiya Javayant UNQUALIFIED
Jeanfrancois M SergiBrazilStephen Shaw PROPOSAL
Kaitlin P CampainCanadaOnyama Limba NEGOTIATION
Ashley G FigeroaSpainOnyama Limba PROPOSAL
Isabel Z RutaIndiaIoni Bowcher NEGOTIATION
Emily I RimRussiaXuxue Feng QUALIFIED
Leon N BologniaGermanyElwin Sharvill RENEWAL
Faith S OldroydUnited KingdomXuxue Feng NEGOTIATION
Chavez N InouyeRussiaXuxue Feng QUALIFIED
Rodrigues N KuskoItalyAnna Fali QUALIFIED
Costa Q RutaAustraliaAnna Fali PROPOSAL
Aruna R ChuiArgentinaElwin Sharvill RENEWAL
Jefferson N StensethCanadaIvan Magalhaes UNQUALIFIED
Sinclair U NickaSpainIoni Bowcher NEGOTIATION
Alejandro W ButtAustraliaAsiya Javayant NEGOTIATION
Juan T ChuiBrazilOnyama Limba UNQUALIFIED
Greenwood Y VocelkaCanadaBernardo Dominic PROPOSAL
Maisha S MarrierJapanXuxue Feng QUALIFIED
Tony Q BowleyFranceOnyama Limba PROPOSAL
Misaki R InouyeGermanyAsiya Javayant RENEWAL
Clifford O WaycottIndiaAmy Elsner QUALIFIED
Morrow C RoysterIndiaXuxue Feng PROPOSAL
Claire G MacleadFranceIoni Bowcher NEGOTIATION
Silvio E MaletIndiaAsiya Javayant QUALIFIED
Claire T SergiAustraliaAnna Fali RENEWAL
Stacey T FigeroaAustraliaBernardo Dominic NEGOTIATION
Kadeem J MacleadGermanyBernardo Dominic NEGOTIATION
Munro N RoysterSpainOnyama Limba NEGOTIATION
Frozen Columns
Name
Aika N Ostrosky
Ivar M Chui
Kadeem F Albares
Maria Y Oldroyd
Ivar S Oldroyd
Antonio N Nestle
Julie G Schemmer
Alejandro T Malet
Izzy K Paprocki
Jeanfrancois W Bolognia
Jefferson Q Ruta
Chavez I Maclead
Greenwood T Sergi
Aruna Q Perin
Arvin F Iturbide
Leon G Ostrosky
Mujtaba E Flosi
Murillo I Morasca
Izzy S Royster
Kadeem R Inouye
Francesco E Maclead
Julie O Oldroyd
Maisha N Rulapaugh
Claire F Ruta
Jennifer A Ferencz
Murillo A Poquette
Deepesh F Nicka
Arvin Q Inouye
Morrow H Kolmetz
Julie C Venere
Ashley L Inouye
Johnson W Royster
Mujtaba V Doe
Munro X Malet
James B Paprocki
Aruna A Doe
Jennifer R Morasca
Sinclair L Slusarski
Julie Z Vocelka
Ivar J Foller
Faith Q Slusarski
Ashley B Saylors
Adams W Butt
Munro N Wieser
David V Slusarski
David I Malet
Juan K Morasca
Arvin A Darakjy
Silvio Y Campain
Johnson F Inouye
IdCountryDate
1000United Kingdom2024-04-09
1001Australia2024-04-20
1002United Kingdom2024-04-28
1003India2024-04-21
1004Argentina2024-04-25
1005United Kingdom2024-04-13
1006Russia2024-04-27
1007Australia2024-04-11
1008Brazil2024-03-31
1009Argentina2024-04-22
1010United Kingdom2024-04-15
1011Brazil2024-03-31
1012Italy2024-04-02
1013Argentina2024-04-19
1014Argentina2024-04-21
1015Japan2024-04-10
1016Germany2024-04-29
1017Germany2024-04-25
1018Spain2024-04-04
1019Australia2024-04-21
1020Japan2024-04-01
1021Canada2024-04-17
1022Italy2024-04-06
1023Argentina2024-04-28
1024Brazil2024-04-05
1025Italy2024-04-28
1026Russia2024-04-25
1027Brazil2024-04-28
1028Brazil2024-04-22
1029Brazil2024-04-06
1030Japan2024-04-11
1031France2024-04-04
1032Argentina2024-04-04
1033Japan2024-04-26
1034Russia2024-04-03
1035India2024-04-08
1036United Kingdom2024-04-21
1037United Kingdom2024-04-16
1038Germany2024-04-18
1039Argentina2024-04-15
1040Brazil2024-04-14
1041Brazil2024-04-23
1042Germany2024-04-20
1043Argentina2024-04-17
1044India2024-04-26
1045France2024-04-22
1046Russia2024-04-08
1047Germany2024-04-06
1048Russia2024-04-24
1049Japan2024-04-13

On-Demand Data

NameIdCountryDate
Wickens X Royster1000United Kingdom2024-04-12
Juan I Kusko1001Spain2024-03-31
Morrow R Venere1002Russia2024-04-12
Maria Y Vocelka1003Russia2024-04-16
Leon T Schemmer1004Australia2024-04-12
Emily G Saylors1005Italy2024-04-11
Murillo I Royster1006United Kingdom2024-04-03
Leon B Nicka1007Italy2024-04-19
Julie K Chui1008Italy2024-03-31
Salvatore K Chui1009Russia2024-04-04
Morrow J Butt1010Canada2024-04-22
Adams T Marrier1011United Kingdom2024-04-29
Ricardo S Saylors1012Russia2024-04-16
Wickens V Kusko1013Canada2024-04-04
Chavez I Shinko1014France2024-04-03
Jeanfrancois U Tollner1015Italy2024-04-15
Stacey V Foller1016Russia2024-04-06
Cody K Schemmer1017India2024-04-07
Maria P Slusarski1018Canada2024-04-02
Cody E Vocelka1019Brazil2024-04-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Antonio A AlbaresItalyStephen Shaw NEGOTIATION
Jones B MaletUnited KingdomStephen Shaw PROPOSAL
David Z TollnerSpainXuxue Feng UNQUALIFIED
Kaitlin B SchemmerRussiaIoni Bowcher NEGOTIATION
Salvatore W DarakjyRussiaAsiya Javayant NEGOTIATION
Jennifer F RoysterSpainXuxue Feng UNQUALIFIED
Deepesh B CaudyItalyIvan Magalhaes QUALIFIED
Maisha S ShinkoSpainAsiya Javayant NEGOTIATION
Kaitlin D BologniaFranceAmy Elsner NEGOTIATION
Alejandro L FerenczAustraliaIoni Bowcher NEW
Cody O OldroydArgentinaIoni Bowcher PROPOSAL
Stacey Z RutaFranceIoni Bowcher PROPOSAL
Misaki Q DarakjySpainAnna Fali QUALIFIED
Antonio V FlosiRussiaElwin Sharvill NEGOTIATION
Nicolas X MacleadCanadaBernardo Dominic PROPOSAL
Rodrigues Z GarufiBrazilAmy Elsner UNQUALIFIED
Darci F NickaFranceBernardo Dominic PROPOSAL
Morrow D SergiSpainElwin Sharvill RENEWAL
Leon Q BologniaCanadaOnyama Limba UNQUALIFIED
Kadeem I IturbideCanadaIoni Bowcher UNQUALIFIED
Jefferson L SaylorsSpainXuxue Feng NEW
Jefferson T VocelkaItalyIvan Magalhaes NEW
David J BriddickFranceIvan Magalhaes UNQUALIFIED
Jones D GlickItalyXuxue Feng PROPOSAL
Johnson Z WhobreyItalyElwin Sharvill NEGOTIATION
Juan K SergiUnited KingdomElwin Sharvill RENEWAL
Ivar W RoysterArgentinaElwin Sharvill RENEWAL
Wickens H AlbaresSpainAnna Fali NEW
Antonio B MarrierFranceAmy Elsner RENEWAL
Aika M SergiRussiaIoni Bowcher UNQUALIFIED
Ricardo V GillianArgentinaElwin Sharvill UNQUALIFIED
Arvin F WaycottRussiaIvan Magalhaes QUALIFIED
Leon O MaletArgentinaIoni Bowcher PROPOSAL
Aruna Z KolmetzGermanyOnyama Limba UNQUALIFIED
Darci T MarrierItalyAmy Elsner PROPOSAL
Aruna R GarufiUnited KingdomXuxue Feng NEGOTIATION
Leja W BriddickSpainBernardo Dominic PROPOSAL
Adams G FollerBrazilStephen Shaw UNQUALIFIED
Antonio Q ShinkoRussiaAmy Elsner UNQUALIFIED
James V InouyeGermanyAsiya Javayant NEGOTIATION

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