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
Salvatore R GlickUnited KingdomBernardo Dominic PROPOSAL
Munro U SergiAustraliaStephen Shaw NEGOTIATION
Faith T GauchoFranceStephen Shaw NEW
David C BriddickCanadaIoni Bowcher PROPOSAL
Leja T WhobreyJapanAmy Elsner NEGOTIATION
Darci R FerenczCanadaXuxue Feng NEGOTIATION
Chavez I OstroskyUnited KingdomElwin Sharvill QUALIFIED
Stacey N CaldareraIndiaBernardo Dominic UNQUALIFIED
Maisha W BriddickFranceAnna Fali UNQUALIFIED
Octavia D VocelkaSpainElwin Sharvill QUALIFIED
Darci H BriddickUnited KingdomStephen Shaw NEW
Johnson Z SaylorsCanadaBernardo Dominic RENEWAL
Rodrigues O VocelkaRussiaElwin Sharvill QUALIFIED
Aika I FollerArgentinaStephen Shaw PROPOSAL
Clifford G DoeRussiaAmy Elsner PROPOSAL
Maria V SergiArgentinaElwin Sharvill NEW
Maria T DilliardArgentinaIvan Magalhaes PROPOSAL
Leja R NickaBrazilOnyama Limba UNQUALIFIED
Rodrigues O WieserItalyAnna Fali PROPOSAL
Aditya C DilliardGermanyAsiya Javayant NEW
James N StockhamUnited KingdomIvan Magalhaes RENEWAL
Clifford E DarakjyAustraliaBernardo Dominic NEW
Rodrigues F BriddickItalyIvan Magalhaes RENEWAL
Jefferson Z FollerBrazilAsiya Javayant RENEWAL
Kadeem E NestleBrazilIoni Bowcher RENEWAL
Faith M CaudyRussiaAmy Elsner PROPOSAL
Jones Q NickaAustraliaAsiya Javayant RENEWAL
Aditya Y RulapaughSpainXuxue Feng QUALIFIED
Leja D NickaRussiaBernardo Dominic NEGOTIATION
Ashley W FerenczBrazilBernardo Dominic QUALIFIED
Rodrigues X NestleIndiaIvan Magalhaes NEGOTIATION
Jefferson D SaylorsCanadaAsiya Javayant PROPOSAL
Julie U ShinkoJapanOnyama Limba PROPOSAL
Jones E DilliardJapanStephen Shaw RENEWAL
Aika M PoquetteJapanAnna Fali NEW
Ricardo S AlbaresItalyXuxue Feng RENEWAL
Octavia Y BriddickArgentinaStephen Shaw UNQUALIFIED
Alejandro V KolmetzJapanAsiya Javayant PROPOSAL
James I SlusarskiAustraliaOnyama Limba NEW
Kadeem J NestleFranceBernardo Dominic NEW
Octavia S WhobreyGermanyIvan Magalhaes RENEWAL
Costa Y OldroydArgentinaAmy Elsner NEGOTIATION
Munro D CampainJapanOnyama Limba PROPOSAL
Izzy Y CaudyCanadaIoni Bowcher PROPOSAL
David B MacleadSpainAmy Elsner RENEWAL
Chavez L RutaGermanyOnyama Limba NEW
Jeanfrancois F StockhamGermanyAmy Elsner QUALIFIED
Deepesh V WieserIndiaIoni Bowcher NEW
Jeanfrancois P AlbaresBrazilAmy Elsner PROPOSAL
Francesco H CampainRussiaXuxue Feng NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Alejandro I NickaGermanyBernardo Dominic PROPOSAL
Sinclair M PaprockiGermanyIvan Magalhaes RENEWAL
Mayumi F PoquetteFranceStephen Shaw RENEWAL
Morrow Q StockhamItalyElwin Sharvill PROPOSAL
Nicolas Z SlusarskiIndiaStephen Shaw NEW
Johnson V StensethBrazilOnyama Limba NEW
Arvin Y SaylorsSpainXuxue Feng NEW
Mujtaba Y CampainItalyIoni Bowcher PROPOSAL
Darci W RimSpainBernardo Dominic NEGOTIATION
Claire K WieserJapanIvan Magalhaes NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Salvatore O DarakjyRussia2024-04-29Chanay, Jeffrey A Esq QUALIFIED45Ioni Bowcher
1001Nicolas H BologniaAustralia2024-04-16Truhlar And Truhlar Attys RENEWAL27Ivan Magalhaes
1002Antonio Z VenereSpain2024-04-12Feltz Printing Service QUALIFIED50Elwin Sharvill
1003Munro B FollerAustralia2024-04-29Morlong Associates NEW83Ivan Magalhaes
1004Ashley S StockhamGermany2024-04-28Dorl, James J Esq NEW82Ivan Magalhaes
1005Smith M OldroydFrance2024-04-04Chapman, Ross E Esq NEGOTIATION2Stephen Shaw
1006Deepesh T OstroskySpain2024-04-27Chemel, James L Cpa PROPOSAL11Stephen Shaw
1007Nicolas G WaycottAustralia2024-04-19Chemel, James L Cpa PROPOSAL1Anna Fali
1008Munro J WieserCanada2024-04-22Dorl, James J Esq QUALIFIED7Stephen Shaw
1009Greenwood L FollerCanada2024-04-22Chemel, James L Cpa PROPOSAL50Stephen Shaw
1010Clifford K TollnerUnited Kingdom2024-04-02Chanay, Jeffrey A Esq UNQUALIFIED57Xuxue Feng
1011Stacey Z ChuiSpain2024-04-04Commercial Press PROPOSAL95Amy Elsner
1012Rodrigues P NestleFrance2024-04-06Benton, John B Jr QUALIFIED99Anna Fali
1013Darci T OstroskyIndia2024-04-17Commercial Press QUALIFIED17Amy Elsner
1014Alejandro H DilliardAustralia2024-04-04Morlong Associates NEW75Ivan Magalhaes
1015Julie A OstroskyArgentina2024-04-14Commercial Press QUALIFIED59Xuxue Feng
1016Claire W ButtCanada2024-04-09Truhlar And Truhlar Attys UNQUALIFIED55Onyama Limba
1017Cody V BologniaCanada2024-04-02Rangoni Of Florence NEW12Amy Elsner
1018Aika R AmigonRussia2024-04-14King, Christopher A Esq NEGOTIATION14Onyama Limba
1019Aika X BologniaFrance2024-04-11King, Christopher A Esq QUALIFIED32Anna Fali
1020Rodrigues J BowleyCanada2024-04-25Chapman, Ross E Esq NEGOTIATION88Elwin Sharvill
1021Kaitlin L FigeroaItaly2024-04-05Commercial Press UNQUALIFIED26Bernardo Dominic
1022Jones H StockhamIndia2024-04-11Commercial Press NEGOTIATION1Anna Fali
1023Silvio E RulapaughGermany2024-04-18Feltz Printing Service NEGOTIATION19Stephen Shaw
1024Izzy S WhobreyIndia2024-04-17Benton, John B Jr NEGOTIATION44Bernardo Dominic
1025Jeanfrancois X SchemmerItaly2024-04-30Feltz Printing Service NEGOTIATION26Bernardo Dominic
1026Claire P NickaJapan2024-04-04Benton, John B Jr QUALIFIED35Elwin Sharvill
1027Aruna B WieserArgentina2024-04-20Chanay, Jeffrey A Esq RENEWAL10Ivan Magalhaes
1028Arvin M CaudyBrazil2024-04-17Morlong Associates NEGOTIATION69Amy Elsner
1029Isabel P RoysterCanada2024-04-07Chapman, Ross E Esq QUALIFIED19Anna Fali
1030Wickens N BriddickFrance2024-04-08Chemel, James L Cpa NEW6Amy Elsner
1031Kaitlin E MaletFrance2024-04-21Chapman, Ross E Esq NEW11Amy Elsner
1032Tony H ShinkoUnited Kingdom2024-05-01Rousseaux, Michael Esq NEW64Xuxue Feng
1033Ashley F SlusarskiRussia2024-04-07Dorl, James J Esq PROPOSAL88Asiya Javayant
1034Cody Q WaycottFrance2024-04-16Morlong Associates NEGOTIATION87Stephen Shaw
1035Jennifer Q CaudyBrazil2024-04-05Chemel, James L Cpa NEGOTIATION67Elwin Sharvill
1036David K GlickItaly2024-04-14Dorl, James J Esq PROPOSAL92Asiya Javayant
1037Aditya U IturbideCanada2024-04-26Chanay, Jeffrey A Esq NEW26Xuxue Feng
1038Francesco I BologniaRussia2024-04-26Chemel, James L Cpa NEW3Elwin Sharvill
1039Johnson R RoysterCanada2024-04-05Morlong Associates NEGOTIATION23Elwin Sharvill
1040Kaitlin X WaycottFrance2024-04-08Feiner Bros NEGOTIATION9Bernardo Dominic
1041Francesco H OstroskySpain2024-04-03Printing Dimensions RENEWAL45Ioni Bowcher
1042Juan P RimUnited Kingdom2024-04-04Chemel, James L Cpa NEGOTIATION5Asiya Javayant
1043Jennifer Z AlbaresAustralia2024-04-16Chemel, James L Cpa PROPOSAL6Asiya Javayant
1044Jeanfrancois U FollerAustralia2024-04-17Benton, John B Jr NEW23Anna Fali
1045Munro T PoquetteBrazil2024-04-29Commercial Press RENEWAL64Ivan Magalhaes
1046Clifford Y NickaBrazil2024-04-16Chapman, Ross E Esq NEW10Elwin Sharvill
1047Jeanfrancois L VenereAustralia2024-04-21Commercial Press RENEWAL75Xuxue Feng
1048Morrow U VocelkaCanada2024-04-29Chanay, Jeffrey A Esq NEGOTIATION63Amy Elsner
1049Faith P IturbideUnited Kingdom2024-05-01Chapman, Ross E Esq RENEWAL95Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Nicolas Y MorascaUnited KingdomAsiya Javayant PROPOSAL
Silvio J VocelkaAustraliaIoni Bowcher NEGOTIATION
Stacey B RimItalyElwin Sharvill PROPOSAL
Clifford I AmigonUnited KingdomAmy Elsner NEW
Izzy I NestleFranceXuxue Feng UNQUALIFIED
Jones Q PaprockiFranceElwin Sharvill RENEWAL
Leon I InouyeItalyIvan Magalhaes PROPOSAL
Nicolas W KuskoFranceAsiya Javayant UNQUALIFIED
Misaki Z RimAustraliaAmy Elsner QUALIFIED
Kaitlin D TollnerJapanIoni Bowcher RENEWAL
Stacey K FollerSpainAmy Elsner RENEWAL
Julie K PaprockiBrazilAsiya Javayant NEGOTIATION
Nicolas M OldroydJapanElwin Sharvill RENEWAL
Faith Q AlbaresItalyAsiya Javayant RENEWAL
Izzy R StensethIndiaStephen Shaw UNQUALIFIED
Aditya K PaprockiItalyIvan Magalhaes RENEWAL
Darci K MaletGermanyElwin Sharvill NEW
Murillo I MarrierJapanElwin Sharvill QUALIFIED
Ricardo F CampainUnited KingdomOnyama Limba PROPOSAL
Jennifer U ChuiUnited KingdomIoni Bowcher NEGOTIATION
Jennifer W GarufiAustraliaElwin Sharvill UNQUALIFIED
Juan N FlosiArgentinaXuxue Feng NEGOTIATION
Costa K DilliardUnited KingdomOnyama Limba NEW
Octavia I MarrierIndiaElwin Sharvill UNQUALIFIED
Antonio U CaudyRussiaIvan Magalhaes QUALIFIED
Wickens H FerenczGermanyXuxue Feng QUALIFIED
Wickens O CaudyAustraliaOnyama Limba QUALIFIED
Aika Z IturbideBrazilAsiya Javayant NEW
Ivar D SergiFranceIvan Magalhaes QUALIFIED
Emily T FollerSpainXuxue Feng NEGOTIATION
Darci D AlbaresItalyAsiya Javayant NEW
Adams U KuskoArgentinaOnyama Limba NEW
Johnson P RulapaughGermanyStephen Shaw UNQUALIFIED
Juan K RoysterFranceBernardo Dominic QUALIFIED
Kadeem M IturbideSpainXuxue Feng UNQUALIFIED
Morrow L WaycottGermanyOnyama Limba PROPOSAL
Faith J InouyeRussiaBernardo Dominic NEGOTIATION
Jeanfrancois H KuskoArgentinaAsiya Javayant RENEWAL
Mujtaba U BologniaAustraliaAmy Elsner NEW
Rodrigues T OldroydIndiaAnna Fali UNQUALIFIED
Clifford C PerinItalyIvan Magalhaes QUALIFIED
Murillo Y MaletJapanAnna Fali NEW
Greenwood V MaletJapanIvan Magalhaes NEW
Leon I SlusarskiJapanXuxue Feng NEGOTIATION
Nicolas X KuskoCanadaAmy Elsner UNQUALIFIED
Jones H MaletIndiaOnyama Limba QUALIFIED
Jeanfrancois O StensethJapanElwin Sharvill NEW
Johnson E KuskoSpainAnna Fali PROPOSAL
Antonio M FigeroaBrazilIvan Magalhaes UNQUALIFIED
Maria V GlickItalyElwin Sharvill RENEWAL
Frozen Columns
Name
David E Inouye
Silvio R Rim
Jones Q Schemmer
Mujtaba K Sergi
Aditya J Bolognia
Mayumi V Foller
Ashley E Garufi
Cody A Amigon
Juan E Saylors
Leja I Flosi
Emily B Bolognia
Julie W Butt
Jeanfrancois H Oldroyd
Deepesh B Nestle
David U Kolmetz
Arvin M Shinko
Kaitlin J Butt
Jeanfrancois I Gaucho
Emily R Malet
Rodrigues P Stockham
Morrow O Schemmer
Emily F Shinko
David D Bowley
Aditya G Butt
Jeanfrancois A Bowley
Juan Z Nestle
Ashley S Malet
Maria V Foller
Alejandro S Schemmer
Jeanfrancois R Doe
Julie C Bolognia
Kaitlin A Briddick
Jefferson O Inouye
Munro Y Schemmer
Johnson E Nicka
Silvio A Stockham
Murillo K Iturbide
Cody L Waycott
Isabel P Stockham
Darci F Saylors
Rodrigues G Figeroa
Isabel N Glick
Faith V Doe
Leja C Caldarera
Adams O Sergi
Misaki R Dilliard
Aditya P Ruta
Claire T Bolognia
Murillo L Maclead
Munro H Paprocki
IdCountryDate
1000France2024-04-02
1001Russia2024-04-03
1002France2024-04-29
1003Russia2024-04-20
1004Germany2024-04-21
1005India2024-04-20
1006Japan2024-04-27
1007United Kingdom2024-05-01
1008France2024-04-22
1009France2024-04-04
1010United Kingdom2024-04-02
1011United Kingdom2024-04-14
1012Germany2024-04-19
1013Australia2024-04-11
1014Brazil2024-04-02
1015Spain2024-04-22
1016India2024-04-05
1017Argentina2024-04-20
1018Brazil2024-04-05
1019Australia2024-04-15
1020India2024-04-30
1021Japan2024-04-29
1022Brazil2024-04-15
1023Canada2024-04-30
1024France2024-04-12
1025Argentina2024-04-17
1026Argentina2024-04-08
1027Russia2024-04-22
1028Canada2024-04-24
1029Brazil2024-04-05
1030Germany2024-04-02
1031Italy2024-04-09
1032Japan2024-04-20
1033Spain2024-04-17
1034Japan2024-04-09
1035Russia2024-04-30
1036United Kingdom2024-04-17
1037Germany2024-04-17
1038United Kingdom2024-04-17
1039India2024-04-17
1040India2024-04-16
1041Argentina2024-04-10
1042France2024-04-29
1043Canada2024-04-27
1044Brazil2024-04-17
1045Australia2024-04-07
1046Russia2024-04-04
1047Brazil2024-04-28
1048Canada2024-04-19
1049Spain2024-04-23

