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
Jennifer Q RulapaughJapanOnyama Limba UNQUALIFIED
Antonio A BriddickBrazilIvan Magalhaes RENEWAL
Rodrigues F KolmetzUnited KingdomStephen Shaw NEGOTIATION
Maisha C MorascaArgentinaStephen Shaw UNQUALIFIED
Stacey S SergiCanadaOnyama Limba PROPOSAL
Maria B MorascaItalyAsiya Javayant PROPOSAL
Mayumi L RutaSpainIvan Magalhaes NEGOTIATION
Faith K MorascaGermanyElwin Sharvill NEW
Leja I WaycottItalyXuxue Feng UNQUALIFIED
Mayumi L VocelkaBrazilIvan Magalhaes RENEWAL
Rodrigues N SergiJapanXuxue Feng QUALIFIED
Clifford Z AmigonIndiaAsiya Javayant NEW
James U VenereItalyAsiya Javayant UNQUALIFIED
Mayumi U BriddickAustraliaAsiya Javayant UNQUALIFIED
James K StockhamCanadaAsiya Javayant QUALIFIED
Clifford V SergiJapanAnna Fali NEGOTIATION
Kadeem B StockhamBrazilAsiya Javayant NEGOTIATION
Leon A SlusarskiBrazilIvan Magalhaes RENEWAL
Jennifer O PerinUnited KingdomIoni Bowcher PROPOSAL
Mayumi U SergiUnited KingdomAnna Fali RENEWAL
Maisha D VenereUnited KingdomAsiya Javayant PROPOSAL
Aika I WaycottSpainBernardo Dominic NEGOTIATION
Jefferson D OldroydArgentinaElwin Sharvill QUALIFIED
James B RulapaughUnited KingdomXuxue Feng PROPOSAL
Wickens U WieserFranceStephen Shaw PROPOSAL
Jefferson V SchemmerBrazilIvan Magalhaes NEW
Aditya D OstroskyUnited KingdomStephen Shaw UNQUALIFIED
James H GillianSpainAmy Elsner QUALIFIED
Nicolas Z MaletIndiaIoni Bowcher RENEWAL
Smith C PerinIndiaAmy Elsner NEW
Munro V SchemmerJapanOnyama Limba QUALIFIED
Aika K ChuiRussiaAmy Elsner QUALIFIED
James E FlosiItalyAnna Fali UNQUALIFIED
Antonio W WieserBrazilOnyama Limba NEW
Nicolas X DarakjyGermanyAmy Elsner UNQUALIFIED
Octavia Q KuskoItalyXuxue Feng QUALIFIED
Silvio E RutaFranceIoni Bowcher RENEWAL
Antonio G TollnerSpainStephen Shaw RENEWAL
Aruna Y GauchoRussiaAmy Elsner UNQUALIFIED
Julie Q AlbaresArgentinaElwin Sharvill PROPOSAL
Alejandro Z ChuiCanadaAmy Elsner UNQUALIFIED
Mujtaba K RoysterCanadaOnyama Limba NEW
Murillo D WaycottBrazilStephen Shaw QUALIFIED
Mujtaba B WaycottFranceOnyama Limba NEGOTIATION
Jeanfrancois E NickaGermanyIoni Bowcher RENEWAL
Silvio E WaycottSpainAsiya Javayant QUALIFIED
Mayumi G DoeGermanyBernardo Dominic UNQUALIFIED
Claire V SchemmerGermanyOnyama Limba UNQUALIFIED
Cody V GillianIndiaOnyama Limba PROPOSAL
Ricardo T DilliardFranceAmy Elsner PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Costa W SlusarskiUnited KingdomAmy Elsner NEGOTIATION
Mayumi M OstroskyRussiaIvan Magalhaes NEW
Tony X GauchoJapanIoni Bowcher NEGOTIATION
Darci L FigeroaFranceAmy Elsner UNQUALIFIED
Ashley P FlosiItalyAnna Fali QUALIFIED
Francesco D RutaAustraliaStephen Shaw NEW
Johnson H DoeItalyIvan Magalhaes UNQUALIFIED
Chavez Q RoysterCanadaIvan Magalhaes NEW
Deepesh E KuskoGermanyAmy Elsner NEGOTIATION
Aditya P BriddickCanadaOnyama Limba NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Rodrigues Q SchemmerJapan2024-04-21Printing Dimensions NEW76Elwin Sharvill
1001Kadeem O WieserCanada2024-04-16Buckley Miller Wright NEW94Anna Fali
1002Tony B WhobreyUnited Kingdom2024-04-22Rangoni Of Florence RENEWAL8Anna Fali
1003Ashley C DarakjyGermany2024-04-15Chanay, Jeffrey A Esq NEGOTIATION3Anna Fali
1004Munro A WieserItaly2024-04-15Rousseaux, Michael Esq UNQUALIFIED64Xuxue Feng
1005Ricardo T FigeroaRussia2024-04-11Feltz Printing Service NEGOTIATION48Stephen Shaw
1006Francesco B PoquetteBrazil2024-04-05King, Christopher A Esq UNQUALIFIED23Ivan Magalhaes
1007Juan M DilliardSpain2024-04-13Buckley Miller Wright NEGOTIATION28Elwin Sharvill
1008Aditya A AlbaresRussia2024-04-16Dorl, James J Esq RENEWAL76Ioni Bowcher
1009Costa F CampainBrazil2024-03-31Rousseaux, Michael Esq PROPOSAL66Ioni Bowcher
1010Nicolas P ButtJapan2024-03-26Chapman, Ross E Esq UNQUALIFIED35Onyama Limba
1011Izzy U CampainGermany2024-03-28Benton, John B Jr UNQUALIFIED50Xuxue Feng
1012Munro O PerinCanada2024-04-09Buckley Miller Wright NEW61Anna Fali
1013Sinclair I OstroskySpain2024-04-11Chanay, Jeffrey A Esq NEW27Anna Fali
1014Leja T StockhamSpain2024-04-12Chanay, Jeffrey A Esq PROPOSAL84Onyama Limba
1015James M OldroydGermany2024-04-13Buckley Miller Wright RENEWAL17Onyama Limba
1016Smith I PaprockiArgentina2024-04-13Feiner Bros NEGOTIATION25Amy Elsner
1017Johnson Z PoquetteGermany2024-03-31Buckley Miller Wright QUALIFIED60Xuxue Feng
1018Antonio K AmigonCanada2024-04-06King, Christopher A Esq RENEWAL66Elwin Sharvill
1019Arvin R ShinkoItaly2024-04-24Rousseaux, Michael Esq RENEWAL33Ivan Magalhaes
1020Faith L WieserItaly2024-03-30Truhlar And Truhlar Attys PROPOSAL84Xuxue Feng
1021Kaitlin N DilliardIndia2024-04-15Buckley Miller Wright PROPOSAL18Xuxue Feng
1022Jennifer K CampainJapan2024-03-28Feltz Printing Service RENEWAL48Elwin Sharvill
1023Adams S IturbideUnited Kingdom2024-04-15Morlong Associates UNQUALIFIED73Bernardo Dominic
1024Ashley G SergiItaly2024-04-24Rousseaux, Michael Esq QUALIFIED27Elwin Sharvill
1025Alejandro T TollnerCanada2024-04-07Morlong Associates RENEWAL56Xuxue Feng
1026Clifford O BowleyUnited Kingdom2024-04-19Feiner Bros NEW69Asiya Javayant
1027Greenwood G WaycottGermany2024-03-31Chemel, James L Cpa RENEWAL88Asiya Javayant
1028Arvin Y IturbideItaly2024-03-26King, Christopher A Esq RENEWAL50Amy Elsner
1029Aika U CampainJapan2024-04-05Truhlar And Truhlar Attys QUALIFIED86Onyama Limba
1030Emily Z IturbideRussia2024-04-03Chanay, Jeffrey A Esq PROPOSAL2Ioni Bowcher
1031Deepesh U MaletItaly2024-04-12Commercial Press PROPOSAL96Ioni Bowcher
1032Mujtaba P NickaIndia2024-04-11Dorl, James J Esq QUALIFIED99Asiya Javayant
1033Misaki V DilliardBrazil2024-04-13Dorl, James J Esq PROPOSAL50Onyama Limba
1034Arvin Z DoeBrazil2024-04-09Rangoni Of Florence QUALIFIED78Elwin Sharvill
1035Stacey Z RimRussia2024-04-05Chapman, Ross E Esq QUALIFIED67Ivan Magalhaes
1036Adams H RoysterArgentina2024-04-22King, Christopher A Esq NEGOTIATION21Ivan Magalhaes
1037David P CaudyIndia2024-04-01Truhlar And Truhlar Attys PROPOSAL43Bernardo Dominic
1038Jennifer G ShinkoItaly2024-04-06Chanay, Jeffrey A Esq PROPOSAL73Anna Fali
1039Costa V FlosiGermany2024-04-21Dorl, James J Esq PROPOSAL65Amy Elsner
1040Claire P CaldareraIndia2024-04-11Chanay, Jeffrey A Esq UNQUALIFIED94Ioni Bowcher
1041Greenwood Y MaletSpain2024-03-29Chemel, James L Cpa NEGOTIATION10Ioni Bowcher
1042Aruna Q KuskoArgentina2024-03-29Truhlar And Truhlar Attys RENEWAL3Ioni Bowcher
1043Clifford H DarakjyUnited Kingdom2024-04-15Chemel, James L Cpa PROPOSAL61Asiya Javayant
1044Faith H BriddickIndia2024-04-12Dorl, James J Esq RENEWAL92Bernardo Dominic
1045Darci O ChuiRussia2024-04-24Feiner Bros RENEWAL33Bernardo Dominic
1046Johnson Y VocelkaJapan2024-04-08Rangoni Of Florence RENEWAL6Ivan Magalhaes
1047Murillo G BologniaIndia2024-04-05Buckley Miller Wright PROPOSAL55Ivan Magalhaes
1048Arvin U SergiItaly2024-03-30Chanay, Jeffrey A Esq QUALIFIED4Bernardo Dominic
1049Johnson Z DoeAustralia2024-04-01Dorl, James J Esq PROPOSAL80Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Johnson B CampainItalyIvan Magalhaes QUALIFIED
Misaki U GlickUnited KingdomIoni Bowcher PROPOSAL
Kadeem U OstroskyGermanyAsiya Javayant QUALIFIED
Kadeem X SergiArgentinaElwin Sharvill NEW
Stacey U VocelkaArgentinaStephen Shaw RENEWAL
Aditya G GarufiItalyOnyama Limba UNQUALIFIED
Juan Y InouyeUnited KingdomAnna Fali PROPOSAL
Ivar O ShinkoBrazilIvan Magalhaes PROPOSAL
Clifford E DilliardItalyElwin Sharvill QUALIFIED
Salvatore O GillianBrazilStephen Shaw NEGOTIATION
Juan E GillianGermanyXuxue Feng RENEWAL
Jefferson B VocelkaFranceBernardo Dominic QUALIFIED
Costa F ButtItalyStephen Shaw UNQUALIFIED
Claire G FerenczIndiaBernardo Dominic NEGOTIATION
Clifford T MacleadCanadaIoni Bowcher UNQUALIFIED
Emily O ShinkoIndiaStephen Shaw NEGOTIATION
Arvin I SlusarskiGermanyOnyama Limba QUALIFIED
Chavez F RoysterArgentinaXuxue Feng QUALIFIED
Darci H ButtIndiaStephen Shaw NEW
Claire S VenereFranceIvan Magalhaes QUALIFIED
Chavez K ButtRussiaElwin Sharvill UNQUALIFIED
Jennifer O FigeroaIndiaAsiya Javayant NEW
Tony V NickaBrazilIvan Magalhaes QUALIFIED
Mujtaba M DarakjySpainElwin Sharvill RENEWAL
Leon P DilliardAustraliaElwin Sharvill PROPOSAL
Stacey O ButtBrazilOnyama Limba NEW
Ashley F AlbaresItalyIvan Magalhaes NEW
Kaitlin P SaylorsRussiaAnna Fali QUALIFIED
Julie Y BologniaJapanIvan Magalhaes NEGOTIATION
James L CampainFranceAsiya Javayant UNQUALIFIED
Mayumi U FollerItalyOnyama Limba NEGOTIATION
Jones U PoquetteGermanyAnna Fali PROPOSAL
Mujtaba I KolmetzAustraliaBernardo Dominic UNQUALIFIED
Mujtaba O IturbideBrazilStephen Shaw NEW
Greenwood D OstroskyItalyStephen Shaw PROPOSAL
Costa T BologniaGermanyAsiya Javayant NEGOTIATION
Clifford X NickaAustraliaIvan Magalhaes NEW
Francesco Q DarakjyAustraliaAmy Elsner QUALIFIED
Leja Z ButtAustraliaAmy Elsner NEW
Chavez O NestleCanadaAnna Fali NEW
Ivar Z PoquetteFranceStephen Shaw QUALIFIED
Ricardo B KuskoIndiaBernardo Dominic NEGOTIATION
Claire M CaudyUnited KingdomAsiya Javayant NEW
Emily R RulapaughFranceStephen Shaw UNQUALIFIED
Mujtaba F NickaCanadaElwin Sharvill NEGOTIATION
Deepesh G ChuiFranceIoni Bowcher QUALIFIED
David X OstroskyCanadaBernardo Dominic NEW
Leon C PerinUnited KingdomElwin Sharvill RENEWAL
Maisha M CaudyFranceStephen Shaw NEGOTIATION
Smith L PerinFranceIvan Magalhaes PROPOSAL
Frozen Columns
Name
Silvio L Garufi
Kaitlin F Whobrey
Silvio Q Wieser
Kadeem V Foller
Leon Z Darakjy
Murillo B Albares
Juan U Rulapaugh
Kaitlin Y Kusko
Alejandro D Glick
Clifford D Sergi
Aditya V Bowley
Kadeem Y Glick
Claire O Kusko
Ivar V Darakjy
James V Doe
Ricardo R Malet
Kadeem Y Malet
Claire D Paprocki
Isabel A Flosi
Jennifer H Marrier
Leja B Kolmetz
Kaitlin D Gillian
Rodrigues F Waycott
Arvin L Maclead
David D Garufi
Misaki J Kusko
Izzy T Perin
Aika N Sergi
Misaki Q Malet
Misaki D Amigon
Jefferson Q Vocelka
Emily A Morasca
James J Slusarski
Munro V Iturbide
Maisha Z Maclead
Salvatore R Whobrey
Ashley V Caudy
Leja I Royster
James I Bolognia
Leja C Paprocki
Julie D Rulapaugh
Mujtaba O Vocelka
James Y Kolmetz
Costa H Bowley
Ivar W Sergi
Munro L Malet
Sinclair J Dilliard
Mujtaba Y Shinko
David G Malet
Julie N Poquette
IdCountryDate
1000France2024-04-05
1001France2024-04-23
1002Brazil2024-04-20
1003Russia2024-04-22
1004Italy2024-03-30
1005Argentina2024-04-10
1006Japan2024-03-29
1007Germany2024-04-20
1008Australia2024-04-16
1009India2024-04-16
1010Australia2024-04-04
1011Spain2024-04-16
1012United Kingdom2024-04-17
1013Russia2024-04-01
1014India2024-04-12
1015India2024-04-16
1016Russia2024-04-21
1017Argentina2024-04-16
1018Russia2024-03-28
1019Argentina2024-04-11
1020Argentina2024-04-03
1021Australia2024-04-01
1022Canada2024-04-06
1023Germany2024-04-01
1024France2024-04-14
1025Japan2024-04-11
1026India2024-03-28
1027India2024-03-30
1028Russia2024-04-01
1029France2024-04-13
1030Russia2024-03-29
1031India2024-04-18
1032France2024-04-13
1033United Kingdom2024-04-05
1034India2024-03-27
1035United Kingdom2024-04-21
1036France2024-03-27
1037Australia2024-04-09
1038Spain2024-04-14
1039Brazil2024-03-28
1040Russia2024-03-28
1041Russia2024-04-02
1042Australia2024-04-10
1043Spain2024-03-29
1044Germany2024-04-22
1045Argentina2024-04-10
1046Argentina2024-04-14
1047Canada2024-03-29
1048Russia2024-03-31
1049France2024-04-11

