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
Murillo L NickaFranceElwin Sharvill UNQUALIFIED
Morrow L AlbaresFranceIoni Bowcher QUALIFIED
Ricardo J DilliardUnited KingdomStephen Shaw QUALIFIED
Jones O SlusarskiRussiaIoni Bowcher QUALIFIED
Tony E MaletSpainOnyama Limba QUALIFIED
Aruna H KolmetzIndiaBernardo Dominic RENEWAL
James E FlosiCanadaBernardo Dominic NEW
Octavia D MarrierSpainIoni Bowcher NEW
Julie O WhobreyJapanOnyama Limba PROPOSAL
Sinclair S AlbaresSpainIvan Magalhaes NEGOTIATION
Jennifer E CaldareraIndiaBernardo Dominic RENEWAL
Isabel T WhobreyBrazilOnyama Limba PROPOSAL
David R AmigonSpainIvan Magalhaes NEW
Alejandro Y SlusarskiJapanOnyama Limba NEGOTIATION
Mayumi A SlusarskiArgentinaStephen Shaw NEW
Silvio X KolmetzSpainOnyama Limba RENEWAL
Stacey E MaletRussiaOnyama Limba NEW
Alejandro N FerenczSpainXuxue Feng UNQUALIFIED
Claire S SaylorsIndiaAsiya Javayant NEW
Kaitlin F BologniaJapanBernardo Dominic PROPOSAL
Jennifer B SlusarskiArgentinaOnyama Limba UNQUALIFIED
Deepesh H GillianSpainXuxue Feng NEW
Adams Y FlosiJapanXuxue Feng RENEWAL
Darci Y PerinBrazilIoni Bowcher QUALIFIED
Jeanfrancois K AlbaresSpainAnna Fali NEW
Mayumi V MaletCanadaOnyama Limba QUALIFIED
Isabel H GarufiAustraliaAnna Fali NEGOTIATION
Deepesh H GauchoUnited KingdomAnna Fali RENEWAL
Francesco M MaletCanadaXuxue Feng PROPOSAL
Ashley U DilliardSpainAmy Elsner UNQUALIFIED
Aika G TollnerItalyXuxue Feng NEW
Chavez N InouyeGermanyElwin Sharvill RENEWAL
Faith R AmigonSpainBernardo Dominic UNQUALIFIED
Clifford C FigeroaFranceOnyama Limba RENEWAL
Rodrigues K VenereCanadaIvan Magalhaes UNQUALIFIED
Adams B RulapaughItalyAsiya Javayant UNQUALIFIED
Antonio Z SaylorsUnited KingdomAnna Fali NEGOTIATION
Chavez D KolmetzIndiaAmy Elsner QUALIFIED
Faith N RulapaughCanadaAnna Fali PROPOSAL
Johnson T DilliardArgentinaElwin Sharvill PROPOSAL
Julie J DarakjyUnited KingdomOnyama Limba UNQUALIFIED
Johnson K StockhamAustraliaAmy Elsner UNQUALIFIED
Wickens K RutaUnited KingdomAsiya Javayant PROPOSAL
Ivar S SchemmerJapanIvan Magalhaes NEW
Misaki A MaletJapanBernardo Dominic NEW
Morrow I RulapaughSpainOnyama Limba PROPOSAL
Tony F WhobreyCanadaAmy Elsner QUALIFIED
Leja M PoquetteBrazilElwin Sharvill PROPOSAL
Stacey I BologniaUnited KingdomOnyama Limba PROPOSAL
Juan C BriddickCanadaAmy Elsner QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Isabel V CampainJapanElwin Sharvill RENEWAL
Antonio V OldroydBrazilAmy Elsner NEW
Claire R ChuiAustraliaAsiya Javayant NEW
Smith X MarrierSpainIoni Bowcher RENEWAL
Stacey W MorascaUnited KingdomBernardo Dominic RENEWAL
Clifford K RulapaughIndiaOnyama Limba NEGOTIATION
Arvin W ChuiJapanOnyama Limba NEGOTIATION
Ashley O ChuiArgentinaAmy Elsner RENEWAL
Wickens U PerinCanadaAmy Elsner PROPOSAL
Izzy C ButtFranceAmy Elsner PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Tony E MarrierJapan2024-04-30Buckley Miller Wright NEW10Ivan Magalhaes
1001Kadeem H CaldareraArgentina2024-04-24Commercial Press UNQUALIFIED69Anna Fali
1002Izzy O CampainSpain2024-04-19Dorl, James J Esq QUALIFIED92Anna Fali
1003Johnson L RulapaughArgentina2024-05-04Morlong Associates UNQUALIFIED73Xuxue Feng
1004Cody N InouyeAustralia2024-05-11Chapman, Ross E Esq PROPOSAL7Onyama Limba
1005Chavez W GarufiUnited Kingdom2024-05-06Feltz Printing Service UNQUALIFIED94Onyama Limba
1006Isabel V TollnerAustralia2024-05-12Chapman, Ross E Esq QUALIFIED52Bernardo Dominic
1007Aika R MarrierArgentina2024-04-22Rangoni Of Florence NEW66Onyama Limba
1008Costa S OldroydAustralia2024-05-03Chapman, Ross E Esq QUALIFIED48Asiya Javayant
1009Isabel R MacleadRussia2024-04-22King, Christopher A Esq NEW38Onyama Limba
1010Jones H GarufiArgentina2024-05-15Printing Dimensions NEGOTIATION50Xuxue Feng
1011Stacey C DarakjyItaly2024-04-19Commercial Press NEGOTIATION77Stephen Shaw
1012Aruna R DilliardJapan2024-05-10Dorl, James J Esq NEW70Amy Elsner
1013Izzy O KuskoArgentina2024-05-07Morlong Associates NEGOTIATION61Elwin Sharvill
1014Misaki W BologniaArgentina2024-04-29Feiner Bros QUALIFIED98Stephen Shaw
1015Alejandro R RimFrance2024-05-07Feiner Bros QUALIFIED38Ioni Bowcher
1016Clifford T DilliardJapan2024-05-09Dorl, James J Esq RENEWAL96Amy Elsner
1017Ashley V OstroskyJapan2024-04-24Buckley Miller Wright NEW33Ioni Bowcher
1018Greenwood M MarrierItaly2024-05-06Chemel, James L Cpa RENEWAL71Asiya Javayant
1019Arvin C FollerCanada2024-04-17Feiner Bros QUALIFIED47Xuxue Feng
1020Misaki F MorascaRussia2024-04-20Dorl, James J Esq PROPOSAL29Bernardo Dominic
1021Deepesh A OstroskyAustralia2024-04-17Rousseaux, Michael Esq NEW45Ivan Magalhaes
1022Francesco R InouyeJapan2024-05-04Morlong Associates RENEWAL6Elwin Sharvill
1023Kaitlin I DilliardArgentina2024-05-04Feltz Printing Service QUALIFIED57Onyama Limba
1024Francesco B PerinIndia2024-05-13Benton, John B Jr PROPOSAL13Asiya Javayant
1025Leja C GauchoGermany2024-05-04Truhlar And Truhlar Attys NEGOTIATION3Bernardo Dominic
1026Cody F GlickAustralia2024-05-04Chemel, James L Cpa NEW35Onyama Limba
1027Isabel H WieserIndia2024-05-11Printing Dimensions NEW83Ioni Bowcher
1028Costa J GauchoIndia2024-04-16Feiner Bros QUALIFIED64Elwin Sharvill
1029Greenwood N OldroydRussia2024-04-26Truhlar And Truhlar Attys NEGOTIATION9Stephen Shaw
1030Morrow X MaletBrazil2024-05-12Feltz Printing Service NEGOTIATION81Bernardo Dominic
1031Julie N MarrierRussia2024-04-20King, Christopher A Esq PROPOSAL9Stephen Shaw
1032Aika B CampainSpain2024-04-24Feltz Printing Service NEW29Anna Fali
1033Mayumi K RimIndia2024-04-18Chemel, James L Cpa UNQUALIFIED20Bernardo Dominic
1034Costa G GarufiCanada2024-04-23Feltz Printing Service NEW21Ioni Bowcher
1035Claire P FigeroaAustralia2024-04-28Buckley Miller Wright PROPOSAL6Xuxue Feng
1036Antonio H AmigonAustralia2024-05-15Buckley Miller Wright NEGOTIATION87Ivan Magalhaes
1037Jeanfrancois F RoysterGermany2024-05-11Buckley Miller Wright NEW22Amy Elsner
1038Cody J FigeroaUnited Kingdom2024-04-24Chemel, James L Cpa QUALIFIED80Ivan Magalhaes
1039Ricardo Y GauchoSpain2024-04-21Printing Dimensions NEW85Anna Fali
1040Salvatore C TollnerRussia2024-05-14Morlong Associates NEGOTIATION86Onyama Limba
1041Francesco I SergiCanada2024-04-22Feltz Printing Service NEW14Bernardo Dominic
1042Izzy B NickaArgentina2024-05-09Chemel, James L Cpa UNQUALIFIED33Amy Elsner
1043Leon U SaylorsItaly2024-05-01Feltz Printing Service NEW39Bernardo Dominic
1044Alejandro K BologniaAustralia2024-05-10Feltz Printing Service UNQUALIFIED94Amy Elsner
1045Clifford L NestleSpain2024-05-01Commercial Press RENEWAL33Ioni Bowcher
1046Morrow A FerenczItaly2024-04-23Chanay, Jeffrey A Esq QUALIFIED97Onyama Limba
1047Smith B BologniaFrance2024-05-05Rangoni Of Florence NEGOTIATION21Bernardo Dominic
1048Rodrigues H ShinkoSpain2024-05-05Rangoni Of Florence RENEWAL19Ioni Bowcher
1049Murillo M PerinIndia2024-04-19Feltz Printing Service NEGOTIATION63Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Claire B InouyeBrazilXuxue Feng QUALIFIED
Jones Z AlbaresArgentinaIvan Magalhaes PROPOSAL
Aika E SaylorsUnited KingdomOnyama Limba NEW
Octavia D WieserArgentinaAmy Elsner UNQUALIFIED
Jones C MaletCanadaIoni Bowcher NEGOTIATION
Misaki P WhobreyCanadaStephen Shaw UNQUALIFIED
Jennifer D AlbaresJapanIoni Bowcher RENEWAL
Deepesh H WhobreySpainXuxue Feng NEGOTIATION
Izzy Y GarufiFranceBernardo Dominic PROPOSAL
Sinclair K GauchoAustraliaStephen Shaw NEGOTIATION
Leon I SlusarskiGermanyAsiya Javayant UNQUALIFIED
Emily A PaprockiCanadaIvan Magalhaes RENEWAL
Kaitlin D NickaArgentinaAsiya Javayant RENEWAL
Clifford T GauchoArgentinaIoni Bowcher PROPOSAL
Emily X PaprockiAustraliaIvan Magalhaes QUALIFIED
Silvio R MacleadJapanStephen Shaw RENEWAL
Ricardo Q VenereUnited KingdomIoni Bowcher UNQUALIFIED
Jennifer K OldroydItalyBernardo Dominic NEW
Kadeem X MacleadBrazilOnyama Limba UNQUALIFIED
Chavez L BriddickJapanStephen Shaw NEW
Salvatore F MaletBrazilIvan Magalhaes UNQUALIFIED
Julie Z DoeGermanyStephen Shaw QUALIFIED
Ricardo H KuskoBrazilElwin Sharvill NEGOTIATION
Smith K GillianSpainAsiya Javayant RENEWAL
Maria C OldroydJapanAsiya Javayant QUALIFIED
Deepesh L MorascaArgentinaOnyama Limba RENEWAL
Jennifer W MorascaBrazilOnyama Limba NEGOTIATION
Claire H BologniaSpainStephen Shaw UNQUALIFIED
Salvatore G KuskoUnited KingdomAnna Fali UNQUALIFIED
Maria D OstroskySpainElwin Sharvill NEGOTIATION
Rodrigues S MaletUnited KingdomIvan Magalhaes QUALIFIED
Faith G GauchoArgentinaAmy Elsner NEGOTIATION
Jennifer Z WieserCanadaAsiya Javayant PROPOSAL
Greenwood H RoysterGermanyElwin Sharvill RENEWAL
Aika F MaletAustraliaXuxue Feng RENEWAL
Francesco N SergiCanadaElwin Sharvill QUALIFIED
Francesco L MaletFranceBernardo Dominic NEGOTIATION
David E ShinkoItalyIvan Magalhaes NEW
Jennifer L PoquetteSpainIoni Bowcher NEGOTIATION
Arvin U CaldareraIndiaAnna Fali NEGOTIATION
Claire S IturbideUnited KingdomBernardo Dominic UNQUALIFIED
James B BriddickRussiaAnna Fali PROPOSAL
Jennifer O RutaAustraliaAsiya Javayant UNQUALIFIED
Rodrigues G GarufiFranceAsiya Javayant NEW
Aika F VenereCanadaOnyama Limba UNQUALIFIED
Jones L GauchoAustraliaElwin Sharvill PROPOSAL
Antonio G WieserRussiaOnyama Limba PROPOSAL
Francesco M PaprockiSpainStephen Shaw RENEWAL
Emily F RutaSpainElwin Sharvill NEW
Antonio F BowleyIndiaAnna Fali QUALIFIED
Frozen Columns
Name
Jefferson H Kolmetz
Clifford T Campain
Morrow Q Amigon
Mujtaba K Whobrey
Juan J Butt
David K Garufi
Octavia S Schemmer
Leja Y Waycott
Maria M Malet
Salvatore X Saylors
Smith F Gaucho
Julie R Tollner
Chavez B Bolognia
Stacey K Oldroyd
Salvatore T Rulapaugh
Nicolas R Royster
Salvatore S Schemmer
Munro U Schemmer
Tony C Waycott
Darci P Glick
Smith K Stenseth
Aruna R Sergi
Wickens U Perin
Aika J Rulapaugh
Munro K Caudy
Greenwood P Inouye
Munro O Butt
Murillo H Waycott
Costa E Poquette
Morrow I Stockham
Francesco H Schemmer
Mujtaba X Stockham
Aruna W Inouye
Johnson J Chui
Aditya D Amigon
Johnson Y Malet
Leja G Nicka
Munro B Venere
Costa S Inouye
Aruna R Glick
James C Campain
Jones S Sergi
David S Flosi
Kadeem Y Wieser
Julie P Perin
Aika F Whobrey
Faith Z Malet
Leon K Perin
Tony V Ruta
Alejandro V Oldroyd
IdCountryDate
1000Germany2024-05-01
1001Italy2024-04-16
1002France2024-05-01
1003United Kingdom2024-04-20
1004Germany2024-05-09
1005United Kingdom2024-04-21
1006France2024-05-12
1007Brazil2024-05-03
1008Japan2024-05-08
1009Italy2024-04-26
1010Russia2024-05-12
1011Argentina2024-04-16
1012Spain2024-05-12
1013Argentina2024-04-27
1014United Kingdom2024-04-24
1015Germany2024-04-24
1016Germany2024-04-20
1017Brazil2024-04-29
1018Germany2024-05-04
1019United Kingdom2024-04-18
1020Brazil2024-05-06
1021United Kingdom2024-04-20
1022India2024-05-07
1023Canada2024-05-06
1024France2024-05-06
1025Spain2024-04-30
1026United Kingdom2024-04-21
1027India2024-04-28
1028France2024-04-23
1029Spain2024-05-13
1030Canada2024-04-17
1031Japan2024-04-22
1032Brazil2024-05-12
1033Spain2024-04-28
1034Germany2024-05-11
1035United Kingdom2024-04-23
1036United Kingdom2024-05-02
1037Argentina2024-04-26
1038Argentina2024-04-24
1039India2024-04-29
1040Brazil2024-04-16
1041Australia2024-04-17
1042Brazil2024-04-19
1043Australia2024-05-07
1044Russia2024-04-21
1045Brazil2024-04-25
1046United Kingdom2024-04-23
1047Argentina2024-04-19
1048United Kingdom2024-05-11
1049Canada2024-04-23

