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
Costa R NickaUnited KingdomElwin Sharvill RENEWAL
Greenwood B PoquetteFranceElwin Sharvill PROPOSAL
Aditya Y InouyeArgentinaAnna Fali NEW
Izzy B IturbideCanadaAmy Elsner PROPOSAL
Maisha F RulapaughGermanyAsiya Javayant UNQUALIFIED
Octavia I BologniaArgentinaOnyama Limba UNQUALIFIED
Deepesh N WieserJapanOnyama Limba NEGOTIATION
Leja X CaldareraArgentinaXuxue Feng UNQUALIFIED
Aditya Z PerinBrazilAsiya Javayant NEGOTIATION
Izzy I IturbideArgentinaOnyama Limba NEW
Munro K PoquetteRussiaAnna Fali RENEWAL
Aika V MaletBrazilOnyama Limba NEW
Jennifer G OldroydSpainAnna Fali UNQUALIFIED
Murillo G CampainItalyBernardo Dominic PROPOSAL
Jeanfrancois Z MorascaAustraliaAmy Elsner PROPOSAL
Aika W OldroydUnited KingdomElwin Sharvill NEGOTIATION
Antonio K GauchoUnited KingdomAnna Fali NEW
Kadeem F StockhamBrazilBernardo Dominic UNQUALIFIED
Ricardo C PoquetteUnited KingdomIoni Bowcher NEW
Juan L SaylorsCanadaAnna Fali PROPOSAL
Tony U IturbideBrazilIoni Bowcher UNQUALIFIED
Isabel K GauchoSpainXuxue Feng NEGOTIATION
Kaitlin C WieserRussiaOnyama Limba PROPOSAL
Sinclair Q OldroydUnited KingdomStephen Shaw RENEWAL
Smith L OldroydCanadaBernardo Dominic UNQUALIFIED
Ivar S BriddickAustraliaAnna Fali NEGOTIATION
Francesco I RulapaughIndiaAsiya Javayant RENEWAL
Darci L DarakjyJapanIvan Magalhaes NEGOTIATION
Clifford E PaprockiGermanyBernardo Dominic QUALIFIED
Ashley R StockhamJapanIoni Bowcher PROPOSAL
Smith I BologniaSpainAsiya Javayant NEGOTIATION
Julie B StockhamUnited KingdomAnna Fali NEW
Silvio P CampainCanadaAnna Fali QUALIFIED
Chavez P SaylorsRussiaAmy Elsner PROPOSAL
Kaitlin V SlusarskiSpainBernardo Dominic QUALIFIED
Aruna E SchemmerFranceIoni Bowcher NEGOTIATION
Maisha J RulapaughAustraliaOnyama Limba NEW
Wickens D SergiSpainOnyama Limba QUALIFIED
Tony O KolmetzBrazilIoni Bowcher RENEWAL
Tony S KolmetzSpainOnyama Limba UNQUALIFIED
Kadeem Q BriddickArgentinaXuxue Feng NEW
Cody G BriddickUnited KingdomAsiya Javayant RENEWAL
Emily K PaprockiIndiaAnna Fali QUALIFIED
Ashley L RoysterBrazilAmy Elsner QUALIFIED
Mujtaba H ShinkoUnited KingdomStephen Shaw RENEWAL
Emily U SchemmerAustraliaIvan Magalhaes PROPOSAL
Cody N SaylorsItalyAmy Elsner QUALIFIED
Tony U GlickIndiaBernardo Dominic RENEWAL
Darci I CaudyCanadaAnna Fali UNQUALIFIED
Mujtaba F TollnerUnited KingdomElwin Sharvill UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Jeanfrancois W MaletFranceIvan Magalhaes PROPOSAL
Morrow Q MorascaUnited KingdomStephen Shaw UNQUALIFIED
Ricardo F StensethRussiaBernardo Dominic RENEWAL
Adams U FigeroaItalyBernardo Dominic UNQUALIFIED
Ivar X GarufiFranceAsiya Javayant RENEWAL
Leja M BriddickRussiaAsiya Javayant RENEWAL
Nicolas D ChuiSpainXuxue Feng PROPOSAL
David I CaldareraUnited KingdomIvan Magalhaes PROPOSAL
Tony R BologniaUnited KingdomAsiya Javayant NEGOTIATION
Darci U MorascaArgentinaIoni Bowcher NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Wickens T BologniaSpain2024-02-29Chanay, Jeffrey A Esq RENEWAL65Asiya Javayant
1001Johnson E FlosiAustralia2024-03-01Buckley Miller Wright NEW18Amy Elsner
1002Aruna V StensethIndia2024-03-28Printing Dimensions NEW29Ivan Magalhaes
1003Deepesh V ButtItaly2024-03-05Morlong Associates NEW28Asiya Javayant
1004Maisha U NickaIndia2024-03-04Dorl, James J Esq QUALIFIED24Bernardo Dominic
1005Aditya C SlusarskiJapan2024-03-15Chemel, James L Cpa PROPOSAL43Anna Fali
1006Deepesh Q FollerIndia2024-03-12Feiner Bros PROPOSAL25Anna Fali
1007Darci G WaycottGermany2024-03-04Truhlar And Truhlar Attys PROPOSAL21Xuxue Feng
1008Jennifer J CampainArgentina2024-03-13King, Christopher A Esq QUALIFIED94Asiya Javayant
1009Faith L InouyeJapan2024-03-19Feltz Printing Service RENEWAL80Stephen Shaw
1010Deepesh I KolmetzJapan2024-03-21Feltz Printing Service PROPOSAL79Bernardo Dominic
1011Arvin C CampainJapan2024-03-27Feiner Bros RENEWAL32Xuxue Feng
1012Johnson C RimBrazil2024-03-26Commercial Press UNQUALIFIED56Onyama Limba
1013Jones A OstroskyBrazil2024-03-18Dorl, James J Esq RENEWAL21Ivan Magalhaes
1014Julie K GlickGermany2024-03-13Truhlar And Truhlar Attys PROPOSAL36Asiya Javayant
1015Darci B MaletJapan2024-03-12Benton, John B Jr QUALIFIED68Anna Fali
1016Chavez R WieserArgentina2024-03-09King, Christopher A Esq RENEWAL43Ivan Magalhaes
1017Isabel K FollerSpain2024-03-16Commercial Press RENEWAL28Amy Elsner
1018Rodrigues I MaletArgentina2024-03-12Benton, John B Jr QUALIFIED87Onyama Limba
1019Rodrigues M FerenczBrazil2024-03-18Rangoni Of Florence NEW49Xuxue Feng
1020Costa T MorascaCanada2024-03-07Rangoni Of Florence NEGOTIATION27Asiya Javayant
1021Izzy W SchemmerRussia2024-03-04Feltz Printing Service UNQUALIFIED3Anna Fali
1022Faith C GauchoUnited Kingdom2024-03-11Rousseaux, Michael Esq RENEWAL20Ioni Bowcher
1023Rodrigues S IturbideItaly2024-03-18Feltz Printing Service PROPOSAL34Anna Fali
1024Octavia E ChuiSpain2024-02-29Rousseaux, Michael Esq NEW35Asiya Javayant
1025Wickens Q SaylorsGermany2024-03-04Chanay, Jeffrey A Esq QUALIFIED60Asiya Javayant
1026Adams F PerinAustralia2024-03-18Dorl, James J Esq QUALIFIED99Anna Fali
1027Kaitlin Y GlickBrazil2024-03-24Chemel, James L Cpa RENEWAL74Ioni Bowcher
1028Nicolas Q OstroskyJapan2024-02-28Rangoni Of Florence UNQUALIFIED3Stephen Shaw
1029Cody H StensethBrazil2024-03-04Rousseaux, Michael Esq NEGOTIATION84Amy Elsner
1030Emily F FollerGermany2024-03-06King, Christopher A Esq RENEWAL80Xuxue Feng
1031Costa O InouyeArgentina2024-03-14Buckley Miller Wright NEW98Ivan Magalhaes
1032Izzy A VocelkaUnited Kingdom2024-03-13Truhlar And Truhlar Attys UNQUALIFIED57Asiya Javayant
1033James S BologniaGermany2024-03-25King, Christopher A Esq RENEWAL51Stephen Shaw
1034Tony L FollerBrazil2024-03-06Commercial Press RENEWAL81Asiya Javayant
1035Aika P KolmetzJapan2024-03-05Chanay, Jeffrey A Esq NEGOTIATION14Stephen Shaw
1036Tony D AmigonGermany2024-03-14Commercial Press PROPOSAL81Asiya Javayant
1037Murillo Z NickaItaly2024-03-28Chapman, Ross E Esq PROPOSAL4Ioni Bowcher
1038Kaitlin W MorascaAustralia2024-03-08Chemel, James L Cpa UNQUALIFIED12Ivan Magalhaes
1039Arvin U RimGermany2024-03-04Rangoni Of Florence NEGOTIATION6Stephen Shaw
1040Maisha Z IturbideIndia2024-03-03Benton, John B Jr NEGOTIATION87Anna Fali
1041Wickens H DilliardGermany2024-02-28Dorl, James J Esq NEGOTIATION36Anna Fali
1042Nicolas W RutaIndia2024-03-16Morlong Associates RENEWAL17Asiya Javayant
1043Jones J DoeUnited Kingdom2024-02-28Truhlar And Truhlar Attys UNQUALIFIED12Asiya Javayant
1044Mayumi B AlbaresSpain2024-03-12Chanay, Jeffrey A Esq NEGOTIATION99Onyama Limba
1045Ashley V OstroskyCanada2024-02-28Benton, John B Jr PROPOSAL9Onyama Limba
1046Salvatore W OstroskyJapan2024-03-08Chanay, Jeffrey A Esq PROPOSAL58Stephen Shaw
1047Maisha J GauchoAustralia2024-03-17Morlong Associates PROPOSAL78Anna Fali
1048Deepesh A GillianItaly2024-03-12Rousseaux, Michael Esq PROPOSAL66Asiya Javayant
1049Jeanfrancois J TollnerJapan2024-03-22Chemel, James L Cpa QUALIFIED75Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Deepesh Q DarakjyBrazilIvan Magalhaes RENEWAL
Kadeem F FigeroaJapanIoni Bowcher NEW
Chavez V PoquetteSpainIvan Magalhaes PROPOSAL
Leon H IturbideBrazilAsiya Javayant NEW
Ricardo U MacleadAustraliaElwin Sharvill NEGOTIATION
Leon E DoeGermanyIoni Bowcher QUALIFIED
Munro Y KolmetzBrazilStephen Shaw UNQUALIFIED
Cody Y FollerGermanyElwin Sharvill UNQUALIFIED
Maria R AmigonAustraliaBernardo Dominic NEW
Clifford L CaudyArgentinaAsiya Javayant PROPOSAL
Leon Q ShinkoRussiaXuxue Feng QUALIFIED
Greenwood E PaprockiItalyIvan Magalhaes NEW
Morrow L CaldareraItalyOnyama Limba NEW
Johnson K OldroydRussiaOnyama Limba UNQUALIFIED
Jones T SergiJapanAnna Fali RENEWAL
Ricardo A FlosiGermanyAnna Fali QUALIFIED
Salvatore E NickaGermanyStephen Shaw NEW
Jefferson S AlbaresItalyXuxue Feng UNQUALIFIED
Izzy O FigeroaIndiaAsiya Javayant QUALIFIED
Jeanfrancois G OstroskyUnited KingdomStephen Shaw QUALIFIED
Kadeem T KolmetzArgentinaIvan Magalhaes UNQUALIFIED
Mujtaba R DoeSpainOnyama Limba NEGOTIATION
Deepesh T MacleadItalyBernardo Dominic NEGOTIATION
Greenwood H ShinkoItalyXuxue Feng NEGOTIATION
Morrow Q ChuiRussiaIoni Bowcher QUALIFIED
Morrow T PerinCanadaOnyama Limba NEGOTIATION
Cody J PaprockiUnited KingdomStephen Shaw UNQUALIFIED
Kaitlin E MaletCanadaXuxue Feng QUALIFIED
Kadeem H MorascaUnited KingdomAsiya Javayant RENEWAL
Arvin Y PaprockiItalyIvan Magalhaes QUALIFIED
Darci J IturbideCanadaOnyama Limba QUALIFIED
Maria P FigeroaAustraliaIoni Bowcher PROPOSAL
Ashley X KolmetzBrazilOnyama Limba QUALIFIED
Alejandro G DilliardItalyAmy Elsner QUALIFIED
Antonio Y MacleadRussiaElwin Sharvill NEGOTIATION
Wickens W FollerGermanyElwin Sharvill PROPOSAL
Greenwood Q BologniaFranceXuxue Feng NEGOTIATION
Costa M WieserRussiaStephen Shaw QUALIFIED
Chavez E SlusarskiGermanyAsiya Javayant RENEWAL
Jeanfrancois E AmigonArgentinaBernardo Dominic QUALIFIED
Smith O KuskoIndiaAmy Elsner UNQUALIFIED
Clifford I MarrierCanadaAsiya Javayant RENEWAL
Silvio Z CaudyItalyAnna Fali UNQUALIFIED
Maisha K MarrierCanadaAnna Fali NEGOTIATION
Cody Q MaletAustraliaBernardo Dominic PROPOSAL
Kaitlin M StensethIndiaAmy Elsner NEGOTIATION
Maisha U MarrierGermanyIvan Magalhaes PROPOSAL
Aditya S MacleadItalyElwin Sharvill NEW
Jennifer R NestleCanadaAnna Fali NEGOTIATION
Leon U KuskoGermanyXuxue Feng RENEWAL
Frozen Columns
Name
Deepesh E Bowley
Aruna W Maclead
Cody P Bolognia
Aruna D Royster
Jefferson E Schemmer
Cody O Briddick
Tony A Bowley
Deepesh H Dilliard
Stacey Q Paprocki
Francesco U Whobrey
Aditya V Tollner
Julie L Iturbide
Silvio Q Figeroa
Juan C Garufi
Faith F Gaucho
Faith S Stenseth
Alejandro T Vocelka
Munro U Malet
Faith T Caldarera
Aika V Nestle
Deepesh N Chui
Mujtaba E Slusarski
Morrow P Ruta
Aruna I Schemmer
Cody Q Ferencz
Darci K Maclead
Murillo B Paprocki
Mujtaba W Oldroyd
Smith M Amigon
Greenwood G Kolmetz
Faith D Gaucho
Maria W Nicka
Jeanfrancois G Kusko
Jefferson M Bolognia
Alejandro D Royster
Juan U Amigon
Stacey W Kusko
Adams E Glick
Adams P Caudy
Leon H Butt
Leja R Malet
Arvin I Albares
Nicolas K Caldarera
Jeanfrancois Z Wieser
Deepesh B Marrier
Isabel Y Dilliard
Tony J Flosi
Ivar L Saylors
Misaki G Tollner
Aruna E Wieser
IdCountryDate
1000Italy2024-03-21
1001Germany2024-02-29
1002Argentina2024-03-11
1003Russia2024-03-19
1004United Kingdom2024-03-16
1005India2024-03-13
1006Italy2024-03-18
1007Canada2024-03-19
1008Brazil2024-03-13
1009Russia2024-03-22
1010Spain2024-03-14
1011Canada2024-03-18
1012India2024-03-08
1013Russia2024-03-19
1014Russia2024-03-04
1015Argentina2024-03-12
1016Brazil2024-03-12
1017India2024-03-11
1018United Kingdom2024-02-29
1019Canada2024-03-26
1020United Kingdom2024-03-15
1021France2024-03-22
1022Australia2024-02-28
1023Brazil2024-03-26
1024Spain2024-03-26
1025Argentina2024-03-08
1026Russia2024-03-11
1027Argentina2024-03-01
1028Brazil2024-03-19
1029Italy2024-03-06
1030Italy2024-03-07
1031Canada2024-03-17
1032Brazil2024-03-23
1033Australia2024-03-09
1034Australia2024-03-22
1035France2024-03-27
1036Brazil2024-03-14
1037Spain2024-03-16
1038Argentina2024-03-07
1039Germany2024-03-10
1040Argentina2024-03-01
1041Brazil2024-03-14
1042Canada2024-03-21
1043Canada2024-03-05
1044United Kingdom2024-03-28
1045Italy2024-03-03
1046Italy2024-03-12
1047Brazil2024-03-05
1048United Kingdom2024-03-09
1049Germany2024-03-28

