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
Jones K AmigonSpainOnyama Limba PROPOSAL
Johnson T GauchoUnited KingdomIoni Bowcher NEGOTIATION
James R RimFranceStephen Shaw PROPOSAL
Chavez B FlosiBrazilIvan Magalhaes PROPOSAL
Maria E DarakjyFranceBernardo Dominic RENEWAL
Mujtaba L MarrierRussiaOnyama Limba NEW
Misaki Z AlbaresAustraliaAmy Elsner UNQUALIFIED
Mayumi X MaletRussiaIvan Magalhaes PROPOSAL
Aditya Q RulapaughSpainXuxue Feng RENEWAL
David H PoquetteItalyXuxue Feng RENEWAL
Wickens E MaletBrazilBernardo Dominic QUALIFIED
Alejandro F RutaUnited KingdomStephen Shaw QUALIFIED
Octavia C WaycottSpainAsiya Javayant NEGOTIATION
Octavia K WaycottAustraliaXuxue Feng QUALIFIED
Arvin L MarrierSpainAsiya Javayant QUALIFIED
Aika Z SchemmerGermanyXuxue Feng NEGOTIATION
Alejandro C FlosiCanadaIvan Magalhaes NEW
Maria K ChuiJapanXuxue Feng QUALIFIED
Juan N BowleyUnited KingdomXuxue Feng UNQUALIFIED
Julie P RulapaughItalyStephen Shaw RENEWAL
David X SchemmerItalyAmy Elsner UNQUALIFIED
Mayumi V DarakjyGermanyElwin Sharvill NEW
Jefferson K BowleyArgentinaAnna Fali UNQUALIFIED
Morrow L GillianIndiaAsiya Javayant UNQUALIFIED
Arvin W NickaGermanyAnna Fali RENEWAL
Stacey L PaprockiRussiaAsiya Javayant UNQUALIFIED
Murillo A CaldareraGermanyAmy Elsner QUALIFIED
Isabel W ButtIndiaBernardo Dominic QUALIFIED
Sinclair F GillianArgentinaXuxue Feng NEW
Rodrigues P MacleadJapanStephen Shaw PROPOSAL
Aika C FlosiAustraliaIvan Magalhaes NEGOTIATION
Clifford P SchemmerUnited KingdomAsiya Javayant UNQUALIFIED
Francesco F BriddickIndiaIoni Bowcher RENEWAL
Maria V RimIndiaElwin Sharvill NEW
Morrow P GarufiBrazilAmy Elsner PROPOSAL
Claire V CaudyGermanyXuxue Feng RENEWAL
Smith P InouyeUnited KingdomAnna Fali UNQUALIFIED
Jeanfrancois L InouyeGermanyElwin Sharvill NEGOTIATION
Smith T BologniaItalyOnyama Limba NEGOTIATION
Smith R BriddickAustraliaBernardo Dominic QUALIFIED
Maria P OldroydFranceElwin Sharvill PROPOSAL
Jones C AmigonCanadaStephen Shaw RENEWAL
Rodrigues Q CaudyRussiaAmy Elsner QUALIFIED
Mujtaba T DoeItalyXuxue Feng NEGOTIATION
Ivar U CampainArgentinaStephen Shaw PROPOSAL
Kadeem H FerenczUnited KingdomAnna Fali QUALIFIED
Darci U OldroydJapanIvan Magalhaes RENEWAL
Maria X SlusarskiFranceElwin Sharvill NEGOTIATION
Adams G PaprockiSpainIvan Magalhaes NEGOTIATION
Julie J DoeGermanyAmy Elsner RENEWAL
Horizontal
NameCountryRepresentativeStatus
Alejandro C MaletJapanBernardo Dominic NEGOTIATION
Alejandro Z GillianGermanyAnna Fali RENEWAL
Alejandro I SergiFranceOnyama Limba RENEWAL
Jennifer J KolmetzBrazilIoni Bowcher UNQUALIFIED
Cody Y MaletSpainBernardo Dominic PROPOSAL
Julie V IturbideIndiaBernardo Dominic RENEWAL
Izzy A CaldareraArgentinaStephen Shaw UNQUALIFIED
Morrow V RutaRussiaBernardo Dominic UNQUALIFIED
Chavez N AmigonBrazilOnyama Limba UNQUALIFIED
Claire N FerenczBrazilIvan Magalhaes UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aika C FerenczJapan2024-04-14Chapman, Ross E Esq PROPOSAL9Bernardo Dominic
1001Jones N GauchoIndia2024-04-26Chapman, Ross E Esq NEGOTIATION21Bernardo Dominic
1002Juan Z CaldareraArgentina2024-04-18Feltz Printing Service RENEWAL42Onyama Limba
1003Claire J DarakjyFrance2024-05-07Rousseaux, Michael Esq UNQUALIFIED27Stephen Shaw
1004Ashley A NickaRussia2024-04-13Benton, John B Jr RENEWAL90Asiya Javayant
1005Ivar D MarrierAustralia2024-04-15Commercial Press NEGOTIATION31Asiya Javayant
1006Cody L FerenczJapan2024-04-30Rousseaux, Michael Esq NEGOTIATION97Bernardo Dominic
1007Maria X InouyeBrazil2024-04-10Chanay, Jeffrey A Esq NEGOTIATION3Ioni Bowcher
1008James G MaletJapan2024-04-15Truhlar And Truhlar Attys NEW77Onyama Limba
1009Clifford V BriddickUnited Kingdom2024-04-15Rangoni Of Florence RENEWAL0Ivan Magalhaes
1010Ivar L RulapaughItaly2024-04-12Feltz Printing Service QUALIFIED3Elwin Sharvill
1011Munro K RulapaughItaly2024-04-18Dorl, James J Esq QUALIFIED49Ioni Bowcher
1012Rodrigues H AmigonFrance2024-04-22Morlong Associates NEGOTIATION82Elwin Sharvill
1013Faith A SaylorsGermany2024-04-14Rangoni Of Florence QUALIFIED8Bernardo Dominic
1014Chavez H MorascaUnited Kingdom2024-04-08Feltz Printing Service RENEWAL79Xuxue Feng
1015Emily M SaylorsUnited Kingdom2024-05-06Chanay, Jeffrey A Esq UNQUALIFIED73Elwin Sharvill
1016Silvio C PoquetteArgentina2024-04-11Feiner Bros NEW64Ioni Bowcher
1017Sinclair S FerenczArgentina2024-04-16Printing Dimensions PROPOSAL51Elwin Sharvill
1018Arvin T MarrierUnited Kingdom2024-04-30Rousseaux, Michael Esq NEW10Xuxue Feng
1019Nicolas D DilliardFrance2024-04-24Dorl, James J Esq NEW4Elwin Sharvill
1020David W OstroskyIndia2024-04-14Benton, John B Jr PROPOSAL78Asiya Javayant
1021Misaki O GauchoUnited Kingdom2024-04-08Chanay, Jeffrey A Esq UNQUALIFIED21Ivan Magalhaes
1022Tony A SergiUnited Kingdom2024-04-29Rangoni Of Florence PROPOSAL48Xuxue Feng
1023Stacey F StensethFrance2024-05-05Truhlar And Truhlar Attys RENEWAL31Anna Fali
1024Murillo R GlickRussia2024-05-03Commercial Press QUALIFIED92Asiya Javayant
1025Deepesh E DoeCanada2024-04-10Truhlar And Truhlar Attys PROPOSAL68Onyama Limba
1026Costa B RutaRussia2024-04-15King, Christopher A Esq UNQUALIFIED83Bernardo Dominic
1027Murillo H GlickCanada2024-05-06Chemel, James L Cpa NEW58Anna Fali
1028Misaki Y SaylorsCanada2024-04-27Rangoni Of Florence UNQUALIFIED45Ivan Magalhaes
1029Adams A DilliardFrance2024-04-08Rousseaux, Michael Esq NEGOTIATION60Asiya Javayant
1030Mayumi O StockhamUnited Kingdom2024-04-18Rangoni Of Florence NEW24Xuxue Feng
1031Darci N KuskoGermany2024-05-02Morlong Associates PROPOSAL35Ioni Bowcher
1032Isabel T WhobreyUnited Kingdom2024-04-20Feltz Printing Service PROPOSAL70Bernardo Dominic
1033Emily V BowleySpain2024-04-15Rousseaux, Michael Esq UNQUALIFIED65Anna Fali
1034Stacey Q ButtAustralia2024-04-28Truhlar And Truhlar Attys PROPOSAL30Stephen Shaw
1035Clifford O GarufiAustralia2024-04-09Dorl, James J Esq PROPOSAL84Ivan Magalhaes
1036Sinclair X StensethCanada2024-04-29Benton, John B Jr PROPOSAL85Ivan Magalhaes
1037Murillo T MaletAustralia2024-04-29Feiner Bros RENEWAL5Xuxue Feng
1038Wickens E PoquetteJapan2024-04-26Commercial Press NEGOTIATION10Onyama Limba
1039Sinclair C CaudyArgentina2024-04-16Rousseaux, Michael Esq UNQUALIFIED7Ivan Magalhaes
1040Isabel X PaprockiRussia2024-04-13Morlong Associates NEW28Elwin Sharvill
1041Juan F MaletSpain2024-04-13Morlong Associates PROPOSAL5Anna Fali
1042Morrow N PaprockiRussia2024-04-21Chapman, Ross E Esq NEW95Onyama Limba
1043Stacey F GillianAustralia2024-04-18Dorl, James J Esq UNQUALIFIED80Amy Elsner
1044Francesco G MaletIndia2024-04-24Benton, John B Jr UNQUALIFIED67Onyama Limba
1045Arvin Y KolmetzSpain2024-04-27Dorl, James J Esq UNQUALIFIED34Anna Fali
1046Jeanfrancois D ButtArgentina2024-04-24Rangoni Of Florence NEW47Asiya Javayant
1047Wickens F PoquetteGermany2024-05-03Truhlar And Truhlar Attys NEGOTIATION9Bernardo Dominic
1048Mayumi Z MaletBrazil2024-04-18King, Christopher A Esq NEW17Xuxue Feng
1049Maria C MaletSpain2024-05-04Truhlar And Truhlar Attys QUALIFIED83Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Costa X GauchoRussiaAmy Elsner RENEWAL
Nicolas A PerinArgentinaOnyama Limba NEGOTIATION
Johnson X MaletGermanyIoni Bowcher PROPOSAL
Tony D CaldareraAustraliaAnna Fali NEW
Morrow O MaletRussiaXuxue Feng UNQUALIFIED
Rodrigues D PerinJapanIvan Magalhaes UNQUALIFIED
Jeanfrancois E DarakjyRussiaElwin Sharvill NEW
Mayumi C ButtRussiaStephen Shaw RENEWAL
Antonio N ShinkoUnited KingdomOnyama Limba QUALIFIED
Silvio A DarakjyIndiaAnna Fali RENEWAL
Nicolas N GlickAustraliaBernardo Dominic NEW
Greenwood W MacleadAustraliaBernardo Dominic PROPOSAL
Adams J SergiJapanElwin Sharvill PROPOSAL
James Q TollnerSpainXuxue Feng QUALIFIED
Mujtaba L SergiGermanyStephen Shaw NEGOTIATION
Leon K ButtJapanAsiya Javayant PROPOSAL
Jennifer W BriddickIndiaIvan Magalhaes UNQUALIFIED
Isabel U NickaUnited KingdomBernardo Dominic NEGOTIATION
Adams E FerenczSpainXuxue Feng PROPOSAL
Isabel Q ButtSpainElwin Sharvill PROPOSAL
Jones S SchemmerSpainAmy Elsner NEW
Munro Y FollerUnited KingdomAmy Elsner NEW
Ashley R PaprockiGermanyStephen Shaw UNQUALIFIED
Juan F BowleyJapanBernardo Dominic NEW
Chavez J CaudyIndiaElwin Sharvill RENEWAL
Morrow Q FigeroaCanadaAsiya Javayant NEGOTIATION
Cody Z FollerBrazilXuxue Feng QUALIFIED
Mayumi F MacleadArgentinaIvan Magalhaes UNQUALIFIED
Arvin I IturbideGermanyIoni Bowcher NEGOTIATION
Ivar F RutaAustraliaStephen Shaw RENEWAL
Munro H WhobreyArgentinaAsiya Javayant PROPOSAL
Julie C CampainCanadaStephen Shaw QUALIFIED
Cody J MaletCanadaBernardo Dominic NEW
Chavez J StensethArgentinaAsiya Javayant NEW
Isabel E PoquetteBrazilBernardo Dominic UNQUALIFIED
Ashley A GauchoRussiaAsiya Javayant RENEWAL
Murillo L RutaGermanyStephen Shaw NEGOTIATION
Aruna L GauchoRussiaIvan Magalhaes NEW
Maisha Y NestleRussiaAmy Elsner NEGOTIATION
Aika Y MacleadFranceIoni Bowcher RENEWAL
Wickens C IturbideSpainIvan Magalhaes NEW
Rodrigues E WaycottBrazilStephen Shaw PROPOSAL
Antonio C BriddickItalyAmy Elsner PROPOSAL
Jefferson H RimItalyIoni Bowcher QUALIFIED
Salvatore Q GauchoBrazilIoni Bowcher QUALIFIED
Juan E RutaGermanyIoni Bowcher QUALIFIED
Tony X BologniaGermanyAmy Elsner PROPOSAL
Maisha T PaprockiJapanOnyama Limba NEGOTIATION
Clifford T NestleItalyAmy Elsner RENEWAL
Jeanfrancois L KolmetzAustraliaIvan Magalhaes UNQUALIFIED
Frozen Columns
Name
Cody F Schemmer
Mayumi E Flosi
Jennifer I Albares
Misaki T Dilliard
Silvio T Oldroyd
Alejandro X Inouye
Murillo S Marrier
Greenwood S Maclead
Cody T Figeroa
Aika G Darakjy
Smith M Tollner
Salvatore N Malet
Stacey L Vocelka
David U Wieser
Munro Z Malet
Ricardo J Oldroyd
Stacey C Butt
Jennifer N Whobrey
Chavez U Garufi
Antonio X Gaucho
Leja J Bowley
Maisha M Chui
Juan N Figeroa
Nicolas Q Dilliard
Murillo E Kusko
Aditya Y Perin
Munro S Morasca
Silvio O Briddick
Izzy S Amigon
Alejandro K Flosi
Octavia W Foller
David R Doe
Jeanfrancois K Kolmetz
Claire A Bowley
Ashley B Malet
Tony I Slusarski
Nicolas E Doe
Jones Y Iturbide
Rodrigues T Briddick
Wickens S Bowley
Maisha H Doe
Jefferson Z Rim
Juan G Garufi
Rodrigues C Slusarski
Rodrigues Y Nicka
David O Albares
Julie E Chui
Claire E Ruta
Faith F Bowley
Kadeem R Nestle
IdCountryDate
1000Brazil2024-04-13
1001Russia2024-05-01
1002India2024-04-15
1003Brazil2024-05-06
1004Australia2024-05-07
1005Italy2024-04-23
1006Spain2024-05-02
1007India2024-04-17
1008Canada2024-05-07
1009Russia2024-04-28
1010Argentina2024-04-13
1011Canada2024-04-20
1012Italy2024-04-10
1013Brazil2024-04-18
1014Russia2024-05-06
1015Russia2024-04-28
1016Brazil2024-04-25
1017Canada2024-05-03
1018Japan2024-04-29
1019Spain2024-04-15
1020India2024-04-25
1021Canada2024-04-22
1022Canada2024-05-03
1023Japan2024-04-26
1024Italy2024-05-06
1025India2024-05-01
1026India2024-04-17
1027United Kingdom2024-04-21
1028Argentina2024-05-02
1029Argentina2024-04-17
1030Argentina2024-05-07
1031United Kingdom2024-04-29
1032Canada2024-05-01
1033India2024-04-08
1034Spain2024-04-16
1035Russia2024-04-29
1036Canada2024-04-24
1037Germany2024-04-15
1038Japan2024-04-26
1039Australia2024-04-09
1040Australia2024-04-12
1041Japan2024-04-24
1042France2024-05-01
1043Brazil2024-04-12
1044Argentina2024-04-30
1045Australia2024-04-13
1046Spain2024-04-18
1047Australia2024-04-10
1048Japan2024-04-21
1049Russia2024-04-26

