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
Isabel X RoysterSpainAsiya Javayant QUALIFIED
Aditya T MaletAustraliaAsiya Javayant NEW
Jones V DilliardAustraliaIvan Magalhaes NEGOTIATION
Smith A MarrierBrazilBernardo Dominic UNQUALIFIED
Izzy K MarrierBrazilXuxue Feng RENEWAL
Smith A FlosiCanadaStephen Shaw PROPOSAL
Leja H DoeBrazilIoni Bowcher RENEWAL
Clifford B ShinkoUnited KingdomAmy Elsner NEGOTIATION
Salvatore H MacleadFranceStephen Shaw QUALIFIED
Jennifer B InouyeGermanyIvan Magalhaes NEGOTIATION
Mujtaba H StensethBrazilXuxue Feng NEW
Mayumi F GlickFranceOnyama Limba RENEWAL
David D SergiSpainElwin Sharvill UNQUALIFIED
Maisha Q FigeroaArgentinaIvan Magalhaes QUALIFIED
Faith V OstroskyCanadaIoni Bowcher PROPOSAL
Emily D ShinkoBrazilIoni Bowcher PROPOSAL
Stacey F NestleAustraliaStephen Shaw QUALIFIED
Maria Z VenereCanadaIvan Magalhaes PROPOSAL
Ricardo X KolmetzJapanIoni Bowcher NEGOTIATION
Morrow C GlickJapanBernardo Dominic PROPOSAL
Izzy S MorascaCanadaOnyama Limba RENEWAL
Clifford A ShinkoUnited KingdomIoni Bowcher UNQUALIFIED
Adams M AmigonJapanStephen Shaw NEW
Ricardo U GlickJapanElwin Sharvill UNQUALIFIED
James Q PaprockiIndiaIvan Magalhaes NEW
Antonio D DarakjyBrazilOnyama Limba NEW
Emily E AlbaresGermanyOnyama Limba QUALIFIED
Chavez D SaylorsUnited KingdomXuxue Feng UNQUALIFIED
Maria Y MorascaBrazilAmy Elsner PROPOSAL
Johnson C OstroskySpainStephen Shaw PROPOSAL
Juan Q CaudyCanadaStephen Shaw RENEWAL
Kaitlin Q PoquetteJapanStephen Shaw PROPOSAL
Darci Q SaylorsBrazilAnna Fali NEW
Antonio J ChuiRussiaIoni Bowcher NEW
Munro M NestleSpainXuxue Feng UNQUALIFIED
Jennifer L PerinCanadaIoni Bowcher QUALIFIED
Stacey L WhobreyIndiaIoni Bowcher UNQUALIFIED
Jennifer A PaprockiUnited KingdomIoni Bowcher NEW
Misaki S StensethUnited KingdomOnyama Limba QUALIFIED
Julie V DoeGermanyBernardo Dominic NEW
Arvin B CaudyArgentinaAsiya Javayant UNQUALIFIED
Ricardo E RimUnited KingdomAsiya Javayant NEW
Ivar M FollerSpainElwin Sharvill NEW
Ashley M VenereSpainAmy Elsner UNQUALIFIED
Jeanfrancois G WhobreyArgentinaOnyama Limba QUALIFIED
Faith C FigeroaBrazilBernardo Dominic QUALIFIED
Darci S MarrierUnited KingdomOnyama Limba QUALIFIED
Munro Q StockhamUnited KingdomIvan Magalhaes NEW
Morrow Q TollnerRussiaIvan Magalhaes NEGOTIATION
Kaitlin B VocelkaSpainAsiya Javayant QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Aika V RoysterSpainElwin Sharvill UNQUALIFIED
Rodrigues Y PaprockiIndiaIvan Magalhaes NEW
Tony X IturbideItalyElwin Sharvill UNQUALIFIED
Chavez Y MorascaAustraliaIoni Bowcher UNQUALIFIED
Wickens W MaletArgentinaOnyama Limba UNQUALIFIED
Julie X RoysterUnited KingdomOnyama Limba UNQUALIFIED
Nicolas W FollerGermanyAsiya Javayant NEGOTIATION
Arvin A MaletRussiaElwin Sharvill NEGOTIATION
Smith E BologniaIndiaIvan Magalhaes UNQUALIFIED
Smith C CampainCanadaIoni Bowcher PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Misaki Z VocelkaItaly2024-04-06King, Christopher A Esq PROPOSAL2Amy Elsner
1001Greenwood F AmigonAustralia2024-04-27Rousseaux, Michael Esq QUALIFIED34Stephen Shaw
1002Silvio K BriddickFrance2024-04-17Commercial Press UNQUALIFIED49Onyama Limba
1003Francesco Y CampainIndia2024-04-23Chanay, Jeffrey A Esq NEW15Elwin Sharvill
1004Morrow V ChuiSpain2024-04-27King, Christopher A Esq QUALIFIED47Ioni Bowcher
1005Jeanfrancois R RutaFrance2024-04-08King, Christopher A Esq NEW78Ivan Magalhaes
1006Mayumi A DarakjyFrance2024-04-18Morlong Associates UNQUALIFIED13Asiya Javayant
1007Morrow P IturbideSpain2024-04-09Feiner Bros RENEWAL82Ioni Bowcher
1008Wickens H SlusarskiArgentina2024-04-19Rangoni Of Florence RENEWAL48Ivan Magalhaes
1009Wickens P StockhamArgentina2024-04-27Commercial Press UNQUALIFIED31Anna Fali
1010Murillo Y TollnerRussia2024-04-20Chemel, James L Cpa UNQUALIFIED95Elwin Sharvill
1011Ashley N GlickArgentina2024-04-06Chanay, Jeffrey A Esq QUALIFIED73Bernardo Dominic
1012Ashley K NickaRussia2024-04-15Dorl, James J Esq PROPOSAL68Ioni Bowcher
1013Adams T GlickCanada2024-03-31Chanay, Jeffrey A Esq NEGOTIATION19Stephen Shaw
1014Aruna I GillianArgentina2024-04-22Chemel, James L Cpa NEW21Anna Fali
1015Clifford V FollerJapan2024-04-26Rangoni Of Florence NEGOTIATION67Bernardo Dominic
1016Costa Y CaudyUnited Kingdom2024-04-16Feiner Bros NEW40Ivan Magalhaes
1017James Y BriddickAustralia2024-04-23Printing Dimensions RENEWAL16Asiya Javayant
1018Claire N ShinkoArgentina2024-03-31Rangoni Of Florence PROPOSAL74Asiya Javayant
1019James D GauchoItaly2024-04-19Chemel, James L Cpa QUALIFIED19Xuxue Feng
1020Leja D IturbideIndia2024-04-07Buckley Miller Wright RENEWAL27Xuxue Feng
1021Izzy D GillianGermany2024-04-27King, Christopher A Esq RENEWAL95Anna Fali
1022Murillo Q IturbideBrazil2024-04-06Rousseaux, Michael Esq NEGOTIATION3Elwin Sharvill
1023Mayumi P ButtCanada2024-04-17Commercial Press NEW32Amy Elsner
1024Maisha A CampainCanada2024-04-24Chanay, Jeffrey A Esq QUALIFIED14Elwin Sharvill
1025Adams O VocelkaGermany2024-04-08Truhlar And Truhlar Attys NEGOTIATION88Asiya Javayant
1026Murillo E FerenczItaly2024-04-08Chapman, Ross E Esq RENEWAL37Elwin Sharvill
1027Costa F SaylorsBrazil2024-04-05Rangoni Of Florence PROPOSAL66Xuxue Feng
1028Claire W FlosiSpain2024-04-03Buckley Miller Wright QUALIFIED45Onyama Limba
1029Mujtaba F MacleadAustralia2024-04-03Benton, John B Jr QUALIFIED4Asiya Javayant
1030Maria G KuskoSpain2024-04-02Benton, John B Jr NEGOTIATION81Ioni Bowcher
1031James S KolmetzAustralia2024-04-16Printing Dimensions NEGOTIATION78Ivan Magalhaes
1032Rodrigues C RimIndia2024-04-07Chemel, James L Cpa NEGOTIATION50Onyama Limba
1033Claire M DoeUnited Kingdom2024-04-14Feltz Printing Service PROPOSAL29Amy Elsner
1034Johnson Q FollerAustralia2024-04-12Rousseaux, Michael Esq PROPOSAL58Xuxue Feng
1035Clifford I PaprockiBrazil2024-04-26Chapman, Ross E Esq QUALIFIED33Xuxue Feng
1036Nicolas P TollnerAustralia2024-04-17Dorl, James J Esq QUALIFIED88Ivan Magalhaes
1037Murillo Q WaycottItaly2024-04-25Chapman, Ross E Esq RENEWAL74Ioni Bowcher
1038Rodrigues H CaudyIndia2024-04-16Rousseaux, Michael Esq UNQUALIFIED97Asiya Javayant
1039Isabel T NestleGermany2024-04-08Commercial Press RENEWAL66Bernardo Dominic
1040Murillo O TollnerBrazil2024-04-27Rousseaux, Michael Esq UNQUALIFIED46Amy Elsner
1041Smith V RutaUnited Kingdom2024-04-09Buckley Miller Wright NEW2Ioni Bowcher
1042David D StensethCanada2024-03-29Chapman, Ross E Esq NEGOTIATION62Elwin Sharvill
1043Leja K MacleadRussia2024-04-02Feiner Bros PROPOSAL63Elwin Sharvill
1044Kaitlin J KolmetzBrazil2024-03-30Truhlar And Truhlar Attys PROPOSAL22Elwin Sharvill
1045James K StensethIndia2024-04-19Truhlar And Truhlar Attys RENEWAL41Anna Fali
1046Jones F RoysterArgentina2024-04-17Printing Dimensions UNQUALIFIED49Asiya Javayant
1047Ricardo C OstroskyArgentina2024-04-06Chemel, James L Cpa UNQUALIFIED97Amy Elsner
1048Jennifer Y MaletAustralia2024-04-23Morlong Associates QUALIFIED50Amy Elsner
1049Antonio C ButtGermany2024-04-13Commercial Press NEW95Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Murillo U MaletRussiaElwin Sharvill RENEWAL
Silvio N GlickSpainIoni Bowcher RENEWAL
Smith R PaprockiCanadaAnna Fali NEGOTIATION
Salvatore S DilliardUnited KingdomOnyama Limba UNQUALIFIED
Johnson Z CaldareraJapanAmy Elsner NEGOTIATION
Sinclair N WaycottSpainXuxue Feng QUALIFIED
Arvin I AmigonRussiaAsiya Javayant UNQUALIFIED
Mayumi D CaudyItalyBernardo Dominic QUALIFIED
Chavez X PerinRussiaAsiya Javayant NEGOTIATION
Juan X BowleyArgentinaElwin Sharvill UNQUALIFIED
Jefferson Y NickaGermanyIvan Magalhaes PROPOSAL
Darci L MarrierArgentinaAnna Fali PROPOSAL
Isabel Z MaletArgentinaIoni Bowcher UNQUALIFIED
Sinclair R NestleItalyIvan Magalhaes NEW
Deepesh H RulapaughRussiaXuxue Feng NEGOTIATION
Johnson O FollerBrazilXuxue Feng QUALIFIED
Mayumi H ButtUnited KingdomAsiya Javayant NEW
Arvin Y PaprockiRussiaAmy Elsner PROPOSAL
Salvatore M ButtIndiaXuxue Feng UNQUALIFIED
Alejandro C VenereGermanyBernardo Dominic PROPOSAL
Jennifer R GarufiUnited KingdomAnna Fali NEW
Murillo F VenereCanadaStephen Shaw RENEWAL
Jones A IturbideBrazilStephen Shaw NEGOTIATION
Ricardo Y MorascaUnited KingdomOnyama Limba QUALIFIED
Francesco Z KuskoArgentinaAsiya Javayant NEGOTIATION
Deepesh X VocelkaUnited KingdomAnna Fali PROPOSAL
Silvio J KolmetzSpainStephen Shaw NEGOTIATION
Juan O OstroskyGermanyIoni Bowcher NEW
Ashley X MaletGermanyOnyama Limba RENEWAL
Kadeem Y RutaUnited KingdomStephen Shaw QUALIFIED
Wickens Y RimUnited KingdomAsiya Javayant NEGOTIATION
Morrow M InouyeUnited KingdomIoni Bowcher NEW
Jones N CampainItalyIoni Bowcher PROPOSAL
Maisha D AmigonGermanyElwin Sharvill PROPOSAL
Jones M SchemmerItalyAmy Elsner NEGOTIATION
Darci L OstroskyGermanyAmy Elsner QUALIFIED
Greenwood R CaudyGermanyElwin Sharvill NEW
Murillo B MaletUnited KingdomBernardo Dominic NEGOTIATION
Antonio G WaycottUnited KingdomElwin Sharvill PROPOSAL
Kadeem S ShinkoSpainXuxue Feng NEGOTIATION
Isabel F RutaGermanyAnna Fali PROPOSAL
Aika E VenereItalyAmy Elsner NEGOTIATION
Rodrigues L WieserUnited KingdomAmy Elsner QUALIFIED
Clifford R NickaFranceAmy Elsner PROPOSAL
Ricardo B TollnerBrazilXuxue Feng QUALIFIED
Izzy O WaycottIndiaIvan Magalhaes PROPOSAL
Stacey J OldroydBrazilOnyama Limba NEW
Silvio W OldroydGermanyAsiya Javayant UNQUALIFIED
Julie T MorascaCanadaOnyama Limba UNQUALIFIED
Faith W MorascaBrazilAmy Elsner QUALIFIED
Frozen Columns
Name
Adams U Dilliard
Maria U Royster
Arvin V Nicka
Tony B Glick
Ashley Y Ostrosky
Juan T Venere
Maisha X Shinko
Izzy U Glick
Maria H Rim
Arvin U Vocelka
Sinclair O Glick
Kaitlin A Malet
Jennifer Z Wieser
Maria R Stenseth
Ashley E Kusko
Claire Y Briddick
Aditya Q Paprocki
Arvin Y Malet
Izzy S Campain
Francesco U Nicka
Rodrigues W Caldarera
Aditya R Oldroyd
Octavia U Gillian
Leja L Bolognia
Arvin H Chui
Mujtaba Q Briddick
Ashley U Albares
Smith J Garufi
Francesco I Oldroyd
Clifford T Bolognia
Clifford F Amigon
Darci U Nicka
James O Butt
Kadeem L Wieser
Maria M Sergi
Kaitlin I Waycott
Munro I Ruta
Aika J Dilliard
Maria N Shinko
Silvio D Bolognia
Tony A Campain
Izzy G Waycott
Aditya C Morasca
David I Slusarski
Greenwood A Caldarera
Smith R Rim
Claire B Paprocki
Jones O Poquette
Julie S Schemmer
Silvio L Schemmer
IdCountryDate
1000Japan2024-04-24
1001India2024-04-16
1002Canada2024-04-20
1003Canada2024-03-31
1004Germany2024-04-27
1005Brazil2024-04-15
1006Canada2024-04-25
1007Russia2024-04-14
1008Russia2024-04-07
1009France2024-03-29
1010Japan2024-04-06
1011France2024-04-12
1012France2024-04-15
1013Australia2024-04-24
1014Germany2024-04-27
1015India2024-04-24
1016Australia2024-04-21
1017France2024-03-31
1018India2024-04-15
1019Australia2024-04-02
1020Italy2024-04-26
1021Italy2024-04-08
1022Australia2024-04-27
1023France2024-04-09
1024Russia2024-03-30
1025Russia2024-04-12
1026Russia2024-04-20
1027Brazil2024-04-09
1028India2024-04-04
1029France2024-04-27
1030Brazil2024-04-16
1031Russia2024-04-13
1032Italy2024-04-06
1033United Kingdom2024-04-22
1034Italy2024-04-19
1035France2024-04-08
1036Canada2024-04-27
1037France2024-04-27
1038Japan2024-04-08
1039India2024-04-14
1040Spain2024-04-25
1041Canada2024-04-18
1042Spain2024-04-17
1043Brazil2024-04-06
1044Russia2024-04-10
1045Italy2024-04-10
1046Argentina2024-04-06
1047United Kingdom2024-04-01
1048Japan2024-03-31
1049Brazil2024-04-24

