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
Sinclair M DoeFranceStephen Shaw NEGOTIATION
Jefferson P DoeAustraliaStephen Shaw PROPOSAL
Maria W SlusarskiAustraliaOnyama Limba NEW
Chavez G AlbaresBrazilIoni Bowcher UNQUALIFIED
David Z CampainCanadaOnyama Limba NEGOTIATION
Jefferson L InouyeArgentinaAmy Elsner RENEWAL
Alejandro X MarrierRussiaStephen Shaw PROPOSAL
Jefferson C WhobreyIndiaXuxue Feng NEGOTIATION
Deepesh U BowleyArgentinaElwin Sharvill NEW
Kadeem N SaylorsRussiaAnna Fali NEGOTIATION
Faith B StensethCanadaIoni Bowcher UNQUALIFIED
Jefferson T GarufiSpainBernardo Dominic RENEWAL
Morrow C RutaJapanAmy Elsner NEW
Jeanfrancois Q CampainIndiaAsiya Javayant RENEWAL
Kaitlin F AlbaresRussiaAmy Elsner PROPOSAL
Darci N RimRussiaIvan Magalhaes UNQUALIFIED
Munro O RulapaughFranceBernardo Dominic QUALIFIED
Stacey Z VocelkaBrazilIoni Bowcher NEW
Francesco O OldroydUnited KingdomAsiya Javayant RENEWAL
Arvin J PoquetteRussiaIvan Magalhaes NEW
Kaitlin P WieserFranceOnyama Limba QUALIFIED
Jefferson N ButtBrazilAsiya Javayant NEGOTIATION
Julie R DilliardFranceIoni Bowcher QUALIFIED
James K BologniaArgentinaIoni Bowcher NEW
Jefferson A GlickBrazilIoni Bowcher NEGOTIATION
Aruna S StensethRussiaElwin Sharvill QUALIFIED
Chavez T MacleadIndiaAnna Fali RENEWAL
Claire V MaletRussiaIvan Magalhaes PROPOSAL
Salvatore G BriddickSpainStephen Shaw QUALIFIED
Isabel P OstroskyCanadaIoni Bowcher NEGOTIATION
Juan C BologniaItalyIvan Magalhaes UNQUALIFIED
Johnson F GillianSpainOnyama Limba QUALIFIED
Izzy H RimUnited KingdomXuxue Feng NEW
Emily V SlusarskiBrazilAmy Elsner QUALIFIED
Octavia X WieserJapanBernardo Dominic NEW
Juan T SaylorsAustraliaStephen Shaw QUALIFIED
Chavez I PerinArgentinaIoni Bowcher RENEWAL
Tony D WhobreyItalyOnyama Limba UNQUALIFIED
Nicolas U FigeroaItalyBernardo Dominic QUALIFIED
Julie V VocelkaRussiaAsiya Javayant RENEWAL
Maria Q IturbideRussiaIoni Bowcher UNQUALIFIED
Francesco Y InouyeRussiaStephen Shaw QUALIFIED
Nicolas S WieserArgentinaStephen Shaw NEGOTIATION
Julie E MacleadGermanyOnyama Limba RENEWAL
Stacey Z InouyeFranceElwin Sharvill NEW
Antonio L SlusarskiJapanAmy Elsner QUALIFIED
Isabel D InouyeRussiaIvan Magalhaes PROPOSAL
Adams U SlusarskiItalyStephen Shaw NEGOTIATION
Antonio T FollerJapanIoni Bowcher QUALIFIED
Clifford D StensethCanadaOnyama Limba QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Francesco Z MarrierJapanOnyama Limba RENEWAL
Costa I WhobreyUnited KingdomAnna Fali NEW
Jeanfrancois S StockhamSpainXuxue Feng UNQUALIFIED
Clifford I KuskoUnited KingdomAsiya Javayant UNQUALIFIED
Darci C FlosiSpainAnna Fali UNQUALIFIED
Antonio O SlusarskiItalyBernardo Dominic RENEWAL
Tony S GauchoRussiaStephen Shaw QUALIFIED
Smith Z RulapaughItalyAsiya Javayant UNQUALIFIED
Mujtaba M OstroskyAustraliaXuxue Feng NEW
Chavez A InouyeRussiaElwin Sharvill UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Costa E OldroydJapan2024-04-17Feiner Bros NEW15Bernardo Dominic
1001Claire E SlusarskiGermany2024-04-06Feltz Printing Service RENEWAL51Asiya Javayant
1002Costa H MacleadBrazil2024-04-10Dorl, James J Esq NEGOTIATION96Amy Elsner
1003Adams X FigeroaSpain2024-04-14Buckley Miller Wright RENEWAL65Bernardo Dominic
1004Maria L CampainItaly2024-04-27Benton, John B Jr NEW6Onyama Limba
1005David J CaudyArgentina2024-04-23Morlong Associates UNQUALIFIED11Anna Fali
1006Faith P MaletItaly2024-04-07Printing Dimensions PROPOSAL59Xuxue Feng
1007Rodrigues A DarakjyAustralia2024-03-31Chapman, Ross E Esq QUALIFIED63Asiya Javayant
1008Johnson K SergiRussia2024-04-27Printing Dimensions NEW43Onyama Limba
1009Maria H DarakjyJapan2024-04-02Chapman, Ross E Esq UNQUALIFIED7Stephen Shaw
1010Costa R MarrierGermany2024-04-03Benton, John B Jr RENEWAL21Elwin Sharvill
1011Costa X MorascaGermany2024-04-06Benton, John B Jr NEGOTIATION42Bernardo Dominic
1012Chavez W MarrierJapan2024-04-26Dorl, James J Esq QUALIFIED74Bernardo Dominic
1013Morrow P FerenczItaly2024-04-23Dorl, James J Esq RENEWAL3Onyama Limba
1014Leja U FerenczSpain2024-03-30Truhlar And Truhlar Attys QUALIFIED58Ivan Magalhaes
1015Julie V ShinkoUnited Kingdom2024-04-06Benton, John B Jr NEW0Asiya Javayant
1016David K ButtUnited Kingdom2024-04-07Feltz Printing Service PROPOSAL71Stephen Shaw
1017Ashley N NestleFrance2024-04-09Feiner Bros NEW34Xuxue Feng
1018Tony V MarrierGermany2024-04-15Commercial Press NEW68Onyama Limba
1019Faith I WieserSpain2024-04-01Truhlar And Truhlar Attys NEGOTIATION32Stephen Shaw
1020Clifford M StockhamFrance2024-04-20Benton, John B Jr PROPOSAL30Ioni Bowcher
1021Mujtaba C SergiRussia2024-04-24Dorl, James J Esq RENEWAL50Amy Elsner
1022Kadeem L WieserUnited Kingdom2024-04-16Printing Dimensions NEW85Elwin Sharvill
1023Silvio B MaletArgentina2024-04-06Morlong Associates QUALIFIED5Ioni Bowcher
1024Ashley A MaletUnited Kingdom2024-04-13Dorl, James J Esq UNQUALIFIED67Xuxue Feng
1025Adams S VenereAustralia2024-04-18Feiner Bros NEW55Onyama Limba
1026Adams N RimArgentina2024-04-14Morlong Associates NEW98Ioni Bowcher
1027Isabel E TollnerGermany2024-04-02Feltz Printing Service NEGOTIATION44Asiya Javayant
1028Costa I GauchoCanada2024-04-04Rangoni Of Florence UNQUALIFIED97Onyama Limba
1029Wickens X FollerJapan2024-03-31Buckley Miller Wright PROPOSAL18Stephen Shaw
1030Emily H WhobreyCanada2024-04-14Rangoni Of Florence UNQUALIFIED36Elwin Sharvill
1031Murillo W SaylorsGermany2024-04-08Feltz Printing Service QUALIFIED30Asiya Javayant
1032Aika J DilliardJapan2024-04-07Benton, John B Jr RENEWAL47Onyama Limba
1033Ivar B OldroydArgentina2024-04-03Dorl, James J Esq NEW57Elwin Sharvill
1034Misaki C KolmetzArgentina2024-04-15Commercial Press RENEWAL14Ivan Magalhaes
1035Juan V StensethRussia2024-04-01Rangoni Of Florence NEGOTIATION50Anna Fali
1036Greenwood M RoysterBrazil2024-04-04Benton, John B Jr NEW51Anna Fali
1037Costa U RimSpain2024-04-16Printing Dimensions UNQUALIFIED4Ioni Bowcher
1038Misaki H StensethFrance2024-04-14Rangoni Of Florence QUALIFIED41Xuxue Feng
1039Faith W RoysterIndia2024-04-14King, Christopher A Esq RENEWAL58Asiya Javayant
1040Salvatore L IturbideGermany2024-04-12Feltz Printing Service NEGOTIATION63Onyama Limba
1041Antonio Z AmigonRussia2024-04-05Feiner Bros RENEWAL72Anna Fali
1042Isabel U StensethAustralia2024-04-04Rousseaux, Michael Esq NEGOTIATION89Onyama Limba
1043Faith S VenereUnited Kingdom2024-04-01King, Christopher A Esq NEW68Ioni Bowcher
1044Morrow V GarufiBrazil2024-04-22Chanay, Jeffrey A Esq QUALIFIED75Asiya Javayant
1045Morrow G AmigonAustralia2024-03-30Printing Dimensions PROPOSAL39Anna Fali
1046Aruna Y IturbideFrance2024-04-04Chanay, Jeffrey A Esq NEGOTIATION84Amy Elsner
1047Aika F FigeroaUnited Kingdom2024-04-19Chapman, Ross E Esq QUALIFIED77Amy Elsner
1048Misaki Y GlickGermany2024-04-10Buckley Miller Wright RENEWAL8Elwin Sharvill
1049Munro U AlbaresBrazil2024-03-30Feltz Printing Service RENEWAL4Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Costa S StockhamArgentinaXuxue Feng PROPOSAL
Costa W SlusarskiItalyIvan Magalhaes RENEWAL
Aika Y BowleyCanadaElwin Sharvill QUALIFIED
Adams O GlickAustraliaStephen Shaw NEW
Jefferson N CaldareraCanadaStephen Shaw QUALIFIED
Munro P FigeroaAustraliaElwin Sharvill NEW
Chavez D IturbideFranceBernardo Dominic UNQUALIFIED
Jeanfrancois C VocelkaItalyOnyama Limba QUALIFIED
Deepesh K CaldareraAustraliaAnna Fali NEW
Greenwood F PaprockiUnited KingdomAmy Elsner NEGOTIATION
Ivar U MaletAustraliaStephen Shaw PROPOSAL
Jones U VocelkaIndiaAnna Fali UNQUALIFIED
Faith R GauchoIndiaIvan Magalhaes NEGOTIATION
Greenwood X IturbideRussiaStephen Shaw UNQUALIFIED
Jennifer G FlosiIndiaIvan Magalhaes PROPOSAL
Jones F GauchoJapanAsiya Javayant QUALIFIED
Clifford S FerenczSpainIvan Magalhaes UNQUALIFIED
Stacey E CaldareraBrazilAmy Elsner UNQUALIFIED
Francesco V MaletUnited KingdomElwin Sharvill QUALIFIED
Maisha I FerenczGermanyStephen Shaw UNQUALIFIED
Aruna Y NestleGermanyAsiya Javayant NEW
Munro H SlusarskiAustraliaElwin Sharvill NEW
Aditya G InouyeAustraliaOnyama Limba RENEWAL
Morrow P KolmetzCanadaStephen Shaw PROPOSAL
Francesco S CaldareraJapanAnna Fali PROPOSAL
Sinclair R PerinArgentinaAmy Elsner QUALIFIED
Jones D StockhamGermanyIvan Magalhaes NEW
Maisha Y DilliardRussiaOnyama Limba PROPOSAL
Emily C AlbaresSpainIvan Magalhaes UNQUALIFIED
Rodrigues W BologniaArgentinaAmy Elsner NEW
Jeanfrancois P NestleCanadaAmy Elsner UNQUALIFIED
Claire L SchemmerArgentinaOnyama Limba QUALIFIED
Ricardo V FigeroaArgentinaIvan Magalhaes QUALIFIED
Sinclair Z OldroydIndiaStephen Shaw QUALIFIED
Greenwood U NestleBrazilAmy Elsner NEGOTIATION
Ivar Z GlickUnited KingdomAmy Elsner NEGOTIATION
Cody Q PerinGermanyElwin Sharvill NEW
Nicolas W IturbideFranceAsiya Javayant UNQUALIFIED
Isabel I TollnerGermanyIvan Magalhaes NEGOTIATION
Salvatore Z ShinkoCanadaIoni Bowcher NEGOTIATION
Alejandro Z MacleadAustraliaElwin Sharvill RENEWAL
Salvatore I AlbaresArgentinaIoni Bowcher NEGOTIATION
Izzy P DarakjyCanadaOnyama Limba NEW
Sinclair H WaycottJapanBernardo Dominic RENEWAL
Emily G FerenczSpainStephen Shaw NEW
Ricardo D WieserUnited KingdomElwin Sharvill PROPOSAL
Misaki K GlickUnited KingdomXuxue Feng NEGOTIATION
Smith W IturbideCanadaOnyama Limba NEGOTIATION
Isabel C MaletCanadaIoni Bowcher UNQUALIFIED
Adams M GlickAustraliaBernardo Dominic PROPOSAL
Frozen Columns
Name
Faith S Paprocki
Murillo Z Morasca
Alejandro U Flosi
Murillo D Rulapaugh
Aika L Inouye
Ashley I Albares
Izzy W Stenseth
Izzy V Poquette
Julie F Kusko
Jones G Gillian
Stacey T Glick
Costa K Ruta
Francesco Q Stenseth
Chavez C Dilliard
Emily M Darakjy
Ivar W Waycott
Kaitlin F Foller
Isabel F Figeroa
Sinclair F Bolognia
Cody U Paprocki
Wickens P Ostrosky
Jefferson Z Morasca
Morrow G Doe
Adams Y Garufi
Misaki Q Wieser
Ashley D Waycott
Mujtaba L Oldroyd
Alejandro M Flosi
Salvatore Y Gaucho
Morrow T Stenseth
Mayumi O Vocelka
Antonio Q Schemmer
Nicolas X Flosi
Rodrigues N Bolognia
Ashley E Albares
Jeanfrancois K Inouye
Kadeem Q Paprocki
Sinclair P Sergi
Antonio A Rim
David O Inouye
Emily K Amigon
Tony D Chui
Alejandro Y Malet
Julie C Bolognia
Julie T Maclead
Ashley E Nicka
Aditya G Marrier
Ivar F Malet
Izzy O Dilliard
Ivar B Gaucho
IdCountryDate
1000Germany2024-04-23
1001Germany2024-04-10
1002Italy2024-04-13
1003Brazil2024-04-15
1004Argentina2024-04-16
1005Russia2024-04-17
1006Russia2024-04-10
1007Canada2024-04-04
1008Australia2024-04-08
1009India2024-04-12
1010Russia2024-04-10
1011Argentina2024-04-24
1012Italy2024-04-03
1013France2024-04-10
1014France2024-04-23
1015United Kingdom2024-04-01
1016Russia2024-04-17
1017India2024-04-15
1018Germany2024-04-26
1019Russia2024-04-24
1020Brazil2024-04-21
1021Brazil2024-03-30
1022Spain2024-04-25
1023Japan2024-04-17
1024Spain2024-04-12
1025Russia2024-04-06
1026Russia2024-04-07
1027France2024-04-02
1028Italy2024-04-27
1029Spain2024-03-30
1030United Kingdom2024-04-26
1031India2024-04-24
1032Canada2024-04-09
1033India2024-04-07
1034Japan2024-04-20
1035Argentina2024-04-13
1036Japan2024-04-06
1037Canada2024-04-10
1038Japan2024-04-11
1039France2024-04-20
1040Australia2024-04-03
1041Brazil2024-04-14
1042Japan2024-04-27
1043Spain2024-04-01
1044United Kingdom2024-04-22
1045Japan2024-04-10
1046Russia2024-04-11
1047Brazil2024-04-07
1048Brazil2024-03-29
1049Spain2024-04-24

