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
Deepesh D DoeSpainStephen Shaw PROPOSAL
Costa F GarufiGermanyAsiya Javayant NEW
Jefferson W GarufiItalyElwin Sharvill NEGOTIATION
Jennifer U GarufiIndiaOnyama Limba QUALIFIED
Misaki T NestleItalyXuxue Feng RENEWAL
Jeanfrancois G ShinkoGermanyElwin Sharvill RENEWAL
Leja W AmigonCanadaXuxue Feng RENEWAL
Jones E WaycottItalyOnyama Limba RENEWAL
Misaki B NestleArgentinaOnyama Limba PROPOSAL
Darci X RutaSpainIvan Magalhaes UNQUALIFIED
Jeanfrancois V InouyeSpainIoni Bowcher RENEWAL
Kadeem W GillianCanadaIvan Magalhaes PROPOSAL
Munro T MaletItalyAnna Fali PROPOSAL
Aika T WaycottGermanyOnyama Limba RENEWAL
Ashley H InouyeSpainAnna Fali RENEWAL
Alejandro K BologniaGermanyXuxue Feng NEW
Jeanfrancois T BriddickSpainXuxue Feng NEW
Clifford J GauchoJapanIoni Bowcher NEW
Aruna U ShinkoIndiaBernardo Dominic RENEWAL
Arvin T CampainFranceBernardo Dominic QUALIFIED
Leja J PerinUnited KingdomAnna Fali UNQUALIFIED
Ashley V ChuiCanadaIoni Bowcher PROPOSAL
Kadeem P RoysterBrazilAnna Fali UNQUALIFIED
Misaki Y ChuiRussiaStephen Shaw PROPOSAL
Ashley W OstroskyIndiaIvan Magalhaes UNQUALIFIED
Deepesh B FigeroaAustraliaIvan Magalhaes PROPOSAL
Adams R OldroydFranceXuxue Feng NEGOTIATION
Francesco F VocelkaIndiaIoni Bowcher NEGOTIATION
Arvin W MacleadGermanyXuxue Feng NEGOTIATION
Chavez I FollerCanadaOnyama Limba NEW
Emily K StockhamRussiaAnna Fali NEW
Octavia D WieserGermanyIvan Magalhaes PROPOSAL
Ivar W StockhamBrazilStephen Shaw NEGOTIATION
Rodrigues Q DoeArgentinaStephen Shaw PROPOSAL
Ivar P WhobreyRussiaBernardo Dominic RENEWAL
Stacey P CaudyGermanyStephen Shaw NEGOTIATION
Adams F MacleadCanadaXuxue Feng RENEWAL
Tony C WaycottFranceBernardo Dominic NEGOTIATION
Salvatore N RutaJapanIvan Magalhaes PROPOSAL
Mayumi G CampainSpainStephen Shaw QUALIFIED
Aditya F AmigonArgentinaStephen Shaw QUALIFIED
Ricardo V AmigonSpainBernardo Dominic UNQUALIFIED
David Z NickaFranceElwin Sharvill NEW
Cody E ButtItalyAsiya Javayant UNQUALIFIED
Kaitlin R DoeUnited KingdomStephen Shaw NEGOTIATION
Jefferson W ShinkoAustraliaXuxue Feng QUALIFIED
Jeanfrancois Y SchemmerSpainElwin Sharvill UNQUALIFIED
Mujtaba A FlosiIndiaAnna Fali RENEWAL
Aditya B BriddickArgentinaOnyama Limba QUALIFIED
Aika W MaletFranceBernardo Dominic QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Tony B OstroskyRussiaIvan Magalhaes NEGOTIATION
Arvin Q FlosiArgentinaElwin Sharvill NEGOTIATION
Salvatore R MaletAustraliaAsiya Javayant UNQUALIFIED
Kadeem U RoysterJapanOnyama Limba NEW
Tony Z FlosiAustraliaStephen Shaw NEGOTIATION
Jennifer S CampainRussiaXuxue Feng NEGOTIATION
Silvio Z FerenczItalyOnyama Limba NEW
Izzy N KuskoGermanyAsiya Javayant UNQUALIFIED
Munro P MaletFranceIvan Magalhaes NEGOTIATION
Leon C MaletItalyIvan Magalhaes NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Izzy N SlusarskiItaly2024-05-02Truhlar And Truhlar Attys RENEWAL95Bernardo Dominic
1001Ashley I WieserAustralia2024-05-05Benton, John B Jr NEW71Amy Elsner
1002Wickens H WhobreyIndia2024-04-26King, Christopher A Esq QUALIFIED78Onyama Limba
1003Arvin H PoquetteCanada2024-04-29Rousseaux, Michael Esq NEW7Stephen Shaw
1004Jennifer E NestleArgentina2024-04-28Chapman, Ross E Esq NEW36Amy Elsner
1005Cody O OldroydGermany2024-04-22Commercial Press PROPOSAL88Ivan Magalhaes
1006Murillo Q FigeroaAustralia2024-04-25Rangoni Of Florence RENEWAL48Onyama Limba
1007Morrow L BologniaGermany2024-04-22Chanay, Jeffrey A Esq PROPOSAL87Xuxue Feng
1008Clifford Y KolmetzRussia2024-04-30Rangoni Of Florence RENEWAL87Ioni Bowcher
1009Mujtaba G FigeroaCanada2024-04-19Morlong Associates RENEWAL93Ivan Magalhaes
1010Clifford P FlosiJapan2024-05-09Feiner Bros UNQUALIFIED26Xuxue Feng
1011Juan X IturbideRussia2024-04-18Printing Dimensions PROPOSAL12Elwin Sharvill
1012Claire U SchemmerGermany2024-05-01Rousseaux, Michael Esq NEW75Ioni Bowcher
1013Isabel X NickaRussia2024-04-15Commercial Press NEGOTIATION45Ioni Bowcher
1014Aruna D InouyeRussia2024-04-22Printing Dimensions UNQUALIFIED4Anna Fali
1015Mayumi E RoysterGermany2024-04-27Chapman, Ross E Esq RENEWAL66Anna Fali
1016Smith N StockhamIndia2024-04-23Chemel, James L Cpa UNQUALIFIED2Ioni Bowcher
1017Jennifer K AmigonUnited Kingdom2024-04-30Commercial Press UNQUALIFIED53Ivan Magalhaes
1018Claire R BowleyIndia2024-05-09Buckley Miller Wright NEGOTIATION23Bernardo Dominic
1019Antonio G NestleItaly2024-04-11Chanay, Jeffrey A Esq UNQUALIFIED45Ioni Bowcher
1020Greenwood D StockhamIndia2024-04-13Chanay, Jeffrey A Esq PROPOSAL45Anna Fali
1021Julie S SergiRussia2024-05-01Feiner Bros PROPOSAL59Asiya Javayant
1022Wickens M BologniaFrance2024-04-20Feiner Bros NEW24Asiya Javayant
1023Maisha C AlbaresBrazil2024-04-13Rousseaux, Michael Esq PROPOSAL74Elwin Sharvill
1024Nicolas K GillianItaly2024-05-05Feiner Bros UNQUALIFIED65Elwin Sharvill
1025Ashley W WaycottRussia2024-04-24Rousseaux, Michael Esq NEGOTIATION26Ioni Bowcher
1026Misaki K InouyeSpain2024-05-03Truhlar And Truhlar Attys NEGOTIATION48Amy Elsner
1027Jennifer B RulapaughFrance2024-04-29Printing Dimensions NEGOTIATION47Ioni Bowcher
1028Leon T IturbideBrazil2024-04-19Truhlar And Truhlar Attys NEGOTIATION49Elwin Sharvill
1029Octavia E MorascaUnited Kingdom2024-05-10Benton, John B Jr PROPOSAL81Onyama Limba
1030Silvio U KuskoCanada2024-04-17Rousseaux, Michael Esq NEGOTIATION74Ioni Bowcher
1031Kaitlin X GauchoAustralia2024-04-17Rousseaux, Michael Esq RENEWAL18Ioni Bowcher
1032Leja U BriddickIndia2024-04-12Morlong Associates RENEWAL88Amy Elsner
1033Jones Y PoquetteItaly2024-05-06Morlong Associates NEGOTIATION6Bernardo Dominic
1034Emily F RulapaughItaly2024-04-11Feltz Printing Service RENEWAL94Amy Elsner
1035Francesco E BriddickSpain2024-05-07Commercial Press RENEWAL31Stephen Shaw
1036Murillo L ChuiUnited Kingdom2024-04-25Feltz Printing Service NEGOTIATION92Stephen Shaw
1037Leon V RulapaughItaly2024-04-29Buckley Miller Wright PROPOSAL31Asiya Javayant
1038Izzy B IturbideCanada2024-04-27Truhlar And Truhlar Attys UNQUALIFIED50Amy Elsner
1039Nicolas Q SlusarskiBrazil2024-05-09Rousseaux, Michael Esq PROPOSAL75Ivan Magalhaes
1040Ashley N CampainIndia2024-05-03Benton, John B Jr PROPOSAL22Onyama Limba
1041Sinclair G WieserIndia2024-04-23Rousseaux, Michael Esq NEGOTIATION61Stephen Shaw
1042Maria X ShinkoIndia2024-04-18Chapman, Ross E Esq RENEWAL5Ioni Bowcher
1043Chavez N PaprockiRussia2024-05-01Rangoni Of Florence UNQUALIFIED61Bernardo Dominic
1044Costa O RulapaughBrazil2024-04-13Chemel, James L Cpa QUALIFIED60Anna Fali
1045Octavia Q DarakjyFrance2024-04-16Benton, John B Jr NEGOTIATION14Xuxue Feng
1046Tony V NickaIndia2024-04-11Rangoni Of Florence UNQUALIFIED18Ioni Bowcher
1047Jefferson D VenereRussia2024-05-02Dorl, James J Esq UNQUALIFIED49Ioni Bowcher
1048Aruna G TollnerSpain2024-04-24Feltz Printing Service UNQUALIFIED99Onyama Limba
1049Mayumi W PaprockiGermany2024-04-21Printing Dimensions UNQUALIFIED54Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Sinclair Z FlosiFranceXuxue Feng PROPOSAL
Octavia R FollerUnited KingdomOnyama Limba QUALIFIED
Wickens C WaycottJapanAsiya Javayant NEW
Claire M RutaCanadaElwin Sharvill UNQUALIFIED
Murillo E OstroskyRussiaBernardo Dominic QUALIFIED
Leon E GarufiCanadaIoni Bowcher QUALIFIED
Sinclair M KuskoArgentinaElwin Sharvill RENEWAL
Leja D KolmetzFranceStephen Shaw QUALIFIED
Leja Z ButtFranceBernardo Dominic NEW
Jones F MorascaAustraliaAmy Elsner PROPOSAL
Juan N MarrierArgentinaXuxue Feng QUALIFIED
Deepesh X FerenczCanadaXuxue Feng QUALIFIED
Salvatore D KolmetzAustraliaXuxue Feng UNQUALIFIED
Kadeem M InouyeIndiaAnna Fali NEGOTIATION
Alejandro I RimItalyBernardo Dominic NEW
Jefferson W CaldareraSpainXuxue Feng RENEWAL
Ricardo I ChuiAustraliaBernardo Dominic RENEWAL
Misaki R AlbaresIndiaStephen Shaw NEGOTIATION
Nicolas Y KolmetzJapanOnyama Limba UNQUALIFIED
Julie Z SchemmerSpainBernardo Dominic UNQUALIFIED
Smith I SchemmerItalyIvan Magalhaes NEGOTIATION
Jones F MaletGermanyStephen Shaw RENEWAL
Juan Q PoquetteIndiaStephen Shaw PROPOSAL
Isabel U ShinkoAustraliaBernardo Dominic UNQUALIFIED
Maisha J PoquetteJapanStephen Shaw NEGOTIATION
Aditya K ShinkoGermanyBernardo Dominic PROPOSAL
Greenwood T OldroydBrazilIvan Magalhaes RENEWAL
Cody R PerinRussiaIoni Bowcher PROPOSAL
Jones Z OldroydAustraliaElwin Sharvill PROPOSAL
Clifford Q RoysterJapanAsiya Javayant QUALIFIED
Francesco Y KuskoRussiaStephen Shaw QUALIFIED
Leja U DilliardRussiaIvan Magalhaes NEW
Sinclair Z IturbideSpainAnna Fali NEW
Julie L RimJapanStephen Shaw UNQUALIFIED
Ricardo B FollerAustraliaXuxue Feng NEGOTIATION
Octavia O CampainSpainIoni Bowcher QUALIFIED
Jeanfrancois I AlbaresSpainElwin Sharvill NEGOTIATION
Mujtaba R FerenczJapanElwin Sharvill RENEWAL
Cody Q RimFranceElwin Sharvill RENEWAL
Francesco V IturbideJapanBernardo Dominic NEGOTIATION
Kaitlin T CaldareraRussiaOnyama Limba NEGOTIATION
Ivar B RimAustraliaStephen Shaw UNQUALIFIED
Sinclair Y MaletGermanyElwin Sharvill QUALIFIED
Munro R SaylorsArgentinaAmy Elsner PROPOSAL
David V RulapaughFranceXuxue Feng NEW
Octavia U ButtFranceBernardo Dominic RENEWAL
Maria V DilliardJapanOnyama Limba RENEWAL
Faith G GillianItalyAmy Elsner UNQUALIFIED
Leja I SchemmerJapanAmy Elsner PROPOSAL
Izzy P WaycottIndiaIoni Bowcher NEW
Frozen Columns
Name
Silvio C Rim
Adams G Malet
Silvio G Saylors
Maisha A Inouye
Johnson M Figeroa
Octavia V Albares
Aika L Chui
Maisha I Tollner
Claire Q Bolognia
Mayumi M Darakjy
Juan K Amigon
Claire K Oldroyd
Leon Y Bowley
Stacey C Venere
Aditya V Iturbide
Misaki S Iturbide
Maisha A Flosi
Aika B Marrier
Maria G Tollner
Aruna U Gillian
Mayumi M Venere
Julie R Rim
Mayumi Y Dilliard
David R Kolmetz
Misaki F Venere
Ashley P Waycott
Ivar E Gillian
David O Whobrey
Mujtaba Q Tollner
Jennifer M Caldarera
Aika H Malet
Mujtaba P Ruta
Alejandro R Gillian
Clifford D Flosi
David U Albares
Jones E Royster
Munro T Venere
Ricardo V Bolognia
Alejandro G Maclead
Deepesh V Ruta
Greenwood H Inouye
Adams I Darakjy
Mujtaba H Rim
James C Maclead
Salvatore O Nestle
Silvio D Venere
Leja B Dilliard
Chavez A Doe
Aditya O Campain
Alejandro H Glick
IdCountryDate
1000Brazil2024-05-04
1001Germany2024-05-01
1002Australia2024-04-27
1003France2024-05-04
1004Italy2024-05-01
1005Italy2024-05-06
1006Russia2024-04-27
1007Brazil2024-05-07
1008Japan2024-04-11
1009France2024-05-09
1010Germany2024-04-12
1011Argentina2024-04-23
1012Brazil2024-04-26
1013Spain2024-05-08
1014Brazil2024-05-07
1015Italy2024-04-18
1016Australia2024-05-10
1017France2024-04-27
1018India2024-05-07
1019Spain2024-05-10
1020Australia2024-05-02
1021India2024-04-18
1022Russia2024-05-09
1023Brazil2024-04-11
1024India2024-05-06
1025Australia2024-04-20
1026Italy2024-04-30
1027Argentina2024-04-23
1028Argentina2024-05-05
1029Canada2024-05-04
1030Canada2024-04-28
1031Argentina2024-04-28
1032Canada2024-05-04
1033Brazil2024-04-11
1034Brazil2024-05-09
1035India2024-04-12
1036Australia2024-04-14
1037Argentina2024-05-08
1038Russia2024-04-15
1039Russia2024-05-04
1040Italy2024-04-15
1041United Kingdom2024-04-24
1042Japan2024-05-05
1043Spain2024-05-06
1044Germany2024-05-07
1045Canada2024-04-22
1046Canada2024-04-26
1047Brazil2024-04-18
1048Japan2024-05-10
1049Argentina2024-04-11

