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
Kaitlin F RutaBrazilOnyama Limba QUALIFIED
Arvin N StockhamArgentinaStephen Shaw PROPOSAL
Murillo A GarufiArgentinaBernardo Dominic QUALIFIED
Maisha D MaletArgentinaAnna Fali UNQUALIFIED
Claire Y StensethAustraliaIvan Magalhaes UNQUALIFIED
Clifford K BriddickArgentinaElwin Sharvill NEGOTIATION
Ivar T KolmetzIndiaXuxue Feng QUALIFIED
Morrow C CaldareraFranceElwin Sharvill UNQUALIFIED
Darci R IturbideAustraliaStephen Shaw NEW
Leja Y KuskoIndiaOnyama Limba PROPOSAL
Wickens Z RimArgentinaIvan Magalhaes PROPOSAL
Jones I DilliardJapanElwin Sharvill PROPOSAL
Adams Y KuskoSpainXuxue Feng PROPOSAL
Aika Y MaletBrazilIvan Magalhaes RENEWAL
Johnson X PoquetteFranceAsiya Javayant RENEWAL
Julie Y OldroydUnited KingdomOnyama Limba PROPOSAL
Clifford U ChuiFranceIoni Bowcher QUALIFIED
Salvatore L MaletItalyAsiya Javayant QUALIFIED
Aruna H IturbideBrazilAnna Fali PROPOSAL
Silvio Z FlosiArgentinaAmy Elsner QUALIFIED
Octavia B PerinGermanyStephen Shaw QUALIFIED
Octavia C RutaArgentinaAsiya Javayant NEGOTIATION
Murillo F PoquetteCanadaIoni Bowcher NEW
Octavia D GlickCanadaElwin Sharvill NEW
Deepesh L BologniaArgentinaAnna Fali NEW
Silvio A VocelkaCanadaOnyama Limba UNQUALIFIED
Antonio W DilliardAustraliaElwin Sharvill RENEWAL
Isabel M VenereItalyAmy Elsner QUALIFIED
Cody D SergiIndiaElwin Sharvill PROPOSAL
Jeanfrancois M KuskoItalyXuxue Feng QUALIFIED
Darci B CaldareraJapanAnna Fali UNQUALIFIED
Mujtaba C AmigonSpainIoni Bowcher NEW
Kaitlin Q GlickUnited KingdomBernardo Dominic UNQUALIFIED
Claire M GarufiBrazilIoni Bowcher RENEWAL
Claire P FerenczSpainAnna Fali PROPOSAL
Cody P DarakjyBrazilElwin Sharvill NEW
Ricardo O SergiRussiaAnna Fali PROPOSAL
Adams R GauchoFranceAmy Elsner NEGOTIATION
Mujtaba C RimArgentinaAsiya Javayant RENEWAL
Nicolas S GillianIndiaStephen Shaw UNQUALIFIED
Octavia O InouyeAustraliaOnyama Limba NEGOTIATION
David L ChuiSpainStephen Shaw UNQUALIFIED
Aditya H SchemmerGermanyElwin Sharvill NEGOTIATION
Rodrigues V RoysterFranceStephen Shaw NEW
Isabel P SergiGermanyIvan Magalhaes NEW
Morrow Q NickaBrazilAnna Fali QUALIFIED
Darci L FollerCanadaIoni Bowcher NEW
Francesco U PerinIndiaXuxue Feng RENEWAL
Emily M RimGermanyAmy Elsner PROPOSAL
Aditya Z TollnerBrazilAnna Fali RENEWAL
Horizontal
NameCountryRepresentativeStatus
Alejandro Q MacleadJapanIvan Magalhaes PROPOSAL
Izzy C MaletArgentinaAmy Elsner NEW
Jeanfrancois X StockhamArgentinaAmy Elsner PROPOSAL
Misaki A GlickIndiaOnyama Limba NEW
Ivar O StockhamArgentinaStephen Shaw RENEWAL
Darci F KolmetzGermanyStephen Shaw RENEWAL
Jefferson A CaudyAustraliaAnna Fali UNQUALIFIED
Kaitlin P NestleFranceOnyama Limba NEW
Clifford A FigeroaAustraliaIoni Bowcher NEGOTIATION
Izzy L AmigonFranceXuxue Feng PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Munro Y StensethAustralia2024-04-25Feiner Bros QUALIFIED51Anna Fali
1001Clifford L OldroydIndia2024-04-12King, Christopher A Esq QUALIFIED31Bernardo Dominic
1002Mujtaba X FollerAustralia2024-04-23Chanay, Jeffrey A Esq NEW28Anna Fali
1003Tony X NestleCanada2024-04-24Chemel, James L Cpa PROPOSAL39Xuxue Feng
1004Aruna M SergiIndia2024-04-30Rousseaux, Michael Esq UNQUALIFIED74Amy Elsner
1005Tony D VocelkaAustralia2024-04-29Truhlar And Truhlar Attys RENEWAL9Bernardo Dominic
1006Aditya C PoquetteUnited Kingdom2024-04-25Rangoni Of Florence NEW11Ivan Magalhaes
1007Juan P CaudyGermany2024-04-07Truhlar And Truhlar Attys RENEWAL92Ioni Bowcher
1008Costa W MorascaUnited Kingdom2024-04-24Truhlar And Truhlar Attys UNQUALIFIED66Amy Elsner
1009Rodrigues M InouyeFrance2024-04-08Truhlar And Truhlar Attys UNQUALIFIED30Bernardo Dominic
1010Alejandro P FlosiGermany2024-04-13Truhlar And Truhlar Attys QUALIFIED48Asiya Javayant
1011Stacey D PaprockiGermany2024-04-16King, Christopher A Esq RENEWAL34Asiya Javayant
1012Ivar J RoysterSpain2024-04-21Feiner Bros UNQUALIFIED59Asiya Javayant
1013Johnson D DilliardArgentina2024-04-20King, Christopher A Esq RENEWAL57Stephen Shaw
1014Clifford U ShinkoJapan2024-04-30King, Christopher A Esq RENEWAL54Amy Elsner
1015Sinclair M VocelkaAustralia2024-05-01Chemel, James L Cpa RENEWAL89Asiya Javayant
1016Silvio O VocelkaAustralia2024-04-24Feltz Printing Service NEGOTIATION79Elwin Sharvill
1017Aruna T GauchoFrance2024-04-18Benton, John B Jr NEGOTIATION44Ivan Magalhaes
1018David F CaudySpain2024-04-10Rousseaux, Michael Esq QUALIFIED29Stephen Shaw
1019Antonio H VocelkaArgentina2024-04-14Buckley Miller Wright NEW16Onyama Limba
1020Juan M MarrierUnited Kingdom2024-04-06Morlong Associates RENEWAL18Amy Elsner
1021Faith B SchemmerFrance2024-04-14Feltz Printing Service QUALIFIED90Amy Elsner
1022Clifford Y FerenczJapan2024-04-19Rangoni Of Florence NEW0Stephen Shaw
1023Jefferson H FlosiUnited Kingdom2024-04-18Truhlar And Truhlar Attys UNQUALIFIED89Ioni Bowcher
1024Costa M MorascaBrazil2024-04-07Feiner Bros PROPOSAL56Ioni Bowcher
1025Nicolas Q SergiSpain2024-04-15King, Christopher A Esq RENEWAL77Anna Fali
1026Arvin O WhobreyRussia2024-04-04Dorl, James J Esq QUALIFIED7Elwin Sharvill
1027Jennifer U RoysterGermany2024-04-22Benton, John B Jr NEGOTIATION85Amy Elsner
1028Isabel N ShinkoRussia2024-04-27Printing Dimensions QUALIFIED53Xuxue Feng
1029Johnson X StensethJapan2024-04-15Rousseaux, Michael Esq RENEWAL69Amy Elsner
1030Rodrigues J TollnerAustralia2024-04-10Chapman, Ross E Esq NEGOTIATION34Onyama Limba
1031David A SchemmerBrazil2024-04-28Buckley Miller Wright NEW75Xuxue Feng
1032Ricardo V BriddickArgentina2024-04-02Benton, John B Jr QUALIFIED57Ivan Magalhaes
1033Jefferson R AlbaresJapan2024-04-22Chemel, James L Cpa UNQUALIFIED86Bernardo Dominic
1034Munro C DilliardFrance2024-04-14Feiner Bros PROPOSAL11Stephen Shaw
1035Claire P BriddickIndia2024-04-26Feiner Bros UNQUALIFIED12Bernardo Dominic
1036Leon O MaletItaly2024-04-02Benton, John B Jr RENEWAL47Onyama Limba
1037Morrow N MaletRussia2024-04-03Rousseaux, Michael Esq QUALIFIED84Asiya Javayant
1038Johnson J ShinkoJapan2024-04-15Chanay, Jeffrey A Esq NEW66Anna Fali
1039Rodrigues Z SchemmerUnited Kingdom2024-04-16Chapman, Ross E Esq NEGOTIATION62Xuxue Feng
1040Claire I PaprockiSpain2024-04-07Feltz Printing Service RENEWAL32Onyama Limba
1041Isabel K VenereIndia2024-04-29Chapman, Ross E Esq QUALIFIED32Bernardo Dominic
1042Ashley J RimGermany2024-04-11King, Christopher A Esq QUALIFIED35Anna Fali
1043Jefferson I InouyeBrazil2024-04-08Commercial Press QUALIFIED23Ioni Bowcher
1044Mayumi S SergiItaly2024-04-13Feiner Bros RENEWAL77Ivan Magalhaes
1045Leja S GillianUnited Kingdom2024-04-20Commercial Press NEW35Elwin Sharvill
1046Mayumi K MorascaFrance2024-04-10Buckley Miller Wright RENEWAL27Ioni Bowcher
1047Adams M GauchoJapan2024-04-12Rousseaux, Michael Esq UNQUALIFIED38Bernardo Dominic
1048Tony U StockhamFrance2024-04-16Feiner Bros RENEWAL37Bernardo Dominic
1049Darci E FlosiRussia2024-04-16Commercial Press NEGOTIATION79Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Isabel F PerinSpainStephen Shaw RENEWAL
Morrow K PoquetteAustraliaAmy Elsner QUALIFIED
Juan Y FigeroaFranceAsiya Javayant PROPOSAL
Misaki T BowleyRussiaIvan Magalhaes UNQUALIFIED
Stacey H VocelkaSpainIvan Magalhaes RENEWAL
Isabel O CaldareraFranceIvan Magalhaes RENEWAL
Izzy D TollnerBrazilAsiya Javayant NEW
Costa X GlickSpainAmy Elsner QUALIFIED
Deepesh K InouyeCanadaElwin Sharvill NEGOTIATION
Antonio Q TollnerIndiaStephen Shaw RENEWAL
Emily Y CaudyBrazilOnyama Limba NEGOTIATION
Juan L GillianRussiaIvan Magalhaes UNQUALIFIED
Arvin D RutaArgentinaIoni Bowcher NEGOTIATION
Izzy D WhobreyBrazilOnyama Limba QUALIFIED
Leon B AlbaresCanadaOnyama Limba UNQUALIFIED
Claire G BowleyItalyBernardo Dominic UNQUALIFIED
Ivar K AlbaresBrazilAmy Elsner QUALIFIED
Kadeem V MaletAustraliaIoni Bowcher RENEWAL
Munro P CaldareraCanadaAmy Elsner NEW
Leja E SaylorsGermanyIoni Bowcher PROPOSAL
Jefferson T MaletJapanIvan Magalhaes QUALIFIED
Emily D FerenczGermanyOnyama Limba QUALIFIED
Greenwood K ChuiAustraliaIvan Magalhaes NEW
Aditya Y MorascaCanadaAsiya Javayant RENEWAL
Smith K GauchoBrazilBernardo Dominic NEGOTIATION
Adams H AmigonIndiaAsiya Javayant PROPOSAL
Nicolas N ChuiArgentinaIvan Magalhaes RENEWAL
Jeanfrancois C RoysterArgentinaAnna Fali QUALIFIED
Rodrigues L AlbaresItalyBernardo Dominic NEW
Faith U ChuiUnited KingdomIvan Magalhaes PROPOSAL
Misaki H OldroydSpainXuxue Feng NEGOTIATION
Silvio D FigeroaJapanStephen Shaw QUALIFIED
Mayumi V CaldareraGermanyIvan Magalhaes NEW
Alejandro M FerenczGermanyBernardo Dominic NEW
Jennifer T GillianSpainAsiya Javayant RENEWAL
Aika K SlusarskiRussiaIoni Bowcher NEGOTIATION
Aika H OstroskyUnited KingdomOnyama Limba UNQUALIFIED
Jeanfrancois U MarrierUnited KingdomXuxue Feng QUALIFIED
Juan Q GauchoFranceBernardo Dominic NEGOTIATION
Jeanfrancois C OstroskyJapanBernardo Dominic NEGOTIATION
Leja Q DarakjySpainAsiya Javayant RENEWAL
Leon Q KolmetzBrazilAnna Fali PROPOSAL
Jefferson S WieserAustraliaBernardo Dominic QUALIFIED
Chavez Y CaldareraUnited KingdomIoni Bowcher RENEWAL
Leja G MacleadArgentinaOnyama Limba UNQUALIFIED
Emily O MorascaUnited KingdomIvan Magalhaes RENEWAL
Arvin A StockhamAustraliaIoni Bowcher NEGOTIATION
Claire N OldroydBrazilStephen Shaw PROPOSAL
Johnson J BowleyAustraliaIvan Magalhaes UNQUALIFIED
Mayumi V FlosiBrazilBernardo Dominic PROPOSAL
Frozen Columns
Name
Sinclair H Gaucho
Deepesh M Wieser
Darci L Darakjy
Deepesh D Caudy
Ashley S Chui
Adams S Ostrosky
Leja K Dilliard
Ricardo U Royster
Ashley Z Tollner
Julie I Caudy
Jones D Saylors
Faith F Morasca
Jennifer N Inouye
Misaki K Venere
Antonio I Stenseth
Ivar R Figeroa
Aruna S Whobrey
Wickens T Shinko
Izzy R Flosi
Morrow Y Waycott
Jeanfrancois T Tollner
Morrow T Saylors
Isabel B Iturbide
Jefferson J Doe
Ashley L Whobrey
Murillo M Malet
Jeanfrancois A Slusarski
Wickens B Rulapaugh
Isabel C Briddick
Clifford Z Nicka
Maisha C Poquette
Jefferson G Morasca
Clifford Y Vocelka
Ivar O Poquette
Ivar E Perin
Smith W Dilliard
Sinclair O Gaucho
Morrow I Inouye
Cody Y Slusarski
Faith H Poquette
Kadeem K Morasca
Izzy I Maclead
Leon K Dilliard
Antonio T Whobrey
Nicolas K Marrier
Munro U Rulapaugh
Isabel I Campain
Ivar J Butt
Mayumi M Oldroyd
Antonio D Caldarera
IdCountryDate
1000France2024-04-04
1001Germany2024-04-17
1002United Kingdom2024-04-11
1003Germany2024-04-20
1004India2024-04-29
1005Spain2024-04-21
1006Brazil2024-04-17
1007United Kingdom2024-04-04
1008Japan2024-04-28
1009United Kingdom2024-04-17
1010Australia2024-04-06
1011Germany2024-04-08
1012Argentina2024-04-15
1013Russia2024-04-03
1014Russia2024-04-27
1015Brazil2024-04-10
1016United Kingdom2024-04-23
1017Russia2024-05-01
1018Japan2024-04-02
1019France2024-04-27
1020Canada2024-04-22
1021Spain2024-04-09
1022France2024-04-08
1023Germany2024-04-07
1024United Kingdom2024-04-14
1025India2024-04-09
1026Russia2024-04-04
1027United Kingdom2024-04-13
1028France2024-04-27
1029Brazil2024-04-03
1030Spain2024-04-14
1031Brazil2024-04-13
1032India2024-04-15
1033France2024-04-24
1034Australia2024-04-17
1035India2024-04-09
1036France2024-05-01
1037France2024-04-09
1038Brazil2024-04-21
1039Japan2024-04-07
1040United Kingdom2024-04-04
1041Argentina2024-04-11
1042Canada2024-04-18
1043Argentina2024-04-19
1044Argentina2024-04-13
1045Japan2024-04-18
1046Canada2024-04-04
1047Japan2024-04-20
1048Brazil2024-04-14
1049Spain2024-04-23

