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
Ivar W AmigonCanadaOnyama Limba PROPOSAL
Emily W DilliardAustraliaXuxue Feng NEW
Kaitlin E IturbideIndiaAnna Fali NEW
Francesco B AmigonAustraliaAmy Elsner QUALIFIED
Leja N SergiIndiaAmy Elsner QUALIFIED
Greenwood G AlbaresArgentinaIvan Magalhaes RENEWAL
Salvatore E AmigonUnited KingdomOnyama Limba RENEWAL
Maria Z CaudySpainElwin Sharvill RENEWAL
Chavez M SaylorsCanadaIvan Magalhaes RENEWAL
Adams N PoquetteSpainIoni Bowcher PROPOSAL
Jeanfrancois N NickaRussiaAmy Elsner PROPOSAL
Izzy C PaprockiItalyOnyama Limba NEW
Deepesh F OstroskyCanadaXuxue Feng UNQUALIFIED
Jones O GillianAustraliaStephen Shaw NEW
Claire X IturbideRussiaAnna Fali UNQUALIFIED
Emily L OldroydIndiaElwin Sharvill QUALIFIED
Arvin Z TollnerAustraliaOnyama Limba PROPOSAL
James T KolmetzItalyElwin Sharvill NEW
Murillo P MaletSpainAsiya Javayant NEGOTIATION
Mayumi P RimGermanyBernardo Dominic QUALIFIED
Mujtaba E MarrierIndiaIvan Magalhaes NEW
Darci C GlickRussiaStephen Shaw UNQUALIFIED
Adams B MaletItalyStephen Shaw RENEWAL
Julie S AlbaresBrazilOnyama Limba PROPOSAL
Salvatore B ShinkoCanadaAsiya Javayant UNQUALIFIED
Adams T GlickRussiaAnna Fali QUALIFIED
Ricardo E KolmetzIndiaAmy Elsner QUALIFIED
Ashley U MaletCanadaElwin Sharvill QUALIFIED
Ricardo E CaldareraSpainElwin Sharvill NEGOTIATION
Kaitlin V ButtItalyXuxue Feng PROPOSAL
Chavez M OstroskyItalyAmy Elsner UNQUALIFIED
Chavez J FerenczIndiaStephen Shaw PROPOSAL
Jones C FerenczSpainXuxue Feng PROPOSAL
Leon O KuskoCanadaOnyama Limba QUALIFIED
Jennifer B WhobreyRussiaAnna Fali RENEWAL
Maria B FlosiCanadaBernardo Dominic NEW
Ricardo Y GarufiFranceXuxue Feng PROPOSAL
Antonio M ChuiSpainIoni Bowcher RENEWAL
Claire R KolmetzAustraliaXuxue Feng QUALIFIED
Murillo X KuskoBrazilAmy Elsner PROPOSAL
Aditya W OldroydJapanIoni Bowcher UNQUALIFIED
Darci T WaycottBrazilIvan Magalhaes NEGOTIATION
Claire W GlickAustraliaElwin Sharvill NEGOTIATION
Mayumi Y GarufiArgentinaAmy Elsner NEW
Juan Q NickaRussiaAsiya Javayant NEW
Francesco W SlusarskiArgentinaIvan Magalhaes RENEWAL
Smith X KolmetzItalyIvan Magalhaes NEW
Isabel O PoquetteBrazilBernardo Dominic NEGOTIATION
Arvin D RoysterBrazilXuxue Feng NEGOTIATION
Clifford D KuskoIndiaIoni Bowcher PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Kaitlin A GarufiItalyOnyama Limba QUALIFIED
Francesco J AlbaresCanadaElwin Sharvill PROPOSAL
Misaki W CaudyBrazilIoni Bowcher PROPOSAL
Ashley F NestleCanadaIoni Bowcher NEW
Sinclair T VenereBrazilAmy Elsner NEW
Clifford B GlickIndiaBernardo Dominic PROPOSAL
Costa J MaletItalyBernardo Dominic UNQUALIFIED
Kaitlin T WaycottGermanyOnyama Limba RENEWAL
Mayumi E MaletUnited KingdomStephen Shaw NEGOTIATION
Leon G BologniaIndiaIvan Magalhaes UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Tony M RimBrazil2024-03-26Feltz Printing Service NEGOTIATION89Xuxue Feng
1001Salvatore B GarufiAustralia2024-04-05Benton, John B Jr RENEWAL6Bernardo Dominic
1002Francesco G DilliardIndia2024-04-16Truhlar And Truhlar Attys PROPOSAL63Xuxue Feng
1003Octavia O BologniaArgentina2024-03-28Chapman, Ross E Esq PROPOSAL84Onyama Limba
1004Tony V DarakjyJapan2024-04-03Printing Dimensions RENEWAL19Stephen Shaw
1005Silvio M BologniaJapan2024-04-16King, Christopher A Esq RENEWAL60Ivan Magalhaes
1006Costa H VenereRussia2024-04-09Feiner Bros QUALIFIED51Ioni Bowcher
1007Johnson Q MorascaItaly2024-04-13King, Christopher A Esq PROPOSAL88Ioni Bowcher
1008David H BriddickAustralia2024-04-04Feltz Printing Service QUALIFIED33Stephen Shaw
1009Sinclair V MaletRussia2024-03-20Chanay, Jeffrey A Esq PROPOSAL66Elwin Sharvill
1010Antonio B KuskoItaly2024-04-17Rangoni Of Florence RENEWAL37Anna Fali
1011Kadeem Z FigeroaCanada2024-03-29Benton, John B Jr RENEWAL37Elwin Sharvill
1012Leon Y PaprockiItaly2024-04-13Dorl, James J Esq RENEWAL70Xuxue Feng
1013Costa Z PerinRussia2024-04-01Chanay, Jeffrey A Esq NEW21Onyama Limba
1014Jones X MarrierIndia2024-04-02Buckley Miller Wright UNQUALIFIED81Amy Elsner
1015Rodrigues A RoysterFrance2024-04-10Buckley Miller Wright NEGOTIATION13Amy Elsner
1016Smith E RutaItaly2024-04-02Printing Dimensions NEW89Elwin Sharvill
1017Clifford B OstroskySpain2024-03-20Truhlar And Truhlar Attys NEGOTIATION4Ioni Bowcher
1018Clifford A BologniaJapan2024-04-10Commercial Press RENEWAL39Asiya Javayant
1019Greenwood Z StockhamJapan2024-04-17Morlong Associates PROPOSAL53Ivan Magalhaes
1020Emily W InouyeAustralia2024-04-02Truhlar And Truhlar Attys NEW17Xuxue Feng
1021Aditya Q IturbideUnited Kingdom2024-04-02Chapman, Ross E Esq NEW44Asiya Javayant
1022Adams P ButtSpain2024-04-02Rousseaux, Michael Esq NEW27Anna Fali
1023Mayumi U CampainSpain2024-04-07Chapman, Ross E Esq UNQUALIFIED21Bernardo Dominic
1024Misaki E BriddickFrance2024-04-14Rangoni Of Florence PROPOSAL57Ivan Magalhaes
1025Jeanfrancois I WhobreyAustralia2024-04-07Feiner Bros NEGOTIATION88Anna Fali
1026Salvatore W StensethGermany2024-04-06Dorl, James J Esq QUALIFIED88Ioni Bowcher
1027Izzy L RoysterCanada2024-03-29Chemel, James L Cpa NEW33Bernardo Dominic
1028Deepesh B OstroskyUnited Kingdom2024-03-24Morlong Associates UNQUALIFIED37Stephen Shaw
1029Izzy G MaletUnited Kingdom2024-03-22Feltz Printing Service PROPOSAL56Ivan Magalhaes
1030Rodrigues J KuskoJapan2024-04-17Chapman, Ross E Esq NEW61Stephen Shaw
1031Ashley J MaletAustralia2024-03-24Morlong Associates UNQUALIFIED90Onyama Limba
1032Isabel E MorascaIndia2024-03-25King, Christopher A Esq UNQUALIFIED23Asiya Javayant
1033Salvatore F RulapaughBrazil2024-04-04Rousseaux, Michael Esq RENEWAL2Stephen Shaw
1034Costa V DilliardIndia2024-03-26Feltz Printing Service PROPOSAL80Onyama Limba
1035Alejandro W VocelkaSpain2024-04-05King, Christopher A Esq NEW79Bernardo Dominic
1036Mujtaba O DoeSpain2024-04-16Rangoni Of Florence NEGOTIATION14Xuxue Feng
1037Deepesh N WaycottItaly2024-03-24Feiner Bros RENEWAL57Xuxue Feng
1038Jefferson V MaletBrazil2024-03-31Rangoni Of Florence UNQUALIFIED30Ivan Magalhaes
1039Jones X PerinGermany2024-03-31Commercial Press RENEWAL66Onyama Limba
1040Kaitlin N RutaAustralia2024-04-17Truhlar And Truhlar Attys UNQUALIFIED69Ioni Bowcher
1041Alejandro W WhobreyItaly2024-04-09Chapman, Ross E Esq UNQUALIFIED52Stephen Shaw
1042Darci U SlusarskiSpain2024-03-25Chanay, Jeffrey A Esq RENEWAL65Ioni Bowcher
1043Julie Q CampainArgentina2024-04-08Morlong Associates UNQUALIFIED52Anna Fali
1044Ricardo K FlosiIndia2024-04-13Chapman, Ross E Esq NEGOTIATION98Asiya Javayant
1045Jones H MaletFrance2024-04-01Benton, John B Jr NEW68Xuxue Feng
1046Rodrigues R FollerSpain2024-03-21Commercial Press UNQUALIFIED76Xuxue Feng
1047Leja H MorascaBrazil2024-04-06Chapman, Ross E Esq UNQUALIFIED71Bernardo Dominic
1048Octavia Z ShinkoCanada2024-03-30Printing Dimensions PROPOSAL71Xuxue Feng
1049Isabel R BologniaUnited Kingdom2024-03-20Feltz Printing Service NEGOTIATION96Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Aditya O WieserGermanyOnyama Limba RENEWAL
Jones G SchemmerArgentinaAmy Elsner QUALIFIED
Tony P GlickFranceXuxue Feng NEGOTIATION
Misaki H AlbaresJapanAnna Fali RENEWAL
Antonio R PoquetteBrazilStephen Shaw NEW
Aika D SaylorsItalyIvan Magalhaes PROPOSAL
Jeanfrancois C MaletRussiaIoni Bowcher PROPOSAL
Jennifer D StockhamItalyStephen Shaw NEW
Deepesh S MorascaRussiaAsiya Javayant QUALIFIED
Jeanfrancois Z ShinkoUnited KingdomBernardo Dominic QUALIFIED
Aika D PoquetteSpainAmy Elsner UNQUALIFIED
Antonio P KuskoUnited KingdomXuxue Feng PROPOSAL
Sinclair W GarufiItalyOnyama Limba NEW
Tony M WhobreyGermanyIvan Magalhaes PROPOSAL
Stacey M MaletItalyIvan Magalhaes UNQUALIFIED
Aruna J GillianArgentinaAnna Fali QUALIFIED
David E FollerBrazilAsiya Javayant NEW
Ivar U WaycottFranceAmy Elsner PROPOSAL
Antonio H ShinkoAustraliaBernardo Dominic NEW
Aditya M OstroskyCanadaAsiya Javayant PROPOSAL
Isabel J GauchoUnited KingdomAsiya Javayant NEGOTIATION
Morrow L MacleadFranceAnna Fali UNQUALIFIED
Costa C DilliardCanadaAnna Fali RENEWAL
Mayumi J CaldareraJapanAsiya Javayant PROPOSAL
Stacey E DilliardGermanyBernardo Dominic UNQUALIFIED
Deepesh X BriddickItalyXuxue Feng PROPOSAL
Stacey E StensethArgentinaIvan Magalhaes NEW
Aika Q DarakjyIndiaIoni Bowcher QUALIFIED
Alejandro J FollerCanadaAmy Elsner NEGOTIATION
Greenwood H SaylorsArgentinaOnyama Limba NEGOTIATION
Aditya X TollnerItalyAmy Elsner NEGOTIATION
Misaki D RoysterFranceIvan Magalhaes NEGOTIATION
Kaitlin G SlusarskiFranceAsiya Javayant NEW
Adams J CampainBrazilIvan Magalhaes PROPOSAL
Aruna D AlbaresItalyAsiya Javayant PROPOSAL
Izzy Y NickaItalyStephen Shaw UNQUALIFIED
Isabel O WaycottFranceStephen Shaw NEW
Ricardo S FollerBrazilElwin Sharvill UNQUALIFIED
Clifford Y MaletAustraliaStephen Shaw UNQUALIFIED
Octavia H MarrierUnited KingdomElwin Sharvill PROPOSAL
Mujtaba S BowleySpainAmy Elsner QUALIFIED
Juan S WieserCanadaOnyama Limba NEGOTIATION
Arvin Y DilliardAustraliaAnna Fali RENEWAL
Morrow Y DilliardUnited KingdomElwin Sharvill UNQUALIFIED
Chavez H AmigonIndiaOnyama Limba PROPOSAL
Faith K SaylorsJapanIvan Magalhaes NEW
Murillo S DilliardCanadaOnyama Limba NEW
Costa I WaycottRussiaOnyama Limba RENEWAL
Murillo Y RutaUnited KingdomOnyama Limba PROPOSAL
Antonio R NickaAustraliaAnna Fali UNQUALIFIED
Frozen Columns
Name
Jeanfrancois V Maclead
Leon V Stenseth
Jones V Nicka
Deepesh B Gaucho
Deepesh E Gaucho
David W Bowley
Misaki N Ruta
Leon R Flosi
Aruna N Paprocki
Maria Q Wieser
Jones H Paprocki
Johnson S Nestle
Aruna Z Bolognia
Juan U Darakjy
Arvin A Wieser
Antonio H Ostrosky
Kadeem Q Albares
Leja M Amigon
Silvio L Flosi
Murillo L Schemmer
Francesco D Paprocki
James F Inouye
Juan K Figeroa
Francesco P Poquette
Jones C Flosi
Johnson T Nicka
Salvatore J Foller
Jones K Paprocki
Jefferson F Briddick
Alejandro Y Wieser
Jones K Malet
Stacey U Caudy
Jennifer I Maclead
Julie D Foller
Izzy Z Chui
Aruna D Bolognia
Aditya B Schemmer
Antonio I Campain
Jeanfrancois R Butt
David L Sergi
Jones W Shinko
David M Nicka
Tony E Morasca
Jones O Ruta
Ashley B Stockham
James C Poquette
Isabel Q Gillian
Arvin T Sergi
Octavia B Rulapaugh
Johnson X Vocelka
IdCountryDate
1000Japan2024-04-15
1001Canada2024-04-06
1002Germany2024-03-24
1003Japan2024-04-03
1004United Kingdom2024-04-10
1005Spain2024-04-03
1006Italy2024-03-22
1007India2024-03-30
1008United Kingdom2024-03-26
1009United Kingdom2024-03-20
1010Spain2024-04-16
1011Italy2024-03-27
1012Argentina2024-03-20
1013United Kingdom2024-04-08
1014India2024-04-13
1015France2024-04-04
1016Argentina2024-04-06
1017Russia2024-04-17
1018Italy2024-04-16
1019Canada2024-03-31
1020Brazil2024-04-01
1021Japan2024-03-19
1022Argentina2024-04-08
1023United Kingdom2024-03-22
1024Spain2024-03-21
1025Italy2024-04-05
1026Russia2024-04-06
1027India2024-03-26
1028Brazil2024-03-23
1029Japan2024-03-21
1030Russia2024-03-20
1031United Kingdom2024-04-11
1032Australia2024-03-23
1033Spain2024-03-26
1034Canada2024-04-17
1035Russia2024-04-11
1036Brazil2024-04-08
1037Brazil2024-03-22
1038Germany2024-03-22
1039France2024-03-30
1040Argentina2024-04-14
1041Russia2024-04-02
1042Italy2024-04-03
1043Germany2024-04-07
1044Australia2024-03-27
1045Italy2024-03-27
1046Russia2024-04-05
1047United Kingdom2024-04-08
1048Argentina2024-03-27
1049Canada2024-03-25