On-Demand Data

NameIdCountryDate
Julie G Shinko1000Russia2024-04-08
Francesco S Garufi1001India2024-04-11
Jones Z Rim1002Japan2024-04-14
Arvin L Caldarera1003India2024-04-08
Wickens J Iturbide1004Canada2024-04-15
Clifford J Butt1005France2024-04-09
Deepesh M Shinko1006Russia2024-04-25
Kaitlin S Venere1007Canada2024-04-06
Mujtaba T Flosi1008Russia2024-04-02
Smith F Kolmetz1009Brazil2024-04-12
Francesco Q Inouye1010Italy2024-04-16
Cody K Caldarera1011Spain2024-04-07
Aditya W Bowley1012Spain2024-04-10
Leja O Caldarera1013Brazil2024-03-30
Aditya I Rim1014Argentina2024-04-19
Smith B Ruta1015Japan2024-03-31
Darci I Nestle1016Argentina2024-04-05
Cody G Bolognia1017Italy2024-04-22
Aditya T Marrier1018Brazil2024-04-08
Jefferson F Tollner1019Canada2024-04-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Silvio H RimJapanAnna Fali UNQUALIFIED
Deepesh X BriddickRussiaXuxue Feng QUALIFIED
Jones Z ShinkoArgentinaXuxue Feng RENEWAL
Leja Y BowleyFranceElwin Sharvill NEGOTIATION
Isabel N WhobreyUnited KingdomIvan Magalhaes RENEWAL
Jeanfrancois A VocelkaFranceAsiya Javayant NEW
Alejandro M AmigonAustraliaAsiya Javayant PROPOSAL
Maisha I MacleadIndiaAmy Elsner RENEWAL
Aika I SaylorsUnited KingdomElwin Sharvill RENEWAL
Adams D WieserArgentinaBernardo Dominic UNQUALIFIED
Aruna Q PerinGermanyIvan Magalhaes UNQUALIFIED
Kaitlin M ShinkoIndiaAnna Fali PROPOSAL
Jennifer I InouyeItalyIvan Magalhaes PROPOSAL
Octavia L FerenczRussiaAnna Fali NEW
Emily R ButtIndiaAnna Fali UNQUALIFIED
Sinclair U FlosiBrazilOnyama Limba QUALIFIED
Claire Z ButtIndiaXuxue Feng QUALIFIED
Arvin Y SergiArgentinaElwin Sharvill PROPOSAL
Francesco T FlosiBrazilBernardo Dominic QUALIFIED
Aditya O GarufiItalyAnna Fali RENEWAL
Isabel Y KolmetzBrazilElwin Sharvill QUALIFIED
Ricardo A WhobreyJapanAnna Fali QUALIFIED
Munro X ShinkoUnited KingdomBernardo Dominic NEW
Leon T OstroskyIndiaIoni Bowcher QUALIFIED
Isabel L KolmetzUnited KingdomOnyama Limba NEW
Greenwood P WieserGermanyAnna Fali RENEWAL
Francesco R GauchoGermanyAsiya Javayant PROPOSAL
Adams O StockhamGermanyXuxue Feng UNQUALIFIED
Isabel Q CaudyIndiaBernardo Dominic NEW
James D NestleSpainStephen Shaw UNQUALIFIED
Arvin E WhobreyItalyAnna Fali NEW
Antonio H CaudyFranceAmy Elsner NEGOTIATION
Silvio K PerinBrazilAsiya Javayant QUALIFIED
Chavez T SergiFranceAmy Elsner QUALIFIED
Juan U GauchoCanadaOnyama Limba RENEWAL
Alejandro L VenereItalyXuxue Feng UNQUALIFIED
Misaki I StockhamIndiaIvan Magalhaes PROPOSAL
Francesco Z VocelkaArgentinaAsiya Javayant NEW
Jefferson I PoquetteGermanyElwin Sharvill PROPOSAL
Antonio K FlosiArgentinaIoni Bowcher 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>