On-Demand Data

NameIdCountryDate
Silvio Y Albares1000United Kingdom2024-04-12
Ashley N Sergi1001Russia2024-04-16
Kaitlin N Caldarera1002Brazil2024-04-19
Izzy H Ruta1003India2024-04-13
Julie Q Gaucho1004Australia2024-03-27
Salvatore Q Gillian1005France2024-03-30
Stacey E Bolognia1006Argentina2024-03-27
Maisha W Vocelka1007France2024-04-23
Mayumi Y Shinko1008Spain2024-04-08
Sinclair L Gaucho1009India2024-04-19
Emily Y Ferencz1010Russia2024-03-28
Mujtaba A Sergi1011Spain2024-04-05
Salvatore O Iturbide1012France2024-04-09
Jones G Poquette1013India2024-04-10
Salvatore Z Schemmer1014Australia2024-04-13
Izzy E Caudy1015United Kingdom2024-04-23
Alejandro D Caldarera1016Australia2024-04-14
Juan L Glick1017France2024-04-21
David B Glick1018Germany2024-04-16
Costa Z Stockham1019Brazil2024-04-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aika S BowleyUnited KingdomBernardo Dominic RENEWAL
Maria Y DarakjyJapanOnyama Limba RENEWAL
Kaitlin A OstroskyCanadaOnyama Limba NEW
Ivar S SlusarskiFranceOnyama Limba QUALIFIED
Julie R GarufiRussiaAsiya Javayant QUALIFIED
Maria H KolmetzGermanyAsiya Javayant RENEWAL
Leon H PaprockiJapanAsiya Javayant NEGOTIATION
Octavia I BologniaFranceAsiya Javayant QUALIFIED
Deepesh C RoysterUnited KingdomOnyama Limba RENEWAL
Rodrigues M CampainBrazilAmy Elsner UNQUALIFIED
Mujtaba P BowleyItalyOnyama Limba RENEWAL
Francesco B StockhamArgentinaAmy Elsner UNQUALIFIED
Emily E CaldareraBrazilBernardo Dominic QUALIFIED
Isabel P ChuiRussiaBernardo Dominic NEW
Munro C PoquetteIndiaXuxue Feng NEW
Aika J RimJapanBernardo Dominic NEW
Kadeem J AmigonUnited KingdomIvan Magalhaes UNQUALIFIED
Wickens J GarufiAustraliaIvan Magalhaes NEW
Rodrigues T MaletJapanElwin Sharvill UNQUALIFIED
Faith S RutaUnited KingdomIoni Bowcher NEW
Emily P FlosiGermanyAmy Elsner UNQUALIFIED
Darci L DilliardRussiaAnna Fali RENEWAL
Kaitlin H VocelkaRussiaElwin Sharvill NEGOTIATION
Murillo E KuskoRussiaAmy Elsner NEW
Kadeem U GarufiArgentinaElwin Sharvill PROPOSAL
Morrow H DoeJapanAsiya Javayant QUALIFIED
Sinclair U PerinRussiaIvan Magalhaes RENEWAL
Silvio O IturbideRussiaAmy Elsner NEGOTIATION
Ricardo O OstroskyBrazilAsiya Javayant NEGOTIATION
Antonio W DilliardBrazilElwin Sharvill NEGOTIATION
Deepesh G CampainCanadaXuxue Feng RENEWAL
Ivar Z TollnerUnited KingdomIvan Magalhaes NEGOTIATION
Jeanfrancois F PaprockiRussiaXuxue Feng RENEWAL
Jeanfrancois V GlickJapanOnyama Limba NEW
Misaki E VocelkaSpainOnyama Limba NEW
Stacey J ChuiGermanyElwin Sharvill UNQUALIFIED
Jeanfrancois K RimUnited KingdomOnyama Limba RENEWAL
Aika B KolmetzGermanyAsiya Javayant NEW
Ivar D RimIndiaAmy Elsner RENEWAL
Alejandro H ChuiItalyIvan Magalhaes PROPOSAL

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