On-Demand Data

NameIdCountryDate
Aika T Butt1000India2024-04-25
Clifford Q Garufi1001Australia2024-04-29
Mayumi W Inouye1002United Kingdom2024-04-22
Claire F Glick1003Russia2024-04-29
Tony Y Oldroyd1004Canada2024-04-21
Munro W Butt1005Australia2024-04-15
David I Malet1006Russia2024-04-28
Julie Z Malet1007Russia2024-04-07
Ivar S Bowley1008Argentina2024-04-24
Julie I Gaucho1009Brazil2024-04-27
Leja K Gillian1010United Kingdom2024-04-10
Clifford W Stenseth1011Australia2024-04-09
David M Flosi1012Australia2024-04-14
Silvio H Chui1013Germany2024-04-22
Jefferson S Chui1014United Kingdom2024-04-08
Aditya Q Flosi1015Argentina2024-04-05
Murillo C Kusko1016Russia2024-04-26
Arvin J Wieser1017Germany2024-04-12
Deepesh C Figeroa1018Argentina2024-04-22
David H Butt1019Germany2024-04-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ricardo D DilliardBrazilIoni Bowcher QUALIFIED
Antonio T GauchoIndiaElwin Sharvill NEGOTIATION
Jennifer C PoquetteRussiaIoni Bowcher QUALIFIED
Leja B OldroydArgentinaOnyama Limba NEW
Aika X VenereRussiaXuxue Feng NEW
Claire Y NickaItalyBernardo Dominic PROPOSAL
Izzy M GauchoFranceBernardo Dominic NEW
Maisha S VocelkaJapanAsiya Javayant RENEWAL
Aditya Y WieserArgentinaOnyama Limba PROPOSAL
Aruna D RutaAustraliaOnyama Limba QUALIFIED
Ashley V FlosiRussiaIvan Magalhaes NEGOTIATION
Jefferson R StockhamJapanAsiya Javayant PROPOSAL
Jeanfrancois G GauchoCanadaIoni Bowcher RENEWAL
Ivar K MarrierCanadaIoni Bowcher QUALIFIED
Munro L GarufiItalyAsiya Javayant RENEWAL
Alejandro I DoeSpainStephen Shaw PROPOSAL
Darci P KolmetzBrazilElwin Sharvill NEGOTIATION
Octavia G BologniaSpainElwin Sharvill UNQUALIFIED
Nicolas Z DilliardItalyElwin Sharvill NEW
Sinclair J RutaGermanyXuxue Feng UNQUALIFIED
Ashley Q ChuiUnited KingdomIoni Bowcher UNQUALIFIED
Deepesh F VocelkaCanadaStephen Shaw QUALIFIED
Wickens I AmigonArgentinaBernardo Dominic UNQUALIFIED
Aditya M AmigonItalyBernardo Dominic UNQUALIFIED
Mayumi S OstroskyAustraliaAnna Fali PROPOSAL
Francesco A MorascaIndiaBernardo Dominic NEW
Izzy C BowleyIndiaAnna Fali QUALIFIED
Adams E SlusarskiItalyBernardo Dominic RENEWAL
Octavia B WhobreyGermanyAnna Fali UNQUALIFIED
Izzy H IturbideUnited KingdomIvan Magalhaes UNQUALIFIED
Jennifer S SergiCanadaBernardo Dominic NEGOTIATION
Mayumi V PerinBrazilIvan Magalhaes QUALIFIED
Ricardo V GauchoCanadaElwin Sharvill RENEWAL
Munro B CaudySpainIvan Magalhaes UNQUALIFIED
Greenwood R KolmetzIndiaAnna Fali RENEWAL
Kaitlin I GlickItalyIvan Magalhaes NEGOTIATION
James I GauchoUnited KingdomIoni Bowcher QUALIFIED
Ivar X NestleFranceIvan Magalhaes NEGOTIATION
Cody I WaycottAustraliaAsiya Javayant QUALIFIED
Maisha J MaletGermanyXuxue Feng 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>