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
Nicolas A KuskoFranceIoni Bowcher PROPOSAL
Aika W KuskoBrazilXuxue Feng PROPOSAL
Costa H StensethFranceBernardo Dominic UNQUALIFIED
Cody M MacleadFranceXuxue Feng NEW
Sinclair M PaprockiItalyXuxue Feng PROPOSAL
Costa O PaprockiUnited KingdomAnna Fali NEW
Francesco T GlickFranceIvan Magalhaes PROPOSAL
Chavez F SlusarskiIndiaElwin Sharvill UNQUALIFIED
Nicolas F KuskoFranceStephen Shaw NEW
Wickens N GlickBrazilAnna Fali QUALIFIED
Aika G GauchoUnited KingdomStephen Shaw NEW
Greenwood D InouyeFranceBernardo Dominic PROPOSAL
James U PerinCanadaAsiya Javayant NEGOTIATION
Octavia K FerenczSpainAnna Fali UNQUALIFIED
Kaitlin D CaudyUnited KingdomStephen Shaw RENEWAL
Munro I MaletIndiaIvan Magalhaes NEGOTIATION
Wickens G SchemmerBrazilIvan Magalhaes UNQUALIFIED
Kadeem A StensethCanadaAmy Elsner QUALIFIED
Wickens G RutaFranceIvan Magalhaes UNQUALIFIED
Silvio A DarakjyGermanyBernardo Dominic NEW
Emily S RutaIndiaIvan Magalhaes NEW
Ashley Q BowleyArgentinaAmy Elsner NEGOTIATION
Silvio H KolmetzUnited KingdomAnna Fali QUALIFIED
Darci L BologniaAustraliaAnna Fali PROPOSAL
Alejandro G DilliardBrazilXuxue Feng QUALIFIED
Alejandro I CaldareraCanadaBernardo Dominic QUALIFIED
Jones E BowleyAustraliaStephen Shaw NEW
James M FerenczAustraliaAmy Elsner PROPOSAL
Mayumi O MacleadFranceIoni Bowcher RENEWAL
Johnson V ShinkoFranceStephen Shaw PROPOSAL
Maisha J ButtUnited KingdomElwin Sharvill UNQUALIFIED
Deepesh F VenereCanadaOnyama Limba NEW
Darci K OstroskyItalyIoni Bowcher QUALIFIED
Aika W PaprockiBrazilElwin Sharvill RENEWAL
Jennifer J PoquetteArgentinaAsiya Javayant QUALIFIED
Juan W BologniaArgentinaBernardo Dominic UNQUALIFIED
Izzy X SaylorsArgentinaAnna Fali NEW
Juan H MaletUnited KingdomStephen Shaw NEGOTIATION
Emily F ChuiJapanAmy Elsner UNQUALIFIED
Sinclair N PerinSpainAnna Fali UNQUALIFIED
Emily N ChuiItalyIoni Bowcher RENEWAL
Salvatore V FigeroaFranceIvan Magalhaes NEW
Juan K GauchoUnited KingdomAmy Elsner PROPOSAL
Nicolas J TollnerArgentinaOnyama Limba NEGOTIATION
Izzy D FerenczAustraliaIvan Magalhaes PROPOSAL
Jennifer I WhobreyUnited KingdomOnyama Limba NEW
Leja D WhobreyItalyIoni Bowcher RENEWAL
Jeanfrancois M RutaItalyBernardo Dominic UNQUALIFIED
Johnson U RoysterJapanXuxue Feng UNQUALIFIED
Mayumi L FerenczCanadaAsiya Javayant QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Adams C FigeroaBrazilXuxue Feng QUALIFIED
Silvio Z RutaIndiaAmy Elsner NEW
Jeanfrancois C RimGermanyBernardo Dominic NEW
Cody C PoquetteAustraliaXuxue Feng PROPOSAL
Jennifer I OstroskyAustraliaElwin Sharvill QUALIFIED
Ashley A ShinkoAustraliaIoni Bowcher RENEWAL
Rodrigues Y StockhamGermanyAsiya Javayant PROPOSAL
Chavez J RoysterFranceXuxue Feng UNQUALIFIED
James R ChuiCanadaElwin Sharvill PROPOSAL
Tony Y FlosiIndiaBernardo Dominic NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Mayumi F ShinkoJapan2024-05-19Chapman, Ross E Esq UNQUALIFIED37Stephen Shaw
1001Isabel E SergiBrazil2024-04-26Benton, John B Jr UNQUALIFIED39Onyama Limba
1002Mayumi Z GlickCanada2024-05-14Benton, John B Jr NEW17Ivan Magalhaes
1003Aruna O MacleadCanada2024-05-06Chapman, Ross E Esq RENEWAL87Onyama Limba
1004Clifford U SergiIndia2024-05-01Buckley Miller Wright NEW21Elwin Sharvill
1005Nicolas Y DarakjyBrazil2024-05-13Chemel, James L Cpa NEGOTIATION30Amy Elsner
1006Maria N RulapaughGermany2024-04-27King, Christopher A Esq RENEWAL69Anna Fali
1007Isabel V PerinUnited Kingdom2024-05-09Truhlar And Truhlar Attys NEW9Amy Elsner
1008Costa C GlickRussia2024-05-13King, Christopher A Esq NEW75Amy Elsner
1009Salvatore B MacleadJapan2024-05-01Rousseaux, Michael Esq QUALIFIED48Ioni Bowcher
1010Deepesh T SaylorsSpain2024-04-27Rangoni Of Florence NEGOTIATION8Onyama Limba
1011Leon J VocelkaAustralia2024-05-10Rousseaux, Michael Esq NEW39Stephen Shaw
1012Aika B RimRussia2024-05-02Commercial Press UNQUALIFIED28Asiya Javayant
1013Wickens U CampainArgentina2024-05-07Commercial Press PROPOSAL98Asiya Javayant
1014Kaitlin S MaletGermany2024-05-13Morlong Associates UNQUALIFIED9Ivan Magalhaes
1015Isabel O KolmetzIndia2024-05-04Printing Dimensions QUALIFIED26Ioni Bowcher
1016Ricardo A StockhamCanada2024-05-19Chanay, Jeffrey A Esq NEGOTIATION71Stephen Shaw
1017Jeanfrancois Z GarufiUnited Kingdom2024-04-25Rousseaux, Michael Esq PROPOSAL49Xuxue Feng
1018Sinclair P KolmetzJapan2024-05-02Rousseaux, Michael Esq NEW75Anna Fali
1019Arvin H AmigonUnited Kingdom2024-05-18Morlong Associates RENEWAL46Amy Elsner
1020Jefferson Y WieserGermany2024-05-16Rousseaux, Michael Esq QUALIFIED64Bernardo Dominic
1021Isabel P MaletSpain2024-05-14Chanay, Jeffrey A Esq NEGOTIATION79Ivan Magalhaes
1022Maria I BologniaAustralia2024-05-13Feiner Bros UNQUALIFIED67Amy Elsner
1023Jones R MorascaRussia2024-04-22Rousseaux, Michael Esq UNQUALIFIED38Amy Elsner
1024Jones U KuskoAustralia2024-04-21Buckley Miller Wright NEGOTIATION18Ivan Magalhaes
1025Greenwood E TollnerCanada2024-04-23Feiner Bros NEGOTIATION25Amy Elsner
1026Mayumi B PaprockiArgentina2024-05-17Commercial Press PROPOSAL80Asiya Javayant
1027Jones A RoysterArgentina2024-05-01Chemel, James L Cpa QUALIFIED75Bernardo Dominic
1028Izzy Z KuskoArgentina2024-05-06Chemel, James L Cpa NEW33Ioni Bowcher
1029Salvatore J SaylorsRussia2024-05-12Printing Dimensions NEGOTIATION40Asiya Javayant
1030Adams F OldroydAustralia2024-05-16King, Christopher A Esq NEW43Bernardo Dominic
1031Isabel A GauchoFrance2024-05-07Chapman, Ross E Esq RENEWAL54Anna Fali
1032Nicolas G MaletUnited Kingdom2024-05-05Rangoni Of Florence RENEWAL73Amy Elsner
1033David U StensethSpain2024-05-06Chanay, Jeffrey A Esq QUALIFIED2Elwin Sharvill
1034Nicolas F WieserAustralia2024-04-24Rousseaux, Michael Esq NEGOTIATION47Bernardo Dominic
1035Misaki E VocelkaItaly2024-05-02Buckley Miller Wright UNQUALIFIED67Bernardo Dominic
1036David V PerinUnited Kingdom2024-05-19Chemel, James L Cpa QUALIFIED3Elwin Sharvill
1037Juan H PerinFrance2024-05-17Feltz Printing Service QUALIFIED94Stephen Shaw
1038Kadeem D StockhamGermany2024-04-21Benton, John B Jr PROPOSAL85Asiya Javayant
1039Nicolas P KuskoItaly2024-04-28Printing Dimensions NEGOTIATION0Asiya Javayant
1040Isabel R RimJapan2024-04-25King, Christopher A Esq PROPOSAL75Stephen Shaw
1041Arvin J ChuiSpain2024-04-21Feltz Printing Service QUALIFIED96Ioni Bowcher
1042Greenwood B DoeBrazil2024-05-09Chanay, Jeffrey A Esq NEGOTIATION81Elwin Sharvill
1043David L SergiGermany2024-05-19Rousseaux, Michael Esq NEGOTIATION79Onyama Limba
1044Juan N AmigonUnited Kingdom2024-05-11Rousseaux, Michael Esq QUALIFIED87Ivan Magalhaes
1045Antonio H GauchoFrance2024-04-23Feiner Bros NEGOTIATION22Amy Elsner
1046Jennifer V KolmetzSpain2024-05-11Rousseaux, Michael Esq PROPOSAL28Ivan Magalhaes
1047Jennifer S BologniaRussia2024-05-04Chemel, James L Cpa NEW43Ivan Magalhaes
1048Jeanfrancois Y FigeroaArgentina2024-05-10Dorl, James J Esq UNQUALIFIED61Stephen Shaw
1049Deepesh F KuskoBrazil2024-05-05Truhlar And Truhlar Attys QUALIFIED99Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Murillo X PoquetteUnited KingdomAsiya Javayant NEW
Maria B OstroskyJapanOnyama Limba PROPOSAL
Misaki Y FerenczUnited KingdomElwin Sharvill RENEWAL
Ricardo Z BologniaItalyIoni Bowcher QUALIFIED
Arvin V MarrierFranceOnyama Limba NEGOTIATION
Ivar M MaletSpainAnna Fali PROPOSAL
Aruna D AmigonSpainElwin Sharvill NEW
Maria R SlusarskiSpainBernardo Dominic PROPOSAL
Darci P StensethGermanyXuxue Feng UNQUALIFIED
Mujtaba B GlickArgentinaAsiya Javayant UNQUALIFIED
Kadeem K ShinkoFranceXuxue Feng NEGOTIATION
Francesco W GauchoFranceAmy Elsner NEGOTIATION
Ashley L DoeItalyBernardo Dominic QUALIFIED
Aika N InouyeCanadaAmy Elsner PROPOSAL
Greenwood N DoeCanadaStephen Shaw QUALIFIED
Aruna P SlusarskiArgentinaXuxue Feng QUALIFIED
Salvatore D KolmetzJapanIvan Magalhaes PROPOSAL
Smith C TollnerArgentinaXuxue Feng RENEWAL
Nicolas L WhobreyRussiaStephen Shaw PROPOSAL
Tony X NickaBrazilStephen Shaw RENEWAL
Salvatore G RulapaughRussiaStephen Shaw NEW
Maisha H CampainSpainAsiya Javayant RENEWAL
James X ChuiRussiaIvan Magalhaes RENEWAL
Greenwood O DoeRussiaAnna Fali QUALIFIED
Mujtaba E GarufiSpainOnyama Limba NEGOTIATION
Adams C InouyeFranceAmy Elsner NEGOTIATION
Jeanfrancois Y MaletJapanXuxue Feng QUALIFIED
David A BriddickJapanAnna Fali NEGOTIATION
Julie I BologniaRussiaAnna Fali UNQUALIFIED
Munro B MacleadCanadaIoni Bowcher UNQUALIFIED
Octavia Y NickaRussiaBernardo Dominic NEGOTIATION
Juan D AlbaresUnited KingdomXuxue Feng UNQUALIFIED
Maisha F ShinkoRussiaBernardo Dominic UNQUALIFIED
Sinclair X KuskoJapanAnna Fali NEGOTIATION
Juan U MaletArgentinaOnyama Limba RENEWAL
Francesco Q NickaFranceAsiya Javayant UNQUALIFIED
Clifford K BologniaAustraliaIvan Magalhaes QUALIFIED
Kadeem Z FigeroaItalyAmy Elsner PROPOSAL
Jefferson A IturbideArgentinaOnyama Limba NEGOTIATION
Chavez Q GarufiCanadaXuxue Feng PROPOSAL
Kaitlin F GauchoJapanBernardo Dominic NEGOTIATION
Salvatore T OstroskyAustraliaStephen Shaw NEGOTIATION
Claire T WaycottFranceXuxue Feng NEW
Maisha Q IturbideCanadaAsiya Javayant UNQUALIFIED
Adams R ShinkoJapanAnna Fali RENEWAL
James Y BowleyBrazilElwin Sharvill UNQUALIFIED
Silvio B ChuiArgentinaElwin Sharvill QUALIFIED
Claire S CaldareraRussiaElwin Sharvill RENEWAL
Aika B SergiSpainIvan Magalhaes NEGOTIATION
Ivar T SaylorsIndiaIvan Magalhaes UNQUALIFIED
Frozen Columns
Name
Maria N Gaucho
James U Malet
Salvatore X Venere
Misaki G Poquette
Leon F Gillian
Izzy L Stenseth
Wickens A Inouye
Kadeem M Maclead
Smith H Stockham
Izzy H Chui
Smith T Albares
Leja F Garufi
Leja N Bowley
Juan T Butt
Aruna S Perin
Ivar I Poquette
Isabel J Rim
Chavez K Ferencz
Murillo J Rim
Deepesh U Malet
Maria P Schemmer
Francesco A Schemmer
Juan C Perin
Antonio C Inouye
Arvin J Venere
Morrow F Kusko
Jones Y Kolmetz
Jefferson C Garufi
Claire N Schemmer
Morrow B Malet
Aika B Sergi
Isabel U Whobrey
Jeanfrancois V Albares
Francesco Z Albares
Munro J Albares
Ashley B Figeroa
Tony J Inouye
Deepesh G Nicka
Greenwood V Bolognia
Emily P Caudy
Deepesh V Oldroyd
Silvio R Caudy
Jeanfrancois G Glick
Adams N Poquette
Silvio H Venere
Jeanfrancois U Darakjy
Smith I Chui
Deepesh F Poquette
Izzy M Malet
Leon Q Shinko
IdCountryDate
1000Argentina2024-05-18
1001India2024-05-19
1002Australia2024-05-09
1003Germany2024-04-25
1004Germany2024-05-02
1005Canada2024-05-05
1006Russia2024-05-08
1007Brazil2024-05-13
1008Spain2024-04-28
1009Japan2024-04-21
1010Italy2024-05-07
1011Spain2024-04-22
1012Japan2024-05-17
1013Brazil2024-04-29
1014Canada2024-05-15
1015Argentina2024-05-06
1016Italy2024-05-17
1017India2024-05-11
1018Brazil2024-05-11
1019France2024-05-17
1020India2024-05-18
1021Brazil2024-05-12
1022Italy2024-05-10
1023France2024-05-06
1024Japan2024-04-21
1025Italy2024-04-30
1026India2024-05-11
1027Argentina2024-04-24
1028Japan2024-05-19
1029United Kingdom2024-05-09
1030Argentina2024-04-23
1031Germany2024-05-20
1032Argentina2024-05-12
1033Russia2024-04-29
1034United Kingdom2024-05-13
1035Spain2024-04-22
1036Canada2024-05-15
1037India2024-05-08
1038Germany2024-05-08
1039Australia2024-05-01
1040Brazil2024-05-03
1041Italy2024-05-17
1042Germany2024-04-26
1043France2024-05-07
1044Japan2024-04-25
1045France2024-04-24
1046Brazil2024-05-19
1047Canada2024-04-21
1048United Kingdom2024-05-08
1049Australia2024-05-02