On-Demand Data

NameIdCountryDate
Mayumi P Inouye1000Germany2024-04-21
Salvatore I Figeroa1001Argentina2024-04-07
Mujtaba D Briddick1002Italy2024-04-21
Aika B Stockham1003Canada2024-04-27
Mayumi U Ruta1004Canada2024-04-18
Costa X Rim1005Brazil2024-04-05
Julie I Ostrosky1006Japan2024-04-17
Juan H Iturbide1007Canada2024-04-02
Maria W Rim1008Spain2024-04-05
Julie H Ferencz1009Brazil2024-04-05
Aruna A Venere1010Italy2024-04-26
Chavez O Royster1011Russia2024-03-29
Munro Y Rulapaugh1012Italy2024-04-25
Johnson M Sergi1013Italy2024-03-30
James L Caldarera1014Japan2024-04-13
Tony X Marrier1015Australia2024-04-23
Ashley N Vocelka1016Japan2024-04-09
Izzy Q Doe1017Italy2024-04-04
Deepesh C Bolognia1018Australia2024-04-11
Rodrigues P Iturbide1019Russia2024-04-09
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kadeem H StensethCanadaIvan Magalhaes NEW
Wickens P SaylorsUnited KingdomAmy Elsner NEW
Morrow X WaycottCanadaAmy Elsner RENEWAL
Ricardo X SchemmerArgentinaAmy Elsner UNQUALIFIED
Antonio Q AmigonGermanyOnyama Limba QUALIFIED
Jefferson W BowleyGermanyStephen Shaw RENEWAL
Nicolas K CaldareraUnited KingdomIoni Bowcher PROPOSAL
Jennifer F OstroskyFranceOnyama Limba QUALIFIED
Leja O FigeroaGermanyIoni Bowcher PROPOSAL
Juan O BowleyCanadaElwin Sharvill NEW
Darci M KuskoJapanIvan Magalhaes NEW
Octavia I NickaItalyBernardo Dominic NEGOTIATION
Julie L SaylorsFranceBernardo Dominic UNQUALIFIED
Salvatore S VenereRussiaAnna Fali QUALIFIED
Costa S MacleadBrazilElwin Sharvill NEGOTIATION
Maisha T OstroskyArgentinaXuxue Feng NEGOTIATION
Arvin C IturbideRussiaAsiya Javayant RENEWAL
Aruna B ShinkoGermanyOnyama Limba PROPOSAL
Maisha J ChuiArgentinaElwin Sharvill NEW
Emily C GarufiBrazilXuxue Feng PROPOSAL
Ricardo V KuskoSpainOnyama Limba PROPOSAL
Antonio I BriddickSpainBernardo Dominic NEW
Jennifer G StockhamRussiaIoni Bowcher RENEWAL
Jefferson N ShinkoBrazilIvan Magalhaes NEGOTIATION
Kadeem E SchemmerItalyBernardo Dominic PROPOSAL
Kadeem X SchemmerGermanyBernardo Dominic NEGOTIATION
Nicolas Y RutaGermanyAsiya Javayant NEW
Jennifer J MacleadArgentinaAmy Elsner UNQUALIFIED
Greenwood J RimBrazilIvan Magalhaes NEW
David Z GlickAustraliaAmy Elsner QUALIFIED
Leon O NickaIndiaAmy Elsner NEW
Maisha S MaletArgentinaStephen Shaw RENEWAL
Aika X WaycottFranceIvan Magalhaes PROPOSAL
Nicolas L FigeroaCanadaAsiya Javayant NEW
Octavia Z NickaItalyElwin Sharvill UNQUALIFIED
Sinclair M WieserArgentinaStephen Shaw NEW
Morrow R SchemmerIndiaStephen Shaw RENEWAL
Sinclair G MaletGermanyOnyama Limba PROPOSAL
Leon K VenereCanadaAmy Elsner QUALIFIED
Maria X AmigonGermanyStephen Shaw 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>