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
Aruna O PaprockiJapanOnyama Limba NEW
Deepesh D MarrierCanadaAsiya Javayant UNQUALIFIED
Rodrigues N WaycottIndiaAmy Elsner RENEWAL
Leon K RoysterIndiaBernardo Dominic NEGOTIATION
Misaki Q CaldareraSpainIvan Magalhaes UNQUALIFIED
Morrow A ChuiCanadaXuxue Feng QUALIFIED
Emily D PerinBrazilBernardo Dominic RENEWAL
Leon N RimAustraliaIvan Magalhaes QUALIFIED
James M MaletItalyXuxue Feng RENEWAL
Greenwood Z CaldareraGermanyOnyama Limba QUALIFIED
Julie I MaletFranceBernardo Dominic QUALIFIED
Jefferson U NickaIndiaBernardo Dominic NEGOTIATION
Mujtaba I GarufiSpainXuxue Feng QUALIFIED
Arvin N StockhamArgentinaOnyama Limba RENEWAL
Antonio W RoysterBrazilAsiya Javayant NEGOTIATION
Kaitlin Y GauchoIndiaStephen Shaw NEW
Sinclair H InouyeJapanBernardo Dominic RENEWAL
Arvin D DoeJapanIvan Magalhaes RENEWAL
Darci Z GlickSpainAnna Fali NEGOTIATION
Julie A FollerIndiaIvan Magalhaes RENEWAL
Ricardo G FerenczAustraliaBernardo Dominic QUALIFIED
Mayumi Z FollerSpainIvan Magalhaes QUALIFIED
Morrow R BologniaGermanyAnna Fali NEGOTIATION
Ricardo O IturbideCanadaXuxue Feng PROPOSAL
Deepesh P StockhamCanadaAnna Fali NEGOTIATION
Francesco K MorascaFranceOnyama Limba NEGOTIATION
Wickens H VocelkaSpainStephen Shaw UNQUALIFIED
Ricardo X KuskoArgentinaStephen Shaw RENEWAL
Johnson K OstroskyBrazilAsiya Javayant UNQUALIFIED
Jefferson B IturbideJapanXuxue Feng NEW
James D PoquetteItalyIoni Bowcher RENEWAL
Juan N DoeBrazilStephen Shaw UNQUALIFIED
Deepesh Y FollerAustraliaAsiya Javayant QUALIFIED
James L WaycottUnited KingdomAsiya Javayant QUALIFIED
Faith V FlosiCanadaStephen Shaw UNQUALIFIED
Faith C WieserArgentinaBernardo Dominic RENEWAL
Tony E AmigonFranceXuxue Feng QUALIFIED
Aruna S GlickArgentinaAsiya Javayant NEGOTIATION
Arvin P MaletFranceIvan Magalhaes NEW
Tony H AmigonBrazilBernardo Dominic PROPOSAL
Jennifer Z FlosiCanadaBernardo Dominic RENEWAL
Izzy R NestleJapanStephen Shaw QUALIFIED
Johnson E StockhamAustraliaAnna Fali UNQUALIFIED
Morrow L OstroskyAustraliaIoni Bowcher QUALIFIED
Mayumi T RulapaughJapanIvan Magalhaes NEGOTIATION
Aruna N RutaBrazilBernardo Dominic RENEWAL
David W RoysterFranceElwin Sharvill NEGOTIATION
Tony W RulapaughJapanAnna Fali NEGOTIATION
Stacey O NestleCanadaIoni Bowcher NEGOTIATION
Antonio R DarakjyBrazilXuxue Feng UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Greenwood B SlusarskiRussiaIvan Magalhaes PROPOSAL
Misaki P CampainRussiaAnna Fali QUALIFIED
Ricardo U SchemmerSpainIvan Magalhaes QUALIFIED
Octavia K TollnerGermanyAnna Fali NEGOTIATION
Munro L AlbaresUnited KingdomAsiya Javayant PROPOSAL
Kaitlin A SergiRussiaElwin Sharvill NEGOTIATION
Munro R DarakjyJapanXuxue Feng NEW
Octavia K AlbaresItalyBernardo Dominic QUALIFIED
Juan U ShinkoRussiaIoni Bowcher UNQUALIFIED
Tony Y StensethSpainXuxue Feng NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Greenwood F SaylorsAustralia2024-04-24Chanay, Jeffrey A Esq NEW88Bernardo Dominic
1001James U MorascaArgentina2024-04-11Morlong Associates UNQUALIFIED26Bernardo Dominic
1002Clifford S SergiCanada2024-04-13Benton, John B Jr NEGOTIATION28Ivan Magalhaes
1003Julie Y DoeSpain2024-04-10Feltz Printing Service UNQUALIFIED82Ioni Bowcher
1004Johnson F NickaSpain2024-04-03Chemel, James L Cpa NEW99Xuxue Feng
1005Francesco W CaudyJapan2024-04-15Chemel, James L Cpa PROPOSAL67Elwin Sharvill
1006Cody D PerinJapan2024-04-03Chapman, Ross E Esq PROPOSAL37Xuxue Feng
1007Faith I FigeroaBrazil2024-04-10Truhlar And Truhlar Attys NEGOTIATION97Xuxue Feng
1008Ashley M SaylorsGermany2024-03-29Rangoni Of Florence NEGOTIATION30Bernardo Dominic
1009Kaitlin Z MaletSpain2024-04-23Chemel, James L Cpa RENEWAL78Stephen Shaw
1010Morrow J MarrierGermany2024-04-13Dorl, James J Esq NEGOTIATION52Amy Elsner
1011Misaki R DarakjyAustralia2024-04-16Rangoni Of Florence QUALIFIED16Onyama Limba
1012Costa L BologniaIndia2024-04-09Benton, John B Jr QUALIFIED26Stephen Shaw
1013Clifford G CaudyCanada2024-04-09Feiner Bros QUALIFIED6Amy Elsner
1014Juan R VenereUnited Kingdom2024-04-16Benton, John B Jr NEW34Stephen Shaw
1015James V GarufiGermany2024-03-30Chapman, Ross E Esq RENEWAL13Amy Elsner
1016Aruna X AlbaresItaly2024-04-19Chanay, Jeffrey A Esq NEGOTIATION86Elwin Sharvill
1017Jones X TollnerBrazil2024-04-06Feiner Bros PROPOSAL22Bernardo Dominic
1018Izzy R FollerRussia2024-04-09Benton, John B Jr RENEWAL56Elwin Sharvill
1019Costa I WhobreyRussia2024-04-16Rousseaux, Michael Esq NEW70Ivan Magalhaes
1020Greenwood S RutaArgentina2024-03-27Feltz Printing Service QUALIFIED0Ivan Magalhaes
1021Wickens B SlusarskiRussia2024-04-01Chapman, Ross E Esq UNQUALIFIED70Ivan Magalhaes
1022Ricardo H MaletUnited Kingdom2024-04-21Printing Dimensions RENEWAL7Ioni Bowcher
1023Greenwood K RoysterJapan2024-04-14Rangoni Of Florence QUALIFIED98Bernardo Dominic
1024Greenwood Q BriddickCanada2024-04-19Chapman, Ross E Esq PROPOSAL49Amy Elsner
1025Juan T DoeCanada2024-04-17Morlong Associates UNQUALIFIED73Ivan Magalhaes
1026Chavez O CaldareraJapan2024-04-10Commercial Press NEW4Xuxue Feng
1027Francesco P GauchoRussia2024-03-27Rousseaux, Michael Esq QUALIFIED36Onyama Limba
1028Ricardo V GlickRussia2024-04-01Benton, John B Jr UNQUALIFIED67Stephen Shaw
1029Ashley E FigeroaRussia2024-04-22Commercial Press NEW87Stephen Shaw
1030Emily Q VocelkaBrazil2024-04-13Chanay, Jeffrey A Esq NEGOTIATION33Asiya Javayant
1031Nicolas P AmigonArgentina2024-04-11Buckley Miller Wright UNQUALIFIED24Ivan Magalhaes
1032Maria V BologniaSpain2024-03-27Chapman, Ross E Esq NEW43Onyama Limba
1033Claire D BologniaRussia2024-04-17King, Christopher A Esq NEW28Onyama Limba
1034Arvin B GillianGermany2024-04-03Dorl, James J Esq NEGOTIATION52Amy Elsner
1035Darci H MacleadBrazil2024-04-07Benton, John B Jr PROPOSAL4Ivan Magalhaes
1036Izzy C FollerAustralia2024-03-29Chapman, Ross E Esq PROPOSAL70Elwin Sharvill
1037Chavez N StockhamUnited Kingdom2024-04-01Truhlar And Truhlar Attys QUALIFIED2Ioni Bowcher
1038Rodrigues N OldroydCanada2024-03-28Buckley Miller Wright NEW80Xuxue Feng
1039Darci Y NickaArgentina2024-04-13Commercial Press PROPOSAL22Onyama Limba
1040James T BriddickBrazil2024-04-01Chanay, Jeffrey A Esq PROPOSAL71Onyama Limba
1041Aditya B SaylorsItaly2024-04-06King, Christopher A Esq NEW38Ivan Magalhaes
1042Izzy S SergiGermany2024-04-10Feiner Bros PROPOSAL53Elwin Sharvill
1043Juan R BriddickSpain2024-04-05Dorl, James J Esq NEGOTIATION9Elwin Sharvill
1044Isabel S ShinkoRussia2024-03-30Chemel, James L Cpa NEW47Bernardo Dominic
1045Juan L SlusarskiFrance2024-04-23Dorl, James J Esq UNQUALIFIED37Asiya Javayant
1046Ricardo K GarufiJapan2024-04-16Chapman, Ross E Esq NEGOTIATION84Onyama Limba
1047Ashley B NickaUnited Kingdom2024-04-20Commercial Press NEGOTIATION55Elwin Sharvill
1048James U DarakjyIndia2024-03-27Rousseaux, Michael Esq PROPOSAL44Bernardo Dominic
1049Misaki J DoeUnited Kingdom2024-04-17Benton, John B Jr QUALIFIED26Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Mayumi Z MaletBrazilStephen Shaw PROPOSAL
Stacey C WaycottItalyBernardo Dominic NEW
David C CampainUnited KingdomBernardo Dominic NEGOTIATION
Ricardo L FigeroaBrazilElwin Sharvill UNQUALIFIED
Cody Z DoeUnited KingdomBernardo Dominic NEW
Johnson Y GlickUnited KingdomAsiya Javayant PROPOSAL
Alejandro I OstroskyRussiaXuxue Feng PROPOSAL
Johnson Z GillianGermanyAmy Elsner NEGOTIATION
Jefferson Q FlosiGermanyAmy Elsner NEGOTIATION
Kaitlin O BowleyArgentinaBernardo Dominic QUALIFIED
Tony V FollerArgentinaOnyama Limba NEGOTIATION
Johnson G BriddickSpainIvan Magalhaes UNQUALIFIED
Chavez M WieserJapanElwin Sharvill RENEWAL
Morrow T StensethFranceAnna Fali QUALIFIED
Stacey W IturbideIndiaXuxue Feng QUALIFIED
Juan K BologniaArgentinaIoni Bowcher UNQUALIFIED
Octavia U DoeSpainOnyama Limba UNQUALIFIED
Alejandro B DarakjyIndiaStephen Shaw RENEWAL
Murillo H IturbideAustraliaIvan Magalhaes QUALIFIED
Stacey W IturbideSpainIvan Magalhaes QUALIFIED
Ashley G AlbaresJapanAsiya Javayant QUALIFIED
Aika A GlickJapanXuxue Feng QUALIFIED
Munro Q GauchoCanadaXuxue Feng UNQUALIFIED
Maisha I CampainIndiaAmy Elsner RENEWAL
Sinclair Z CaudyUnited KingdomAsiya Javayant QUALIFIED
Tony N DilliardItalyStephen Shaw QUALIFIED
Maisha Q VocelkaIndiaElwin Sharvill RENEWAL
Maisha F FlosiCanadaIoni Bowcher RENEWAL
Misaki R StockhamGermanyIoni Bowcher NEW
Jones P MarrierCanadaAmy Elsner NEGOTIATION
Francesco J VocelkaIndiaAsiya Javayant UNQUALIFIED
Rodrigues U IturbideFranceOnyama Limba RENEWAL
Darci S TollnerIndiaAsiya Javayant NEW
Wickens E PoquetteGermanyAsiya Javayant NEW
Julie Q VocelkaRussiaBernardo Dominic UNQUALIFIED
Kadeem M RoysterGermanyElwin Sharvill RENEWAL
Adams R DilliardGermanyAmy Elsner PROPOSAL
Leja D SlusarskiArgentinaIvan Magalhaes NEGOTIATION
Morrow X GlickJapanBernardo Dominic NEGOTIATION
Silvio I MaletArgentinaXuxue Feng QUALIFIED
Darci W WaycottUnited KingdomXuxue Feng QUALIFIED
Morrow E AmigonIndiaIvan Magalhaes NEGOTIATION
Claire T StensethAustraliaOnyama Limba RENEWAL
Mayumi Y WhobreyAustraliaIvan Magalhaes RENEWAL
Wickens F WieserJapanBernardo Dominic PROPOSAL
Misaki R DilliardFranceIvan Magalhaes RENEWAL
Silvio O FigeroaIndiaAsiya Javayant QUALIFIED
Wickens O PoquetteAustraliaAmy Elsner UNQUALIFIED
Aditya V SlusarskiItalyIvan Magalhaes RENEWAL
Julie C MaletArgentinaXuxue Feng UNQUALIFIED
Frozen Columns
Name
Costa J Malet
Kaitlin V Gillian
Jeanfrancois O Perin
Jones V Gaucho
Claire M Schemmer
Costa E Chui
Jones D Briddick
Octavia W Paprocki
Octavia L Slusarski
Aditya H Marrier
Wickens E Kolmetz
Silvio V Inouye
Mayumi I Vocelka
Faith E Glick
Kadeem T Iturbide
Deepesh J Whobrey
Salvatore Z Glick
Kaitlin Z Waycott
Aika D Tollner
Rodrigues I Caldarera
Smith M Bolognia
Maisha T Stockham
Leja D Stockham
Isabel J Slusarski
Francesco K Albares
Leja O Wieser
Chavez W Malet
Munro Y Darakjy
Isabel V Vocelka
Chavez K Ostrosky
Deepesh Z Dilliard
Tony X Rulapaugh
Kaitlin W Stockham
Arvin J Campain
Rodrigues W Sergi
Faith W Doe
Aika B Gaucho
Alejandro X Whobrey
Salvatore C Stockham
Ashley R Perin
Deepesh G Amigon
David O Maclead
Stacey I Perin
Salvatore K Ruta
Chavez M Butt
Jeanfrancois J Gaucho
Isabel R Stockham
Aruna R Vocelka
Salvatore N Tollner
Mayumi U Maclead
IdCountryDate
1000United Kingdom2024-04-04
1001Brazil2024-04-02
1002Australia2024-03-30
1003Spain2024-04-12
1004Canada2024-04-13
1005Italy2024-04-09
1006Canada2024-04-05
1007Russia2024-04-03
1008Russia2024-04-05
1009Canada2024-04-24
1010Australia2024-04-15
1011India2024-04-07
1012Russia2024-04-08
1013Russia2024-04-05
1014Russia2024-04-23
1015France2024-04-19
1016Russia2024-04-20
1017Russia2024-04-10
1018Spain2024-04-18
1019Italy2024-04-14
1020India2024-04-15
1021France2024-04-20
1022United Kingdom2024-04-14
1023United Kingdom2024-04-19
1024Spain2024-04-02
1025Germany2024-04-09
1026Brazil2024-04-22
1027Argentina2024-04-24
1028Japan2024-04-14
1029Italy2024-03-30
1030Italy2024-04-14
1031India2024-03-26
1032Australia2024-04-19
1033Brazil2024-04-13
1034Germany2024-04-15
1035United Kingdom2024-04-20
1036France2024-04-14
1037France2024-03-30
1038Russia2024-04-17
1039Japan2024-03-30
1040Italy2024-04-24
1041France2024-04-17
1042France2024-04-06
1043Brazil2024-04-19
1044Canada2024-04-22
1045Japan2024-04-05
1046Russia2024-04-19
1047Canada2024-04-07
1048Spain2024-04-22
1049United Kingdom2024-04-07

