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
Faith H StensethUnited KingdomAmy Elsner UNQUALIFIED
Arvin X FollerRussiaAnna Fali UNQUALIFIED
Ashley T SaylorsGermanyBernardo Dominic NEW
Clifford K ShinkoArgentinaAnna Fali NEGOTIATION
Ashley P MarrierUnited KingdomAsiya Javayant RENEWAL
Jefferson K ButtGermanyStephen Shaw QUALIFIED
Kadeem L ButtFranceStephen Shaw NEGOTIATION
Morrow U BriddickRussiaIvan Magalhaes NEW
Emily S AmigonCanadaOnyama Limba RENEWAL
David B SlusarskiRussiaAsiya Javayant RENEWAL
Francesco I FlosiJapanBernardo Dominic PROPOSAL
Juan M SchemmerJapanOnyama Limba QUALIFIED
Johnson M AlbaresRussiaOnyama Limba QUALIFIED
Morrow I GauchoCanadaStephen Shaw RENEWAL
Izzy D TollnerSpainIvan Magalhaes NEW
Jeanfrancois S SchemmerJapanAmy Elsner NEGOTIATION
Faith S ChuiArgentinaAmy Elsner PROPOSAL
Johnson G GillianBrazilAmy Elsner RENEWAL
Juan N SergiBrazilElwin Sharvill PROPOSAL
David M MaletRussiaAnna Fali RENEWAL
Jefferson T RulapaughSpainBernardo Dominic NEGOTIATION
Aruna M MacleadIndiaIvan Magalhaes RENEWAL
Mayumi W RoysterAustraliaAsiya Javayant QUALIFIED
Ashley R TollnerFranceBernardo Dominic NEGOTIATION
Murillo E VenereCanadaOnyama Limba QUALIFIED
Leon B AmigonUnited KingdomXuxue Feng QUALIFIED
Leja O FerenczAustraliaStephen Shaw PROPOSAL
Jefferson U GillianItalyXuxue Feng NEW
Francesco X PoquetteItalyOnyama Limba RENEWAL
Darci H VenereCanadaOnyama Limba UNQUALIFIED
Rodrigues G GlickAustraliaOnyama Limba NEW
Salvatore I DoeRussiaAmy Elsner NEGOTIATION
Aditya P NickaGermanyBernardo Dominic RENEWAL
Juan E StensethCanadaAmy Elsner QUALIFIED
Sinclair H RutaUnited KingdomOnyama Limba QUALIFIED
Ricardo M ChuiUnited KingdomOnyama Limba NEW
James Y VenereGermanyAnna Fali NEW
Deepesh O CampainUnited KingdomOnyama Limba NEW
Wickens I ChuiGermanyStephen Shaw QUALIFIED
Morrow L OstroskyGermanyOnyama Limba UNQUALIFIED
Faith O SlusarskiJapanElwin Sharvill NEW
Cody P SaylorsSpainXuxue Feng RENEWAL
Salvatore P MorascaIndiaXuxue Feng UNQUALIFIED
Darci X ButtArgentinaElwin Sharvill QUALIFIED
Jones H RulapaughGermanyXuxue Feng NEW
Izzy K ButtGermanyStephen Shaw PROPOSAL
Octavia O FerenczJapanBernardo Dominic PROPOSAL
Leon B StockhamGermanyIvan Magalhaes QUALIFIED
Deepesh S FlosiBrazilStephen Shaw RENEWAL
Isabel A BriddickIndiaIvan Magalhaes NEW
Horizontal
NameCountryRepresentativeStatus
Emily A OldroydCanadaIvan Magalhaes NEW
Francesco N CaudyBrazilOnyama Limba NEGOTIATION
Deepesh J CaldareraCanadaAmy Elsner QUALIFIED
Maria N BowleyCanadaOnyama Limba UNQUALIFIED
Sinclair S StockhamSpainOnyama Limba QUALIFIED
Emily L AlbaresAustraliaAsiya Javayant UNQUALIFIED
Aruna K VocelkaUnited KingdomBernardo Dominic RENEWAL
Aika Y CampainAustraliaAmy Elsner PROPOSAL
Johnson E RutaRussiaStephen Shaw NEGOTIATION
Leja L RutaBrazilOnyama Limba QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Salvatore V RulapaughRussia2024-04-05Morlong Associates QUALIFIED34Asiya Javayant
1001Cody V GauchoItaly2024-04-19Truhlar And Truhlar Attys RENEWAL53Onyama Limba
1002Aika U ChuiAustralia2024-04-21Rousseaux, Michael Esq NEGOTIATION92Bernardo Dominic
1003Ricardo D BriddickArgentina2024-04-07Printing Dimensions NEGOTIATION28Anna Fali
1004Costa H DilliardItaly2024-04-24Feiner Bros PROPOSAL49Ioni Bowcher
1005Maria G PerinCanada2024-04-19Dorl, James J Esq PROPOSAL47Asiya Javayant
1006Rodrigues U BriddickAustralia2024-04-17Benton, John B Jr NEGOTIATION51Amy Elsner
1007Kaitlin J SlusarskiBrazil2024-04-16Chemel, James L Cpa NEW92Amy Elsner
1008Faith U RutaCanada2024-04-18Dorl, James J Esq NEW20Xuxue Feng
1009Munro V KolmetzRussia2024-04-06Dorl, James J Esq PROPOSAL13Anna Fali
1010Adams R IturbideJapan2024-04-02Buckley Miller Wright QUALIFIED90Ivan Magalhaes
1011David W VocelkaRussia2024-03-31Printing Dimensions RENEWAL55Asiya Javayant
1012Adams A MaletArgentina2024-04-07Feiner Bros QUALIFIED17Amy Elsner
1013Rodrigues Q ShinkoFrance2024-04-09Printing Dimensions UNQUALIFIED45Xuxue Feng
1014Murillo N NestleBrazil2024-04-23Rangoni Of Florence NEW11Stephen Shaw
1015Darci S GarufiSpain2024-04-19Feltz Printing Service RENEWAL73Asiya Javayant
1016David A GauchoCanada2024-04-25Morlong Associates QUALIFIED96Ioni Bowcher
1017Kadeem N AlbaresJapan2024-03-27Morlong Associates UNQUALIFIED1Stephen Shaw
1018Leon S DoeArgentina2024-04-07Printing Dimensions UNQUALIFIED19Ivan Magalhaes
1019Stacey C VocelkaArgentina2024-04-03Commercial Press QUALIFIED17Asiya Javayant
1020Aika U StensethUnited Kingdom2024-04-16Feltz Printing Service RENEWAL9Ioni Bowcher
1021Nicolas L MacleadArgentina2024-03-28Benton, John B Jr PROPOSAL22Xuxue Feng
1022Smith V InouyeSpain2024-04-01Feiner Bros PROPOSAL4Elwin Sharvill
1023Isabel W SergiAustralia2024-04-02Buckley Miller Wright NEGOTIATION61Ivan Magalhaes
1024Emily O KuskoJapan2024-04-20Benton, John B Jr QUALIFIED57Ioni Bowcher
1025Misaki H FigeroaGermany2024-04-12Chapman, Ross E Esq RENEWAL63Stephen Shaw
1026Mujtaba S OldroydJapan2024-04-16Truhlar And Truhlar Attys UNQUALIFIED13Asiya Javayant
1027Chavez U RoysterJapan2024-04-22Dorl, James J Esq RENEWAL99Asiya Javayant
1028James X GillianArgentina2024-04-13Buckley Miller Wright PROPOSAL23Elwin Sharvill
1029David G SchemmerJapan2024-04-09Rousseaux, Michael Esq NEGOTIATION15Elwin Sharvill
1030David O SaylorsGermany2024-04-02Chanay, Jeffrey A Esq RENEWAL36Bernardo Dominic
1031Leja R AmigonJapan2024-04-13Chapman, Ross E Esq UNQUALIFIED85Ivan Magalhaes
1032Jefferson F MaletAustralia2024-03-31Benton, John B Jr NEW30Onyama Limba
1033Maisha K RoysterGermany2024-04-12Benton, John B Jr NEGOTIATION83Amy Elsner
1034Maria S MaletAustralia2024-04-24Morlong Associates PROPOSAL71Bernardo Dominic
1035Maria Y TollnerIndia2024-04-25Rousseaux, Michael Esq NEW25Xuxue Feng
1036Sinclair C MacleadJapan2024-03-31Feltz Printing Service NEGOTIATION44Bernardo Dominic
1037Sinclair U GillianBrazil2024-04-16Dorl, James J Esq RENEWAL32Asiya Javayant
1038Costa I FerenczGermany2024-04-23King, Christopher A Esq NEW73Amy Elsner
1039Munro F CampainUnited Kingdom2024-04-04Printing Dimensions QUALIFIED44Onyama Limba
1040Stacey R AlbaresUnited Kingdom2024-04-19King, Christopher A Esq UNQUALIFIED56Xuxue Feng
1041Mayumi F VenereArgentina2024-04-06Chanay, Jeffrey A Esq UNQUALIFIED92Stephen Shaw
1042Jeanfrancois L AmigonArgentina2024-04-03Benton, John B Jr QUALIFIED63Xuxue Feng
1043Emily H VenereJapan2024-04-21Chapman, Ross E Esq RENEWAL49Stephen Shaw
1044Nicolas C RulapaughBrazil2024-03-31Benton, John B Jr NEGOTIATION7Ivan Magalhaes
1045Cody V FerenczBrazil2024-04-20Feiner Bros RENEWAL23Amy Elsner
1046Darci O BowleyItaly2024-04-05Chapman, Ross E Esq NEGOTIATION98Asiya Javayant
1047Jones P DilliardSpain2024-04-19Dorl, James J Esq NEGOTIATION81Onyama Limba
1048Darci D BologniaCanada2024-04-22Rousseaux, Michael Esq PROPOSAL28Anna Fali
1049Kaitlin J IturbideSpain2024-04-16Rangoni Of Florence RENEWAL45Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Chavez N GlickIndiaElwin Sharvill PROPOSAL
Juan A DoeJapanIvan Magalhaes NEGOTIATION
Alejandro D VenereCanadaXuxue Feng UNQUALIFIED
Aditya M MacleadSpainAsiya Javayant UNQUALIFIED
Ivar K WhobreyJapanStephen Shaw RENEWAL
Aika V MacleadBrazilAsiya Javayant NEW
Jefferson B FollerSpainBernardo Dominic NEW
Johnson P BriddickAustraliaAnna Fali NEW
Morrow G MarrierSpainOnyama Limba NEGOTIATION
Jefferson T StensethSpainIoni Bowcher RENEWAL
Deepesh K FerenczGermanyBernardo Dominic PROPOSAL
Ricardo M VocelkaRussiaOnyama Limba PROPOSAL
Stacey J AlbaresItalyAsiya Javayant UNQUALIFIED
Stacey N FlosiUnited KingdomAsiya Javayant QUALIFIED
Juan L NickaAustraliaAsiya Javayant NEW
Mujtaba Q SchemmerIndiaAsiya Javayant UNQUALIFIED
Aika F DilliardFranceAnna Fali QUALIFIED
Emily G FollerGermanyAnna Fali NEGOTIATION
Kadeem X DoeAustraliaBernardo Dominic QUALIFIED
Greenwood Q RulapaughJapanAnna Fali NEGOTIATION
Juan D RoysterFranceAmy Elsner NEGOTIATION
Julie H VocelkaBrazilOnyama Limba RENEWAL
Deepesh S PoquetteJapanBernardo Dominic PROPOSAL
Juan V SergiItalyBernardo Dominic NEGOTIATION
Ivar D ShinkoItalyIvan Magalhaes PROPOSAL
Juan Z AmigonGermanyOnyama Limba NEGOTIATION
Smith Y AmigonCanadaAnna Fali PROPOSAL
Chavez W CampainFranceOnyama Limba NEW
Julie D SlusarskiFranceBernardo Dominic RENEWAL
Salvatore N MorascaCanadaAmy Elsner NEGOTIATION
Stacey L ChuiIndiaXuxue Feng NEW
Greenwood D BowleyArgentinaIvan Magalhaes UNQUALIFIED
Munro V PoquetteUnited KingdomBernardo Dominic UNQUALIFIED
Costa R MarrierUnited KingdomAmy Elsner NEW
Chavez C SaylorsAustraliaStephen Shaw NEW
Misaki K RutaAustraliaOnyama Limba NEGOTIATION
Antonio K RimFranceIvan Magalhaes PROPOSAL
Cody V NickaArgentinaOnyama Limba PROPOSAL
Jefferson N IturbideCanadaElwin Sharvill QUALIFIED
James T GillianFranceXuxue Feng PROPOSAL
Ivar U MorascaSpainIvan Magalhaes UNQUALIFIED
David T RoysterJapanIvan Magalhaes PROPOSAL
Kadeem P PoquetteFranceOnyama Limba QUALIFIED
Maria Q ShinkoArgentinaXuxue Feng UNQUALIFIED
Claire Y StockhamSpainIvan Magalhaes NEW
Maisha W RoysterSpainXuxue Feng NEW
Kadeem M PerinBrazilAsiya Javayant NEGOTIATION
Tony K StensethBrazilIoni Bowcher QUALIFIED
David W GillianUnited KingdomElwin Sharvill UNQUALIFIED
Silvio E SaylorsArgentinaXuxue Feng NEGOTIATION
Frozen Columns
Name
Juan X Glick
Claire F Flosi
Alejandro P Inouye
Wickens T Briddick
Smith S Dilliard
Isabel M Ferencz
Kadeem Q Marrier
Maisha Q Tollner
Antonio F Shinko
Juan F Oldroyd
Costa B Tollner
Sinclair D Venere
Aruna W Garufi
Aika H Shinko
Adams Y Venere
Darci J Albares
Kadeem D Inouye
Aruna U Royster
Silvio A Sergi
Kaitlin N Ferencz
Leja M Poquette
Kadeem K Foller
Jeanfrancois N Nestle
Izzy Z Nestle
Ricardo J Malet
Deepesh F Ostrosky
Izzy K Gaucho
Salvatore X Amigon
Ashley W Rim
Kadeem H Dilliard
Darci J Butt
Maisha Z Schemmer
Leon N Figeroa
Maria Q Wieser
Adams U Gillian
Smith S Figeroa
James U Tollner
Jefferson Z Ruta
Julie R Butt
Aika S Ruta
Ashley O Caldarera
Clifford Z Marrier
James P Darakjy
Sinclair S Nicka
Wickens E Ruta
Ashley F Flosi
James N Iturbide
Munro T Caldarera
Smith B Ostrosky
Maria E Paprocki
IdCountryDate
1000Argentina2024-04-12
1001Australia2024-04-17
1002Italy2024-04-02
1003Germany2024-04-08
1004Argentina2024-04-13
1005Spain2024-04-09
1006Canada2024-04-07
1007France2024-03-31
1008Japan2024-03-31
1009Spain2024-04-12
1010Italy2024-03-31
1011Japan2024-04-19
1012France2024-04-20
1013Australia2024-04-06
1014Canada2024-03-30
1015Argentina2024-04-03
1016Italy2024-03-29
1017United Kingdom2024-04-21
1018Spain2024-04-10
1019Australia2024-03-29
1020Australia2024-04-17
1021United Kingdom2024-04-13
1022Argentina2024-04-11
1023Canada2024-04-06
1024Australia2024-04-11
1025Brazil2024-04-10
1026Russia2024-03-27
1027Germany2024-04-19
1028United Kingdom2024-04-16
1029Brazil2024-04-08
1030United Kingdom2024-04-17
1031United Kingdom2024-04-23
1032Brazil2024-04-25
1033Japan2024-04-10
1034Argentina2024-03-27
1035United Kingdom2024-04-16
1036United Kingdom2024-04-01
1037Spain2024-04-04
1038Germany2024-04-25
1039Argentina2024-04-01
1040Canada2024-04-08
1041Australia2024-04-04
1042France2024-03-30
1043Canada2024-04-03
1044Spain2024-04-13
1045France2024-04-24
1046Japan2024-04-07
1047Argentina2024-04-10
1048Australia2024-04-22
1049United Kingdom2024-04-16