On-Demand Data

NameIdCountryDate
Murillo F Ruta1000Germany2024-03-20
Smith I Vocelka1001Japan2024-03-26
Izzy H Garufi1002Argentina2024-04-11
Octavia S Gillian1003India2024-04-14
Aruna B Morasca1004Spain2024-03-24
Murillo I Oldroyd1005Japan2024-04-08
David J Butt1006United Kingdom2024-04-17
Jones Y Ferencz1007Russia2024-03-20
Morrow U Morasca1008Argentina2024-03-30
Octavia I Waycott1009Spain2024-04-03
Ashley K Venere1010India2024-03-29
Isabel E Flosi1011Germany2024-03-19
Aika Q Foller1012Spain2024-04-02
Ashley C Schemmer1013France2024-04-13
Misaki J Figeroa1014Canada2024-04-11
Kadeem V Inouye1015India2024-04-06
Leon H Albares1016Japan2024-04-06
Nicolas Y Kolmetz1017Brazil2024-04-02
Antonio M Gillian1018United Kingdom2024-03-26
Jeanfrancois A Chui1019Canada2024-03-19
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Chavez U GarufiRussiaOnyama Limba RENEWAL
Munro V StensethCanadaBernardo Dominic RENEWAL
Mujtaba I GillianArgentinaAmy Elsner PROPOSAL
Izzy T FlosiUnited KingdomAnna Fali NEW
Aditya F StockhamSpainElwin Sharvill QUALIFIED
Cody G NickaIndiaIoni Bowcher QUALIFIED
Juan U SchemmerCanadaIoni Bowcher PROPOSAL
Ivar X TollnerAustraliaOnyama Limba PROPOSAL
Nicolas H DoeAustraliaStephen Shaw NEW
Silvio T BologniaJapanOnyama Limba RENEWAL
Faith H FigeroaSpainIoni Bowcher UNQUALIFIED
Leja W MaletIndiaIvan Magalhaes UNQUALIFIED
Stacey M KuskoSpainXuxue Feng NEGOTIATION
Deepesh B StockhamUnited KingdomStephen Shaw QUALIFIED
Clifford Q GauchoArgentinaIvan Magalhaes PROPOSAL
Adams J BowleyRussiaAnna Fali QUALIFIED
Jeanfrancois L FigeroaBrazilAmy Elsner PROPOSAL
Julie Z StockhamUnited KingdomElwin Sharvill PROPOSAL
Arvin D OldroydItalyXuxue Feng NEGOTIATION
Jennifer Z KolmetzAustraliaBernardo Dominic PROPOSAL
Jones M IturbideAustraliaIoni Bowcher UNQUALIFIED
Ivar T MaletAustraliaBernardo Dominic NEW
Darci Q ShinkoGermanyOnyama Limba PROPOSAL
Stacey W AlbaresArgentinaAmy Elsner PROPOSAL
Antonio H WieserBrazilIvan Magalhaes PROPOSAL
Octavia L NestleCanadaIvan Magalhaes PROPOSAL
Aika E OstroskyFranceAnna Fali RENEWAL
Salvatore H RulapaughGermanyAsiya Javayant NEGOTIATION
Kadeem Q ButtBrazilIvan Magalhaes NEW
Arvin N SchemmerItalyAsiya Javayant UNQUALIFIED
Emily W PoquetteBrazilElwin Sharvill QUALIFIED
Adams C RoysterSpainAnna Fali NEW
Cody J CaldareraRussiaAnna Fali PROPOSAL
Ricardo U VenereAustraliaElwin Sharvill NEGOTIATION
Clifford N CaldareraGermanyIoni Bowcher NEGOTIATION
Munro J WieserGermanyOnyama Limba UNQUALIFIED
Darci D PerinCanadaAmy Elsner NEW
James I GlickAustraliaOnyama Limba NEW
Kadeem C OstroskyUnited KingdomOnyama Limba RENEWAL
Misaki W PerinIndiaIvan Magalhaes 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>