On-Demand Data

NameIdCountryDate
Maisha H Sergi1000Japan2024-04-23
Maisha K Caudy1001Argentina2024-04-24
Jeanfrancois L Caudy1002Germany2024-04-27
Aika U Gaucho1003India2024-04-06
Julie L Stockham1004Italy2024-04-16
Kaitlin T Perin1005United Kingdom2024-04-19
Ivar B Ostrosky1006Russia2024-04-29
Smith I Waycott1007Italy2024-04-28
Ashley A Chui1008Canada2024-04-09
Sinclair E Nicka1009Spain2024-04-10
David B Foller1010Germany2024-04-20
Greenwood I Royster1011Spain2024-04-03
Kaitlin Z Ruta1012Australia2024-04-03
Johnson N Sergi1013Australia2024-04-07
Darci C Albares1014Argentina2024-04-09
Wickens K Rim1015Argentina2024-04-20
Faith L Nestle1016Russia2024-04-10
Costa D Schemmer1017Canada2024-04-27
Adams I Sergi1018Spain2024-04-16
Aditya B Sergi1019Russia2024-04-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
James F DarakjySpainAsiya Javayant RENEWAL
Octavia W AmigonAustraliaBernardo Dominic NEGOTIATION
Alejandro L GillianIndiaAmy Elsner NEW
Costa W FlosiIndiaXuxue Feng QUALIFIED
Aditya M NestleJapanOnyama Limba QUALIFIED
Smith X KuskoItalyAmy Elsner UNQUALIFIED
Jeanfrancois R TollnerJapanXuxue Feng RENEWAL
Costa U MorascaArgentinaIvan Magalhaes NEGOTIATION
Rodrigues L BologniaIndiaAmy Elsner UNQUALIFIED
Jennifer A VocelkaArgentinaXuxue Feng RENEWAL
Munro H WaycottItalyBernardo Dominic PROPOSAL
Morrow Z BologniaAustraliaAsiya Javayant NEW
Leja F SchemmerGermanyIvan Magalhaes NEW
Kaitlin X OstroskyFranceAsiya Javayant QUALIFIED
Jeanfrancois V NestleFranceBernardo Dominic RENEWAL
David G GillianArgentinaOnyama Limba NEW
Faith C StockhamItalyStephen Shaw RENEWAL
Aika D OstroskyAustraliaIoni Bowcher NEGOTIATION
Leja M CaldareraAustraliaElwin Sharvill QUALIFIED
Munro R TollnerUnited KingdomAmy Elsner PROPOSAL
Arvin V SergiRussiaStephen Shaw UNQUALIFIED
Stacey A FlosiArgentinaAsiya Javayant QUALIFIED
Aditya Z OldroydJapanOnyama Limba QUALIFIED
Kadeem I MarrierArgentinaXuxue Feng PROPOSAL
Juan Z CaudyFranceAmy Elsner UNQUALIFIED
Ricardo W MaletFranceBernardo Dominic QUALIFIED
Aruna N SaylorsAustraliaStephen Shaw PROPOSAL
Smith I StensethSpainStephen Shaw PROPOSAL
Jones Z GillianItalyAnna Fali NEW
Mayumi J SchemmerJapanOnyama Limba NEW
Adams E GarufiFranceXuxue Feng RENEWAL
Nicolas A GlickRussiaIoni Bowcher RENEWAL
Greenwood O GauchoGermanyBernardo Dominic NEGOTIATION
Ivar H GillianAustraliaAnna Fali NEGOTIATION
Faith W KuskoRussiaBernardo Dominic QUALIFIED
Julie M TollnerCanadaStephen Shaw PROPOSAL
Chavez C DilliardGermanyXuxue Feng NEW
Emily N SergiSpainOnyama Limba NEW
Costa J NickaAustraliaAsiya Javayant NEGOTIATION
Kaitlin V FerenczIndiaBernardo Dominic QUALIFIED

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