On-Demand Data

NameIdCountryDate
Octavia J Nicka1000Germany2024-05-08
Isabel F Flosi1001Argentina2024-05-16
Costa X Chui1002Italy2024-05-15
Cody Z Darakjy1003Argentina2024-05-17
Juan R Butt1004Japan2024-04-26
Tony D Doe1005France2024-05-19
Jeanfrancois U Rim1006Argentina2024-04-22
Rodrigues K Oldroyd1007Spain2024-04-28
Isabel N Royster1008Canada2024-05-13
Aruna E Royster1009Canada2024-05-10
Julie S Vocelka1010Italy2024-05-01
Leja M Oldroyd1011Japan2024-04-26
Sinclair L Bowley1012Argentina2024-05-10
Arvin N Bowley1013Germany2024-05-06
Smith F Ruta1014Australia2024-04-22
Aruna F Figeroa1015Italy2024-04-28
Antonio O Stenseth1016Australia2024-05-11
Jones V Poquette1017Argentina2024-05-09
Antonio X Bolognia1018United Kingdom2024-04-25
Julie T Caldarera1019Russia2024-05-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Sinclair X RoysterRussiaAmy Elsner NEW
Juan A SaylorsGermanyOnyama Limba UNQUALIFIED
Aruna D OstroskyAustraliaAsiya Javayant QUALIFIED
Wickens X CaudyFranceIoni Bowcher QUALIFIED
Aruna M FigeroaJapanStephen Shaw PROPOSAL
Faith Q MaletFranceStephen Shaw NEGOTIATION
Ivar N ChuiUnited KingdomIoni Bowcher PROPOSAL
Arvin O GillianCanadaElwin Sharvill RENEWAL
Clifford T BriddickBrazilAnna Fali PROPOSAL
Sinclair K SlusarskiJapanIvan Magalhaes UNQUALIFIED
James U MarrierAustraliaOnyama Limba NEW
Morrow U CampainAustraliaStephen Shaw NEW
Octavia X VenereItalyAsiya Javayant PROPOSAL
Aruna E DarakjyIndiaIoni Bowcher QUALIFIED
Cody A FlosiUnited KingdomAsiya Javayant PROPOSAL
Kaitlin G OstroskyBrazilStephen Shaw QUALIFIED
Clifford F GarufiItalyIvan Magalhaes NEW
Greenwood Y GillianJapanStephen Shaw NEGOTIATION
Maria H VocelkaFranceXuxue Feng NEGOTIATION
Adams Y RimCanadaXuxue Feng RENEWAL
Adams S BriddickIndiaElwin Sharvill QUALIFIED
Silvio C MaletCanadaAmy Elsner QUALIFIED
Adams Q AlbaresFranceXuxue Feng NEW
Jones X RoysterGermanyOnyama Limba QUALIFIED
Aditya J PoquetteCanadaBernardo Dominic NEW
Nicolas B RoysterAustraliaOnyama Limba PROPOSAL
Emily Z MaletRussiaElwin Sharvill RENEWAL
Ashley I VocelkaCanadaElwin Sharvill UNQUALIFIED
Leja M IturbideUnited KingdomIoni Bowcher PROPOSAL
Aruna T GillianItalyAnna Fali RENEWAL
Costa N WhobreyRussiaAsiya Javayant QUALIFIED
Jefferson A SaylorsArgentinaStephen Shaw UNQUALIFIED
Antonio V OstroskyRussiaIvan Magalhaes UNQUALIFIED
Octavia G PoquetteRussiaElwin Sharvill UNQUALIFIED
Francesco A StensethItalyIoni Bowcher NEGOTIATION
Munro C CaudyJapanIvan Magalhaes QUALIFIED
Jones X DarakjyAustraliaIvan Magalhaes QUALIFIED
Francesco I WhobreyIndiaOnyama Limba PROPOSAL
Morrow Q TollnerRussiaBernardo Dominic RENEWAL
Maisha K OldroydAustraliaIvan Magalhaes 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>