On-Demand Data

NameIdCountryDate
Tony D Whobrey1000Russia2024-04-13
Morrow Y Vocelka1001Russia2024-04-27
Aika V Morasca1002France2024-05-03
Aditya M Rulapaugh1003United Kingdom2024-04-30
Faith L Nestle1004United Kingdom2024-04-16
Smith B Glick1005France2024-05-06
Clifford P Iturbide1006Russia2024-04-17
Ricardo U Nestle1007Argentina2024-05-06
Izzy F Darakjy1008Canada2024-05-05
Deepesh Q Oldroyd1009Brazil2024-04-08
Sinclair K Caldarera1010Russia2024-04-11
Isabel Z Rim1011Japan2024-05-03
Stacey S Saylors1012Germany2024-05-01
Ashley N Ruta1013Russia2024-04-30
Maisha D Caudy1014Italy2024-04-19
Munro L Oldroyd1015France2024-04-11
Kaitlin Z Iturbide1016Japan2024-04-26
Ivar D Tollner1017Spain2024-04-26
Greenwood F Wieser1018Argentina2024-05-03
Stacey Z Malet1019Canada2024-04-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Sinclair Z OstroskyFranceElwin Sharvill NEGOTIATION
Tony C RulapaughIndiaBernardo Dominic RENEWAL
Jennifer X CaldareraArgentinaBernardo Dominic RENEWAL
Rodrigues Z ChuiGermanyBernardo Dominic PROPOSAL
Emily B PerinFranceXuxue Feng RENEWAL
Kadeem A DoeItalyStephen Shaw NEGOTIATION
Jennifer F GarufiBrazilXuxue Feng RENEWAL
Johnson R GauchoCanadaStephen Shaw UNQUALIFIED
Adams C SchemmerBrazilIoni Bowcher NEGOTIATION
Antonio D WaycottGermanyBernardo Dominic RENEWAL
Jennifer S TollnerGermanyElwin Sharvill RENEWAL
James B VenereItalyBernardo Dominic PROPOSAL
Ivar N GauchoSpainBernardo Dominic UNQUALIFIED
Rodrigues A StockhamIndiaOnyama Limba QUALIFIED
Tony L ShinkoSpainXuxue Feng RENEWAL
Silvio K StensethCanadaElwin Sharvill NEGOTIATION
Emily P SlusarskiIndiaElwin Sharvill UNQUALIFIED
Smith L RulapaughItalyElwin Sharvill PROPOSAL
Deepesh N KolmetzUnited KingdomXuxue Feng PROPOSAL
James J MorascaItalyAmy Elsner QUALIFIED
Misaki S BriddickItalyAnna Fali PROPOSAL
Jefferson Q MorascaSpainAnna Fali RENEWAL
Izzy L GauchoCanadaXuxue Feng NEW
Maisha J IturbideJapanAsiya Javayant PROPOSAL
Rodrigues H GillianUnited KingdomStephen Shaw NEGOTIATION
Silvio H SaylorsSpainIoni Bowcher UNQUALIFIED
James A FollerAustraliaAnna Fali UNQUALIFIED
Alejandro G VocelkaItalyIoni Bowcher UNQUALIFIED
Leon H BriddickCanadaAsiya Javayant NEGOTIATION
Leja N AlbaresAustraliaStephen Shaw UNQUALIFIED
Adams K RimAustraliaOnyama Limba RENEWAL
Tony S SchemmerBrazilIvan Magalhaes UNQUALIFIED
Faith Q MorascaFranceAsiya Javayant PROPOSAL
Julie R SaylorsRussiaAsiya Javayant NEGOTIATION
Alejandro M ShinkoBrazilOnyama Limba NEGOTIATION
Maria D MaletBrazilBernardo Dominic NEW
Maria P NestleIndiaXuxue Feng PROPOSAL
Arvin A PoquetteAustraliaAsiya Javayant NEW
Tony P StockhamFranceIvan Magalhaes RENEWAL
Smith M KuskoFranceIoni Bowcher 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>