On-Demand Data

NameIdCountryDate
Deepesh X Royster1000Argentina2024-04-11
Antonio B Venere1001Germany2024-05-04
Faith T Bolognia1002Germany2024-04-30
Mayumi J Darakjy1003Brazil2024-04-15
Alejandro F Sergi1004Brazil2024-04-17
Greenwood I Doe1005Japan2024-05-04
Claire G Rim1006Germany2024-05-04
Stacey Z Figeroa1007Australia2024-05-03
David L Shinko1008Spain2024-05-09
Darci R Stockham1009Argentina2024-04-13
Aruna A Saylors1010Australia2024-04-14
Jones R Nestle1011Canada2024-04-12
Kaitlin O Maclead1012Australia2024-05-04
Sinclair E Paprocki1013Germany2024-05-06
Emily V Rim1014Australia2024-05-01
Faith K Sergi1015Brazil2024-04-17
Arvin Y Morasca1016Australia2024-05-02
Darci J Marrier1017Argentina2024-04-15
Morrow P Bowley1018Germany2024-05-02
Mujtaba Y Wieser1019United Kingdom2024-04-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leon Q ShinkoGermanyBernardo Dominic UNQUALIFIED
Cody I VocelkaUnited KingdomIvan Magalhaes NEW
Tony J StockhamUnited KingdomAmy Elsner NEGOTIATION
Greenwood O SaylorsUnited KingdomElwin Sharvill NEW
Silvio Q MorascaFranceElwin Sharvill PROPOSAL
Antonio Y RutaSpainAnna Fali RENEWAL
Isabel X ButtCanadaAmy Elsner RENEWAL
Arvin X GarufiUnited KingdomOnyama Limba RENEWAL
Murillo M PoquetteArgentinaElwin Sharvill PROPOSAL
Aditya G PerinItalyIvan Magalhaes NEW
Maria V AmigonCanadaIoni Bowcher QUALIFIED
Darci Q GillianItalyAmy Elsner PROPOSAL
Salvatore E CaldareraArgentinaIvan Magalhaes PROPOSAL
James W KolmetzAustraliaAmy Elsner PROPOSAL
Isabel P NickaBrazilStephen Shaw RENEWAL
Rodrigues P BowleyFranceIvan Magalhaes PROPOSAL
Clifford C KuskoUnited KingdomAsiya Javayant QUALIFIED
Jennifer E AlbaresJapanAnna Fali RENEWAL
Isabel T DoeFranceAmy Elsner NEGOTIATION
David R FollerAustraliaElwin Sharvill QUALIFIED
Greenwood R DarakjyRussiaIoni Bowcher NEGOTIATION
Nicolas W MaletSpainAsiya Javayant RENEWAL
Aditya S OldroydRussiaXuxue Feng RENEWAL
Arvin E WhobreyArgentinaStephen Shaw NEW
Aditya V VenereRussiaAsiya Javayant PROPOSAL
Silvio E FlosiBrazilAnna Fali NEGOTIATION
Ivar F PaprockiUnited KingdomIoni Bowcher PROPOSAL
Emily R NestleAustraliaOnyama Limba UNQUALIFIED
Maisha E KolmetzFranceElwin Sharvill NEGOTIATION
Jeanfrancois T RimBrazilElwin Sharvill PROPOSAL
Clifford K IturbideUnited KingdomStephen Shaw UNQUALIFIED
Deepesh U DoeIndiaElwin Sharvill UNQUALIFIED
Ricardo R MorascaIndiaOnyama Limba PROPOSAL
Kaitlin M PoquetteCanadaXuxue Feng NEGOTIATION
Aditya S WaycottAustraliaAmy Elsner NEGOTIATION
Kadeem S InouyeRussiaOnyama Limba RENEWAL
Morrow I PoquetteArgentinaAnna Fali QUALIFIED
Morrow E IturbideJapanAmy Elsner RENEWAL
Francesco N SaylorsRussiaBernardo Dominic NEW
Sinclair W GauchoBrazilStephen Shaw UNQUALIFIED

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