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
Tony S WieserSpainAnna Fali QUALIFIED
Darci A GarufiGermanyElwin Sharvill PROPOSAL
Leja N MorascaItalyBernardo Dominic UNQUALIFIED
Tony Q MarrierGermanyElwin Sharvill QUALIFIED
Tony R NickaCanadaXuxue Feng QUALIFIED
Aika B SergiGermanyAmy Elsner NEGOTIATION
Kadeem V MorascaBrazilAsiya Javayant PROPOSAL
Kaitlin S ChuiIndiaStephen Shaw NEGOTIATION
Ivar W DilliardFranceXuxue Feng UNQUALIFIED
Ricardo W BriddickFranceBernardo Dominic NEGOTIATION
Aika U GlickCanadaBernardo Dominic QUALIFIED
Mayumi J NestleItalyXuxue Feng PROPOSAL
Smith E CaudyCanadaAmy Elsner NEW
Munro U CaldareraArgentinaOnyama Limba NEGOTIATION
Misaki I SaylorsJapanStephen Shaw QUALIFIED
Smith X KolmetzItalyAmy Elsner UNQUALIFIED
Jones R RoysterBrazilBernardo Dominic NEW
Arvin J VocelkaSpainOnyama Limba PROPOSAL
Morrow Q StockhamGermanyBernardo Dominic NEGOTIATION
Ricardo K GlickArgentinaAsiya Javayant NEW
Smith B GlickFranceAmy Elsner RENEWAL
Cody Y RoysterUnited KingdomElwin Sharvill NEW
Mujtaba H VocelkaBrazilIvan Magalhaes UNQUALIFIED
James U GarufiArgentinaAsiya Javayant UNQUALIFIED
James K BowleyItalyBernardo Dominic UNQUALIFIED
Jennifer W RutaUnited KingdomOnyama Limba NEGOTIATION
Mayumi G InouyeBrazilAnna Fali QUALIFIED
Rodrigues A IturbideIndiaOnyama Limba RENEWAL
Tony A DoeArgentinaOnyama Limba RENEWAL
Misaki T ShinkoFranceXuxue Feng NEGOTIATION
Kadeem G VenereBrazilXuxue Feng NEW
Leon T CampainItalyIoni Bowcher QUALIFIED
Clifford H IturbideAustraliaOnyama Limba UNQUALIFIED
Costa C FigeroaJapanBernardo Dominic NEGOTIATION
Izzy O TollnerSpainIoni Bowcher NEW
Aruna H FlosiItalyAsiya Javayant RENEWAL
Munro P IturbideIndiaBernardo Dominic UNQUALIFIED
Morrow G TollnerSpainIoni Bowcher UNQUALIFIED
Octavia M MaletJapanAmy Elsner UNQUALIFIED
Johnson T WhobreyCanadaAmy Elsner NEW
Claire J NickaGermanyAmy Elsner PROPOSAL
Smith M ButtAustraliaAnna Fali QUALIFIED
Arvin G GlickJapanIoni Bowcher NEW
Chavez K NickaSpainAmy Elsner NEW
David O FerenczItalyBernardo Dominic NEGOTIATION
Chavez L VenereGermanyOnyama Limba PROPOSAL
Mujtaba W MaletBrazilStephen Shaw PROPOSAL
Maisha H PoquetteArgentinaStephen Shaw PROPOSAL
Julie B PerinIndiaElwin Sharvill RENEWAL
Leja H StensethBrazilAnna Fali NEW
Horizontal
NameCountryRepresentativeStatus
Juan I InouyeBrazilIvan Magalhaes NEW
Aruna R WieserIndiaBernardo Dominic UNQUALIFIED
Antonio R FollerItalyIoni Bowcher QUALIFIED
Maria W SchemmerGermanyIvan Magalhaes NEGOTIATION
Kadeem Q VocelkaGermanyIvan Magalhaes UNQUALIFIED
Jennifer D KolmetzGermanyBernardo Dominic QUALIFIED
Octavia G GarufiSpainIoni Bowcher NEW
Leon Q FollerCanadaElwin Sharvill RENEWAL
Alejandro M WieserArgentinaAmy Elsner NEW
Claire H DoeSpainAnna Fali UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Cody J MarrierRussia2024-04-12Commercial Press UNQUALIFIED4Ivan Magalhaes
1001Emily P DilliardIndia2024-04-23Rousseaux, Michael Esq UNQUALIFIED49Bernardo Dominic
1002Aditya F TollnerFrance2024-03-30Feltz Printing Service UNQUALIFIED47Anna Fali
1003Ivar K IturbideArgentina2024-04-07Truhlar And Truhlar Attys QUALIFIED12Stephen Shaw
1004Jeanfrancois R PaprockiFrance2024-04-22Feltz Printing Service NEW76Bernardo Dominic
1005Arvin Z GauchoAustralia2024-03-28Chapman, Ross E Esq QUALIFIED55Xuxue Feng
1006Salvatore B OstroskyAustralia2024-04-03Dorl, James J Esq QUALIFIED79Stephen Shaw
1007Morrow O IturbideItaly2024-04-10Chapman, Ross E Esq NEGOTIATION49Asiya Javayant
1008Aruna E BowleyCanada2024-04-24Dorl, James J Esq NEW17Elwin Sharvill
1009Izzy T BriddickFrance2024-04-22Chemel, James L Cpa QUALIFIED80Bernardo Dominic
1010Aruna E InouyeArgentina2024-04-01Feiner Bros NEGOTIATION32Ivan Magalhaes
1011Ashley C RutaCanada2024-04-04Printing Dimensions NEGOTIATION6Ioni Bowcher
1012Claire Q MaletGermany2024-04-16Benton, John B Jr PROPOSAL33Stephen Shaw
1013Johnson H FerenczGermany2024-04-07Benton, John B Jr QUALIFIED33Xuxue Feng
1014Maria H ButtFrance2024-03-30Truhlar And Truhlar Attys NEGOTIATION3Elwin Sharvill
1015David K WaycottSpain2024-04-19Morlong Associates QUALIFIED14Amy Elsner
1016Morrow Y BowleyArgentina2024-04-01Buckley Miller Wright UNQUALIFIED42Asiya Javayant
1017Arvin P CaudyItaly2024-04-04Rousseaux, Michael Esq UNQUALIFIED14Xuxue Feng
1018David J OstroskyJapan2024-04-10Printing Dimensions PROPOSAL77Bernardo Dominic
1019Ricardo Y VenereCanada2024-04-21Truhlar And Truhlar Attys NEW80Bernardo Dominic
1020Jeanfrancois P WhobreyBrazil2024-04-06Rousseaux, Michael Esq UNQUALIFIED13Ivan Magalhaes
1021Jeanfrancois M PaprockiCanada2024-04-07Dorl, James J Esq NEGOTIATION5Amy Elsner
1022Adams E WaycottRussia2024-04-05Dorl, James J Esq UNQUALIFIED37Elwin Sharvill
1023Darci K AlbaresIndia2024-03-26Dorl, James J Esq NEGOTIATION63Asiya Javayant
1024Francesco H InouyeIndia2024-04-19Dorl, James J Esq PROPOSAL33Stephen Shaw
1025Antonio T FerenczJapan2024-04-12Feiner Bros NEW99Bernardo Dominic
1026Antonio F DilliardCanada2024-03-28Printing Dimensions NEGOTIATION75Bernardo Dominic
1027Alejandro K BologniaRussia2024-04-17Rousseaux, Michael Esq NEGOTIATION50Ioni Bowcher
1028Alejandro B OldroydSpain2024-03-30Truhlar And Truhlar Attys NEGOTIATION14Elwin Sharvill
1029Jennifer V VocelkaUnited Kingdom2024-04-07Feiner Bros NEGOTIATION36Asiya Javayant
1030Adams Q DilliardRussia2024-04-14Benton, John B Jr PROPOSAL91Ivan Magalhaes
1031Costa I StensethSpain2024-04-22Truhlar And Truhlar Attys NEW31Anna Fali
1032Costa W AlbaresIndia2024-03-27Commercial Press QUALIFIED24Stephen Shaw
1033Emily U PaprockiArgentina2024-04-10Commercial Press NEGOTIATION76Bernardo Dominic
1034Ivar B StockhamJapan2024-04-02Dorl, James J Esq PROPOSAL86Bernardo Dominic
1035Mujtaba O MarrierGermany2024-04-17King, Christopher A Esq NEW36Ioni Bowcher
1036Ivar H WieserAustralia2024-04-18Feiner Bros UNQUALIFIED82Asiya Javayant
1037Ivar I KolmetzUnited Kingdom2024-04-17Truhlar And Truhlar Attys NEW3Onyama Limba
1038Ivar D GlickFrance2024-03-29Rousseaux, Michael Esq NEW89Ivan Magalhaes
1039Sinclair J BologniaSpain2024-04-14Feltz Printing Service NEW57Ivan Magalhaes
1040Julie I BologniaArgentina2024-04-07Feiner Bros PROPOSAL82Asiya Javayant
1041Wickens Z InouyeFrance2024-04-03King, Christopher A Esq NEGOTIATION82Ivan Magalhaes
1042Johnson T CampainFrance2024-04-19Buckley Miller Wright RENEWAL7Onyama Limba
1043Claire N RoysterCanada2024-04-06Chemel, James L Cpa NEW4Xuxue Feng
1044Aika I GlickArgentina2024-03-30Benton, John B Jr QUALIFIED22Onyama Limba
1045Aditya O VocelkaCanada2024-03-27Rangoni Of Florence QUALIFIED10Xuxue Feng
1046Chavez B DarakjyRussia2024-03-30Feiner Bros NEGOTIATION10Xuxue Feng
1047Aditya J IturbideJapan2024-04-04King, Christopher A Esq QUALIFIED39Stephen Shaw
1048Mayumi I IturbideArgentina2024-04-01King, Christopher A Esq NEW6Asiya Javayant
1049Claire T DilliardItaly2024-04-23Dorl, James J Esq UNQUALIFIED99Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Tony W AmigonIndiaIvan Magalhaes RENEWAL
Aditya N GillianBrazilAmy Elsner NEGOTIATION
Francesco J VenereArgentinaXuxue Feng UNQUALIFIED
Morrow Z StockhamBrazilAnna Fali NEGOTIATION
Jones V AlbaresGermanyIvan Magalhaes UNQUALIFIED
Kadeem I GarufiArgentinaIoni Bowcher NEW
Aruna X BologniaArgentinaAsiya Javayant PROPOSAL
Leon D TollnerArgentinaElwin Sharvill PROPOSAL
Johnson X MorascaUnited KingdomXuxue Feng NEW
Kaitlin W PaprockiBrazilIvan Magalhaes NEW
Murillo F KuskoSpainIoni Bowcher QUALIFIED
Kadeem D BowleyCanadaBernardo Dominic RENEWAL
Darci Q BologniaItalyIvan Magalhaes UNQUALIFIED
Chavez D MacleadBrazilXuxue Feng RENEWAL
Murillo M FollerItalyAmy Elsner NEW
Ashley K AmigonArgentinaElwin Sharvill UNQUALIFIED
Misaki B OldroydArgentinaAnna Fali PROPOSAL
Emily I NestleSpainAsiya Javayant RENEWAL
Ricardo Y PoquetteGermanyAsiya Javayant UNQUALIFIED
Darci O AlbaresUnited KingdomStephen Shaw UNQUALIFIED
Greenwood S BriddickIndiaXuxue Feng QUALIFIED
Ivar U StockhamIndiaXuxue Feng NEGOTIATION
James G GillianSpainIvan Magalhaes UNQUALIFIED
Chavez I RulapaughUnited KingdomXuxue Feng UNQUALIFIED
Deepesh X InouyeAustraliaAmy Elsner NEGOTIATION
Francesco T GillianFranceIvan Magalhaes NEGOTIATION
Cody G AmigonSpainAnna Fali QUALIFIED
Aditya N InouyeFranceElwin Sharvill PROPOSAL
David D ChuiAustraliaAnna Fali RENEWAL
Emily R WaycottIndiaAsiya Javayant PROPOSAL
Ricardo P WhobreySpainElwin Sharvill UNQUALIFIED
Francesco M RoysterBrazilAnna Fali RENEWAL
Jefferson C PaprockiJapanBernardo Dominic NEGOTIATION
Emily C RutaSpainAsiya Javayant NEGOTIATION
Johnson R AmigonUnited KingdomXuxue Feng NEGOTIATION
Juan Y GlickFranceAmy Elsner PROPOSAL
Munro H RimJapanAmy Elsner NEGOTIATION
Alejandro Z BologniaJapanIoni Bowcher PROPOSAL
Silvio B WaycottItalyAmy Elsner NEGOTIATION
Alejandro G GlickUnited KingdomIoni Bowcher RENEWAL
David R InouyeItalyElwin Sharvill QUALIFIED
Julie H VocelkaGermanyIoni Bowcher UNQUALIFIED
Darci G KolmetzIndiaAmy Elsner RENEWAL
Wickens B GillianFranceOnyama Limba NEGOTIATION
Kadeem Y ChuiJapanAsiya Javayant RENEWAL
Octavia F SchemmerItalyIvan Magalhaes QUALIFIED
Emily E WhobreyCanadaAmy Elsner PROPOSAL
Claire G CaudyGermanyElwin Sharvill RENEWAL
Juan G PoquetteRussiaAsiya Javayant UNQUALIFIED
Adams H RimBrazilAsiya Javayant PROPOSAL
Frozen Columns
Name
Isabel V Sergi
James D Oldroyd
Darci U Royster
Alejandro W Inouye
Arvin N Rulapaugh
Johnson I Gaucho
Adams G Inouye
Isabel M Flosi
Silvio R Foller
Julie P Rulapaugh
Juan Z Gillian
Adams V Bolognia
James K Figeroa
Deepesh O Wieser
Izzy F Albares
Munro Y Caudy
Adams B Royster
Clifford K Schemmer
Maria Z Briddick
Isabel I Royster
Smith G Paprocki
Ashley A Paprocki
Tony H Amigon
Rodrigues X Amigon
Johnson V Gaucho
Clifford G Sergi
Jefferson B Glick
Mayumi M Tollner
Sinclair H Royster
Nicolas C Malet
Maria F Flosi
Cody J Stockham
Octavia F Amigon
Leja U Venere
Tony W Caudy
Ashley T Sergi
Salvatore L Inouye
Faith C Doe
Deepesh N Poquette
Leja E Doe
Isabel D Marrier
Maria P Slusarski
Misaki D Royster
Jefferson D Malet
Kaitlin E Ostrosky
Deepesh V Sergi
Juan T Garufi
Jefferson X Nicka
Kaitlin E Kolmetz
Smith G Venere
IdCountryDate
1000India2024-03-30
1001India2024-04-05
1002Australia2024-04-02
1003Japan2024-04-20
1004France2024-04-05
1005Italy2024-04-14
1006Italy2024-03-29
1007India2024-04-05
1008Australia2024-04-10
1009Argentina2024-03-26
1010United Kingdom2024-03-29
1011Italy2024-04-04
1012Japan2024-04-24
1013Spain2024-04-06
1014Brazil2024-04-24
1015Italy2024-04-13
1016Canada2024-04-06
1017India2024-04-22
1018Italy2024-03-30
1019Germany2024-04-08
1020Canada2024-04-09
1021Argentina2024-04-15
1022United Kingdom2024-04-13
1023Italy2024-03-31
1024Australia2024-04-09
1025United Kingdom2024-04-09
1026India2024-04-09
1027Argentina2024-04-19
1028Canada2024-04-20
1029Japan2024-04-20
1030India2024-04-06
1031India2024-03-27
1032France2024-04-03
1033Germany2024-04-14
1034Brazil2024-04-12
1035Russia2024-04-18
1036Germany2024-03-26
1037Australia2024-04-12
1038United Kingdom2024-04-05
1039Russia2024-03-28
1040Spain2024-04-18
1041United Kingdom2024-03-31
1042United Kingdom2024-03-27
1043Spain2024-04-01
1044United Kingdom2024-04-02
1045Spain2024-04-03
1046Argentina2024-04-07
1047India2024-04-12
1048Australia2024-04-14
1049Germany2024-04-04