On-Demand Data

NameIdCountryDate
Tony F Ruta1000Argentina2024-03-25
James C Figeroa1001India2024-03-18
Munro P Stenseth1002Japan2024-03-10
Greenwood U Iturbide1003Spain2024-03-14
Jefferson R Kolmetz1004Russia2024-02-28
Jones P Dilliard1005Italy2024-03-01
Greenwood X Campain1006Brazil2024-03-15
Francesco A Briddick1007Russia2024-03-20
Murillo P Figeroa1008Spain2024-03-17
Costa K Glick1009Argentina2024-03-17
Jefferson Q Caudy1010Brazil2024-03-18
Kaitlin A Inouye1011Russia2024-03-24
Ricardo Q Saylors1012France2024-03-21
Sinclair K Amigon1013India2024-03-07
Cody M Gillian1014Australia2024-03-16
Isabel Q Marrier1015Russia2024-03-02
Claire I Kusko1016Spain2024-03-01
Ashley X Royster1017Italy2024-03-12
Mayumi F Bowley1018United Kingdom2024-03-26
Jefferson B Nicka1019Germany2024-03-19
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Cody T FollerSpainElwin Sharvill PROPOSAL
Leja J SlusarskiRussiaOnyama Limba QUALIFIED
Clifford B KuskoUnited KingdomIvan Magalhaes RENEWAL
Murillo A RimBrazilIvan Magalhaes UNQUALIFIED
Aditya M IturbideJapanAmy Elsner QUALIFIED
Chavez B CaudyBrazilAnna Fali UNQUALIFIED
Adams F VocelkaCanadaAnna Fali NEGOTIATION
Tony C MaletAustraliaOnyama Limba RENEWAL
Faith Q ButtSpainAnna Fali NEW
Mayumi E FollerRussiaBernardo Dominic QUALIFIED
Jeanfrancois K ButtItalyStephen Shaw NEGOTIATION
Alejandro Y FlosiArgentinaIoni Bowcher NEGOTIATION
Faith Y WhobreyIndiaOnyama Limba QUALIFIED
Mayumi F AmigonFranceOnyama Limba QUALIFIED
Jefferson Z PerinAustraliaBernardo Dominic PROPOSAL
Ashley C CaldareraBrazilAmy Elsner RENEWAL
Kaitlin X SchemmerBrazilBernardo Dominic NEGOTIATION
Silvio D GillianArgentinaAmy Elsner NEGOTIATION
Tony Z VocelkaRussiaAnna Fali QUALIFIED
Kadeem H MorascaCanadaIvan Magalhaes NEW
Ivar B KuskoUnited KingdomAmy Elsner RENEWAL
Aruna T CaudyArgentinaBernardo Dominic NEW
Jennifer B IturbideArgentinaElwin Sharvill RENEWAL
Maria A FigeroaBrazilXuxue Feng RENEWAL
Deepesh N FigeroaRussiaStephen Shaw NEGOTIATION
Faith J WieserFranceXuxue Feng NEGOTIATION
James F RulapaughBrazilIoni Bowcher NEGOTIATION
Greenwood S BologniaCanadaIvan Magalhaes QUALIFIED
Mayumi D RulapaughSpainBernardo Dominic RENEWAL
Izzy R AmigonArgentinaOnyama Limba RENEWAL
Ricardo Q GauchoArgentinaAsiya Javayant QUALIFIED
Ricardo T CaudySpainIoni Bowcher NEW
Maisha F NestleBrazilAmy Elsner NEW
Stacey K FollerGermanyAsiya Javayant PROPOSAL
Ricardo T StockhamIndiaOnyama Limba UNQUALIFIED
Alejandro E GlickFranceOnyama Limba PROPOSAL
Antonio O WaycottIndiaBernardo Dominic RENEWAL
Octavia H BriddickBrazilIoni Bowcher UNQUALIFIED
Jefferson H ShinkoRussiaAmy Elsner RENEWAL
Johnson H VenereIndiaElwin Sharvill 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>