On-Demand Data

NameIdCountryDate
Jefferson N Malet1000India2024-04-23
Kadeem K Doe1001Italy2024-03-31
Deepesh G Figeroa1002Spain2024-04-14
Misaki F Wieser1003Brazil2024-04-01
Julie S Foller1004Italy2024-04-13
Smith A Malet1005Australia2024-04-01
Jones C Paprocki1006Brazil2024-04-16
Francesco B Tollner1007Russia2024-04-04
Clifford B Malet1008Germany2024-04-19
Costa T Kusko1009Germany2024-04-17
Stacey B Waycott1010India2024-04-14
Stacey W Vocelka1011Canada2024-04-15
Munro F Venere1012Australia2024-03-31
Wickens Q Nicka1013Spain2024-03-28
Salvatore U Caudy1014United Kingdom2024-04-15
Aruna D Slusarski1015Germany2024-04-01
Smith T Venere1016France2024-03-29
Alejandro S Sergi1017Australia2024-03-30
David Q Glick1018Italy2024-04-11
Costa A Malet1019Spain2024-04-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Tony X StockhamFranceElwin Sharvill UNQUALIFIED
Smith Y IturbideUnited KingdomAmy Elsner QUALIFIED
Isabel R MaletArgentinaElwin Sharvill QUALIFIED
Maisha X VocelkaFranceBernardo Dominic NEGOTIATION
Tony B SlusarskiAustraliaIvan Magalhaes UNQUALIFIED
Jennifer R KuskoFranceAsiya Javayant PROPOSAL
Sinclair J OldroydRussiaIvan Magalhaes PROPOSAL
Chavez V ChuiGermanyIvan Magalhaes QUALIFIED
Smith X MorascaJapanXuxue Feng PROPOSAL
Jennifer X ChuiBrazilElwin Sharvill PROPOSAL
Jennifer I PaprockiAustraliaStephen Shaw RENEWAL
Darci E KolmetzJapanStephen Shaw NEW
Leja K MarrierRussiaOnyama Limba QUALIFIED
Leon D ChuiGermanyAmy Elsner PROPOSAL
Rodrigues H KolmetzRussiaBernardo Dominic RENEWAL
Kaitlin T FigeroaArgentinaElwin Sharvill NEGOTIATION
Stacey Y BriddickFranceAnna Fali NEGOTIATION
Maisha O SergiFranceAsiya Javayant NEGOTIATION
Stacey G OldroydAustraliaAmy Elsner UNQUALIFIED
Leja O FlosiCanadaElwin Sharvill PROPOSAL
Alejandro R CaldareraUnited KingdomIoni Bowcher QUALIFIED
Faith C GauchoRussiaIvan Magalhaes NEW
Octavia C DarakjyItalyXuxue Feng RENEWAL
Morrow R WhobreyIndiaIvan Magalhaes NEW
Cody I BologniaJapanAnna Fali PROPOSAL
Antonio F OldroydArgentinaXuxue Feng UNQUALIFIED
Deepesh H NickaBrazilAnna Fali NEW
Antonio T VocelkaSpainElwin Sharvill QUALIFIED
Arvin P PaprockiGermanyAmy Elsner PROPOSAL
Costa A MorascaGermanyIvan Magalhaes NEW
David W WaycottArgentinaXuxue Feng NEGOTIATION
Alejandro P CampainItalyOnyama Limba NEGOTIATION
Smith J MarrierIndiaStephen Shaw NEW
Mayumi I GillianCanadaAnna Fali NEGOTIATION
Arvin V BologniaRussiaStephen Shaw RENEWAL
Mayumi S TollnerRussiaStephen Shaw PROPOSAL
Johnson D RulapaughRussiaAmy Elsner UNQUALIFIED
Jennifer G ChuiIndiaXuxue Feng UNQUALIFIED
Johnson D ChuiSpainStephen Shaw PROPOSAL
Darci M WhobreyRussiaBernardo Dominic 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>