On-Demand Data

NameIdCountryDate
Smith G Figeroa1000Brazil2024-05-05
Johnson K Poquette1001Japan2024-05-13
Arvin M Flosi1002France2024-04-22
Mayumi C Oldroyd1003Spain2024-05-11
Murillo K Tollner1004Russia2024-04-24
Ashley T Rulapaugh1005United Kingdom2024-05-14
Costa Z Nestle1006Argentina2024-04-25
Julie G Royster1007Germany2024-05-11
Kaitlin I Caudy1008Canada2024-04-23
Leon H Kusko1009France2024-04-29
Morrow O Briddick1010United Kingdom2024-04-30
Francesco U Figeroa1011Italy2024-05-09
Jefferson C Oldroyd1012Russia2024-04-19
Aruna M Butt1013Russia2024-05-02
Claire A Foller1014Canada2024-05-12
Greenwood Y Venere1015Canada2024-05-13
Ricardo N Bowley1016Canada2024-04-20
Kaitlin O Glick1017Australia2024-05-02
Misaki Y Schemmer1018India2024-04-27
Adams T Malet1019Australia2024-04-21
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Misaki S BriddickBrazilBernardo Dominic UNQUALIFIED
David K CaudyCanadaElwin Sharvill QUALIFIED
Aditya R DoeRussiaAmy Elsner NEW
Juan Q CaudyItalyAsiya Javayant QUALIFIED
Clifford Y FlosiRussiaIoni Bowcher PROPOSAL
Mujtaba B SaylorsRussiaElwin Sharvill PROPOSAL
Greenwood M SaylorsJapanAnna Fali RENEWAL
Salvatore I VocelkaItalyBernardo Dominic QUALIFIED
Juan A StensethFranceIoni Bowcher QUALIFIED
Morrow E NestleBrazilStephen Shaw PROPOSAL
Ashley O StensethGermanyIvan Magalhaes PROPOSAL
Greenwood L OstroskySpainIoni Bowcher QUALIFIED
Juan L BowleyBrazilOnyama Limba PROPOSAL
Kadeem Y InouyeAustraliaBernardo Dominic NEGOTIATION
Julie B BowleyBrazilStephen Shaw RENEWAL
Leja G RutaAustraliaIoni Bowcher PROPOSAL
Jennifer D MarrierAustraliaBernardo Dominic UNQUALIFIED
Costa C OstroskyArgentinaAsiya Javayant UNQUALIFIED
Misaki Y BologniaJapanBernardo Dominic RENEWAL
Arvin C TollnerCanadaOnyama Limba QUALIFIED
Jefferson X CaudyRussiaXuxue Feng NEW
Darci O CampainFranceIvan Magalhaes NEGOTIATION
Maria M KuskoBrazilIvan Magalhaes UNQUALIFIED
Kadeem D MaletIndiaAsiya Javayant RENEWAL
Aika K ButtRussiaOnyama Limba NEGOTIATION
Aditya R BowleyUnited KingdomElwin Sharvill NEGOTIATION
Morrow U WaycottSpainElwin Sharvill NEGOTIATION
Ivar E SergiAustraliaAmy Elsner UNQUALIFIED
Aditya W SlusarskiItalyAmy Elsner RENEWAL
Kadeem E SchemmerRussiaOnyama Limba RENEWAL
Octavia Q WieserGermanyXuxue Feng NEGOTIATION
Stacey F NickaFranceIvan Magalhaes NEGOTIATION
Costa P BowleyFranceBernardo Dominic NEGOTIATION
Cody M TollnerIndiaXuxue Feng NEGOTIATION
Ivar V DilliardItalyAsiya Javayant NEW
Juan J KuskoCanadaIvan Magalhaes NEW
Cody G IturbideCanadaElwin Sharvill PROPOSAL
Aika V WaycottCanadaIoni Bowcher NEGOTIATION
Jeanfrancois Q DarakjyArgentinaXuxue Feng NEGOTIATION
Julie J BowleyFranceAnna Fali PROPOSAL

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