On-Demand Data

NameIdCountryDate
Isabel G Maclead1000Argentina2024-04-04
Antonio N Glick1001Germany2024-04-18
Emily L Chui1002India2024-04-20
Wickens A Amigon1003Russia2024-04-17
James C Saylors1004Brazil2024-03-29
Stacey B Whobrey1005Japan2024-04-01
Faith N Schemmer1006Canada2024-04-10
Julie O Stockham1007Canada2024-04-18
Francesco D Slusarski1008India2024-03-28
Deepesh T Whobrey1009Russia2024-03-26
Emily Y Chui1010Argentina2024-04-22
Octavia H Rim1011India2024-04-12
Smith H Shinko1012United Kingdom2024-04-09
Jennifer J Malet1013Russia2024-04-03
Ashley T Campain1014Brazil2024-04-23
Smith Q Iturbide1015Argentina2024-04-09
Maria E Briddick1016Spain2024-04-13
Mujtaba T Flosi1017Italy2024-04-07
Aditya S Morasca1018India2024-04-17
Costa P Stockham1019Brazil2024-03-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Chavez L GarufiIndiaOnyama Limba QUALIFIED
Salvatore I AmigonUnited KingdomIvan Magalhaes QUALIFIED
Silvio S FollerBrazilElwin Sharvill RENEWAL
Aika C SchemmerItalyAnna Fali QUALIFIED
Cody L CampainItalyIoni Bowcher NEGOTIATION
Nicolas O MacleadRussiaElwin Sharvill QUALIFIED
Salvatore X AmigonItalyAmy Elsner QUALIFIED
Cody P WaycottGermanyAnna Fali PROPOSAL
Aditya D MaletRussiaOnyama Limba NEGOTIATION
Jennifer M SchemmerAustraliaXuxue Feng UNQUALIFIED
Johnson T CaudyArgentinaIoni Bowcher QUALIFIED
Aditya O FollerSpainAmy Elsner PROPOSAL
David Y AlbaresRussiaIoni Bowcher QUALIFIED
Jefferson Q VenereCanadaIoni Bowcher RENEWAL
Rodrigues V MacleadFranceIvan Magalhaes RENEWAL
Jefferson B WaycottRussiaAnna Fali NEGOTIATION
Munro C PerinItalyStephen Shaw NEGOTIATION
Arvin K IturbideCanadaStephen Shaw NEGOTIATION
Claire B SergiItalyAsiya Javayant NEGOTIATION
Silvio L KuskoItalyAsiya Javayant UNQUALIFIED
Costa X StockhamFranceOnyama Limba PROPOSAL
Claire C WhobreyUnited KingdomElwin Sharvill RENEWAL
Izzy V RulapaughItalyStephen Shaw PROPOSAL
David O MacleadGermanyAsiya Javayant NEW
Rodrigues M AmigonCanadaAsiya Javayant PROPOSAL
Leja X WieserAustraliaStephen Shaw PROPOSAL
Wickens P GlickAustraliaAmy Elsner QUALIFIED
Arvin P GlickCanadaIoni Bowcher NEW
Smith R DilliardFranceElwin Sharvill RENEWAL
Stacey I ButtGermanyIoni Bowcher NEGOTIATION
Aruna M MaletSpainAmy Elsner QUALIFIED
Jefferson N CaldareraItalyAmy Elsner RENEWAL
Costa R SchemmerCanadaElwin Sharvill NEGOTIATION
Juan J BowleyUnited KingdomAmy Elsner UNQUALIFIED
Silvio L KolmetzArgentinaXuxue Feng PROPOSAL
Stacey V CaudyUnited KingdomBernardo Dominic NEW
Cody Y VocelkaRussiaAnna Fali NEW
Rodrigues H CaudyAustraliaIoni Bowcher NEGOTIATION
Wickens U VenereIndiaStephen Shaw UNQUALIFIED
Claire Q CampainSpainElwin Sharvill NEGOTIATION

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