On-Demand Data

NameIdCountryDate
Sinclair S Malet1000Japan2024-03-29
Costa F Albares1001Brazil2024-04-12
Cody K Dilliard1002Spain2024-04-22
Smith Y Caldarera1003Germany2024-04-13
Emily L Darakjy1004Russia2024-04-12
Morrow Q Rulapaugh1005Spain2024-03-29
Salvatore S Ferencz1006Brazil2024-04-14
Adams I Garufi1007Brazil2024-04-15
Costa M Amigon1008Spain2024-04-21
Sinclair T Amigon1009Italy2024-04-21
Chavez D Bowley1010Brazil2024-04-01
Julie E Malet1011Germany2024-04-09
Murillo A Bowley1012Russia2024-04-25
Claire K Rulapaugh1013Argentina2024-04-13
Kaitlin K Morasca1014Canada2024-04-07
Jones D Stockham1015Brazil2024-04-16
Deepesh S Rulapaugh1016Japan2024-03-30
Ivar F Stockham1017France2024-04-06
James P Campain1018Germany2024-04-21
Faith I Vocelka1019Argentina2024-04-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Salvatore I FollerSpainOnyama Limba RENEWAL
Ashley V CampainFranceIvan Magalhaes NEGOTIATION
Ricardo X ChuiItalyIvan Magalhaes QUALIFIED
Mujtaba T StockhamIndiaStephen Shaw PROPOSAL
Clifford J PerinSpainBernardo Dominic RENEWAL
Nicolas O OstroskyGermanyAmy Elsner QUALIFIED
Juan S MarrierFranceIoni Bowcher QUALIFIED
Julie O DarakjyAustraliaAmy Elsner PROPOSAL
Stacey S BologniaUnited KingdomElwin Sharvill UNQUALIFIED
Octavia I StockhamAustraliaAsiya Javayant PROPOSAL
Silvio L BologniaUnited KingdomAmy Elsner QUALIFIED
Juan S BowleyAustraliaBernardo Dominic UNQUALIFIED
Aditya R MacleadItalyAsiya Javayant NEGOTIATION
Ricardo T WaycottAustraliaIvan Magalhaes RENEWAL
Deepesh I VenereRussiaIoni Bowcher NEW
Nicolas F DarakjyUnited KingdomAnna Fali UNQUALIFIED
James Q DarakjyCanadaIoni Bowcher NEW
Aditya F PaprockiCanadaAsiya Javayant PROPOSAL
Stacey Z InouyeArgentinaOnyama Limba NEW
Salvatore T RulapaughArgentinaAmy Elsner QUALIFIED
David H BologniaRussiaIoni Bowcher QUALIFIED
Misaki L KuskoArgentinaIoni Bowcher PROPOSAL
Ashley L DilliardIndiaElwin Sharvill PROPOSAL
Chavez C FerenczItalyAmy Elsner RENEWAL
Ivar X WaycottItalyElwin Sharvill PROPOSAL
Juan O RulapaughItalyAsiya Javayant NEGOTIATION
Julie Z MorascaGermanyAmy Elsner RENEWAL
Juan Q RutaAustraliaIvan Magalhaes NEGOTIATION
Sinclair J DoeFranceStephen Shaw RENEWAL
Chavez J MorascaFranceXuxue Feng PROPOSAL
Alejandro S PerinArgentinaElwin Sharvill NEW
Murillo R SergiBrazilAnna Fali NEGOTIATION
Leon P DilliardIndiaAsiya Javayant UNQUALIFIED
Arvin N RoysterFranceAmy Elsner NEW
Salvatore E VocelkaAustraliaIoni Bowcher NEW
Antonio J CaudySpainIvan Magalhaes QUALIFIED
Tony X FlosiBrazilElwin Sharvill NEW
Murillo I OldroydArgentinaAsiya Javayant RENEWAL
Claire E WieserJapanElwin Sharvill UNQUALIFIED
Leon B SaylorsAustraliaIvan Magalhaes 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>