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
Aruna S RimAustraliaAsiya Javayant NEW
Faith S GauchoIndiaBernardo Dominic PROPOSAL
Arvin O GlickIndiaAnna Fali QUALIFIED
Nicolas V AlbaresIndiaStephen Shaw RENEWAL
Kadeem W OstroskyItalyBernardo Dominic NEW
Johnson B PoquetteBrazilIoni Bowcher UNQUALIFIED
Stacey U VocelkaUnited KingdomOnyama Limba QUALIFIED
Aika V RoysterUnited KingdomStephen Shaw NEW
Isabel S NickaAustraliaBernardo Dominic RENEWAL
Jennifer W CaudyFranceStephen Shaw NEW
Jefferson Z WhobreyAustraliaElwin Sharvill RENEWAL
Murillo K NestleSpainAnna Fali NEGOTIATION
Ricardo I AmigonBrazilAsiya Javayant PROPOSAL
Arvin T SaylorsIndiaAsiya Javayant NEW
Kaitlin N FollerArgentinaStephen Shaw NEW
Cody F StensethFranceBernardo Dominic RENEWAL
Jennifer W GlickJapanStephen Shaw QUALIFIED
Costa U RutaCanadaAnna Fali RENEWAL
Isabel E IturbideSpainAsiya Javayant QUALIFIED
Ashley H CampainItalyAnna Fali NEGOTIATION
Wickens Y CampainSpainElwin Sharvill RENEWAL
Mayumi I WaycottJapanXuxue Feng UNQUALIFIED
Jefferson R KuskoSpainStephen Shaw NEGOTIATION
Arvin V CampainFranceOnyama Limba NEGOTIATION
Kaitlin T VenereRussiaAmy Elsner RENEWAL
Jeanfrancois E GauchoRussiaIvan Magalhaes NEGOTIATION
Stacey Y NickaIndiaIoni Bowcher NEGOTIATION
Kadeem S SchemmerFranceAmy Elsner NEW
Aruna A PaprockiJapanAsiya Javayant PROPOSAL
Silvio I NestleAustraliaOnyama Limba NEW
Aika N RimCanadaAnna Fali NEGOTIATION
Aditya M PoquetteJapanAmy Elsner RENEWAL
Claire I OldroydGermanyAsiya Javayant QUALIFIED
Jeanfrancois X DoeIndiaXuxue Feng RENEWAL
Jennifer O ButtSpainAmy Elsner NEW
Aruna M WhobreyItalyBernardo Dominic NEGOTIATION
Isabel H DarakjyBrazilBernardo Dominic QUALIFIED
Kaitlin G RutaItalyIvan Magalhaes PROPOSAL
Jones L PoquetteRussiaAsiya Javayant NEW
Greenwood C MaletUnited KingdomIvan Magalhaes NEW
Maisha U DoeGermanyIoni Bowcher RENEWAL
Antonio G MarrierFranceXuxue Feng NEW
Ivar B MorascaItalyAsiya Javayant NEGOTIATION
Kadeem Y CaudyGermanyStephen Shaw NEW
Misaki Y GarufiIndiaOnyama Limba NEGOTIATION
Emily I OldroydAustraliaElwin Sharvill QUALIFIED
James K DoeSpainAnna Fali QUALIFIED
Octavia E VocelkaFranceIoni Bowcher UNQUALIFIED
Johnson M SlusarskiSpainXuxue Feng UNQUALIFIED
Aruna L SlusarskiJapanAnna Fali RENEWAL
Horizontal
NameCountryRepresentativeStatus
Octavia R RulapaughIndiaOnyama Limba QUALIFIED
Jefferson N SergiJapanAnna Fali NEW
David C ButtGermanyAsiya Javayant NEW
Chavez C RulapaughJapanIvan Magalhaes QUALIFIED
Ivar S CampainAustraliaIoni Bowcher NEGOTIATION
Julie B CaudyRussiaElwin Sharvill NEGOTIATION
Claire N StockhamArgentinaAsiya Javayant NEGOTIATION
Ashley U GarufiRussiaAnna Fali RENEWAL
Wickens T SchemmerIndiaAnna Fali NEW
Deepesh D MorascaCanadaIvan Magalhaes NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jefferson N ChuiGermany2024-04-23Commercial Press NEW0Stephen Shaw
1001Ricardo J RoysterJapan2024-04-13Feltz Printing Service NEGOTIATION58Bernardo Dominic
1002Clifford M ShinkoIndia2024-03-28Chanay, Jeffrey A Esq QUALIFIED16Onyama Limba
1003Murillo H RutaFrance2024-04-23Printing Dimensions NEW35Stephen Shaw
1004Jeanfrancois C TollnerRussia2024-04-14Rousseaux, Michael Esq QUALIFIED13Ioni Bowcher
1005Jennifer R RutaItaly2024-03-29Printing Dimensions RENEWAL77Ioni Bowcher
1006Faith K RulapaughIndia2024-04-12Morlong Associates QUALIFIED26Elwin Sharvill
1007Aika K SaylorsBrazil2024-04-04Feltz Printing Service RENEWAL47Onyama Limba
1008Chavez L PaprockiItaly2024-04-16Printing Dimensions QUALIFIED0Onyama Limba
1009Sinclair H DoeRussia2024-04-20Feiner Bros PROPOSAL50Bernardo Dominic
1010Kaitlin U MarrierGermany2024-04-15King, Christopher A Esq UNQUALIFIED66Xuxue Feng
1011Misaki V TollnerArgentina2024-04-13King, Christopher A Esq RENEWAL52Onyama Limba
1012Rodrigues J DarakjyJapan2024-04-18Chanay, Jeffrey A Esq PROPOSAL35Elwin Sharvill
1013Costa Q RulapaughCanada2024-04-19Rousseaux, Michael Esq NEW24Elwin Sharvill
1014Silvio P FollerAustralia2024-04-06Morlong Associates QUALIFIED52Onyama Limba
1015Rodrigues P GauchoUnited Kingdom2024-04-12Chanay, Jeffrey A Esq UNQUALIFIED62Elwin Sharvill
1016Mujtaba P FollerUnited Kingdom2024-04-15Morlong Associates NEW62Bernardo Dominic
1017Alejandro E CaudyIndia2024-03-27Dorl, James J Esq NEW63Onyama Limba
1018Smith N RimItaly2024-04-19Printing Dimensions NEW57Asiya Javayant
1019Leja I DoeGermany2024-04-24Rousseaux, Michael Esq PROPOSAL92Amy Elsner
1020James A BriddickItaly2024-04-03Commercial Press QUALIFIED51Asiya Javayant
1021Aditya X CaudyItaly2024-04-03Chapman, Ross E Esq NEGOTIATION31Xuxue Feng
1022Alejandro M DarakjyItaly2024-04-03Chemel, James L Cpa NEGOTIATION94Ivan Magalhaes
1023Munro K SergiBrazil2024-03-26Rousseaux, Michael Esq QUALIFIED85Ivan Magalhaes
1024Ricardo T ChuiItaly2024-04-08Feltz Printing Service PROPOSAL4Onyama Limba
1025Rodrigues V StensethIndia2024-04-17Commercial Press PROPOSAL68Asiya Javayant
1026Stacey G BowleyFrance2024-04-14Commercial Press RENEWAL62Anna Fali
1027Munro I RulapaughGermany2024-04-22Chanay, Jeffrey A Esq NEGOTIATION93Elwin Sharvill
1028David L IturbideCanada2024-04-05Rousseaux, Michael Esq NEGOTIATION52Bernardo Dominic
1029Jeanfrancois O RimAustralia2024-04-20Benton, John B Jr RENEWAL45Asiya Javayant
1030Munro V RulapaughSpain2024-03-28Feiner Bros QUALIFIED61Ivan Magalhaes
1031Morrow D DarakjyFrance2024-04-17King, Christopher A Esq UNQUALIFIED84Asiya Javayant
1032Antonio Y GillianRussia2024-04-22Buckley Miller Wright NEW75Stephen Shaw
1033Mayumi P StockhamGermany2024-04-21Dorl, James J Esq PROPOSAL22Elwin Sharvill
1034Salvatore Q FerenczIndia2024-04-12Morlong Associates UNQUALIFIED29Asiya Javayant
1035Chavez X StockhamCanada2024-04-14Chemel, James L Cpa QUALIFIED50Xuxue Feng
1036Nicolas Q FigeroaItaly2024-04-07Chemel, James L Cpa PROPOSAL71Asiya Javayant
1037Faith M WhobreyGermany2024-04-23Benton, John B Jr NEW88Elwin Sharvill
1038Silvio S DoeJapan2024-04-03Buckley Miller Wright NEGOTIATION62Stephen Shaw
1039Stacey X SaylorsCanada2024-04-14Feltz Printing Service NEGOTIATION14Xuxue Feng
1040Smith A AlbaresUnited Kingdom2024-04-17King, Christopher A Esq UNQUALIFIED71Ivan Magalhaes
1041Arvin Q InouyeUnited Kingdom2024-04-08Chemel, James L Cpa RENEWAL58Ioni Bowcher
1042Sinclair P AlbaresBrazil2024-04-24Buckley Miller Wright QUALIFIED70Stephen Shaw
1043Morrow Z FerenczFrance2024-04-11Chanay, Jeffrey A Esq UNQUALIFIED7Bernardo Dominic
1044Mayumi H DilliardRussia2024-04-02Rangoni Of Florence NEGOTIATION97Asiya Javayant
1045Ricardo J DarakjySpain2024-04-09Rousseaux, Michael Esq NEGOTIATION17Xuxue Feng
1046Stacey S MacleadAustralia2024-04-13Buckley Miller Wright NEGOTIATION21Ivan Magalhaes
1047Francesco M RulapaughIndia2024-04-19King, Christopher A Esq RENEWAL41Ioni Bowcher
1048Morrow X OldroydIndia2024-04-17Chapman, Ross E Esq UNQUALIFIED99Xuxue Feng
1049Cody U CaudyJapan2024-04-14Truhlar And Truhlar Attys RENEWAL42Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Misaki M PoquetteJapanOnyama Limba UNQUALIFIED
Mayumi X GlickItalyIvan Magalhaes NEGOTIATION
Johnson Y RulapaughArgentinaElwin Sharvill NEW
Isabel C IturbideBrazilXuxue Feng PROPOSAL
Johnson C OldroydSpainOnyama Limba RENEWAL
Tony W WhobreyAustraliaAsiya Javayant NEW
Stacey D MaletFranceXuxue Feng NEW
Claire M MacleadFranceAmy Elsner NEW
Aruna W SaylorsFranceIoni Bowcher NEW
Wickens S IturbideBrazilAsiya Javayant RENEWAL
Jennifer S StensethBrazilBernardo Dominic NEGOTIATION
Ashley D BowleyFranceIoni Bowcher RENEWAL
Stacey J SlusarskiAustraliaAmy Elsner QUALIFIED
Mujtaba V AmigonJapanAmy Elsner NEW
Chavez E KolmetzCanadaIvan Magalhaes QUALIFIED
Smith G SchemmerFranceIoni Bowcher UNQUALIFIED
James U NestleIndiaIoni Bowcher NEGOTIATION
Tony D GillianGermanyStephen Shaw NEGOTIATION
Murillo Y RimBrazilStephen Shaw QUALIFIED
Leja U RimFranceAmy Elsner QUALIFIED
Octavia N StockhamAustraliaIoni Bowcher NEW
Adams G RoysterArgentinaAnna Fali UNQUALIFIED
Salvatore F WaycottGermanyIvan Magalhaes RENEWAL
Ivar Z GillianCanadaAsiya Javayant PROPOSAL
Costa A MorascaBrazilStephen Shaw RENEWAL
Jefferson S MaletSpainElwin Sharvill PROPOSAL
Isabel R SlusarskiItalyBernardo Dominic PROPOSAL
Sinclair E MaletCanadaIvan Magalhaes PROPOSAL
Johnson E CaudyItalyIvan Magalhaes NEW
Isabel V VocelkaItalyElwin Sharvill NEGOTIATION
Alejandro T IturbideSpainElwin Sharvill NEW
Salvatore L MaletItalyBernardo Dominic NEGOTIATION
Deepesh S OstroskyRussiaAsiya Javayant PROPOSAL
Ashley P SchemmerFranceAsiya Javayant QUALIFIED
Mayumi V BriddickItalyOnyama Limba PROPOSAL
Octavia Z FollerRussiaAmy Elsner QUALIFIED
Costa I DarakjyFranceElwin Sharvill NEGOTIATION
Deepesh J ButtRussiaBernardo Dominic PROPOSAL
Isabel A RutaBrazilStephen Shaw NEGOTIATION
Leon Z RimItalyBernardo Dominic NEGOTIATION
Julie K RimBrazilElwin Sharvill RENEWAL
Morrow K MacleadAustraliaElwin Sharvill RENEWAL
Aika S PaprockiIndiaAmy Elsner UNQUALIFIED
David V ChuiAustraliaAmy Elsner QUALIFIED
Francesco M MaletFranceAmy Elsner PROPOSAL
Arvin C PoquetteArgentinaIvan Magalhaes NEGOTIATION
Rodrigues S OldroydArgentinaOnyama Limba QUALIFIED
Antonio D ButtIndiaElwin Sharvill PROPOSAL
Faith E TollnerGermanyOnyama Limba PROPOSAL
Mujtaba Z ShinkoGermanyBernardo Dominic NEGOTIATION
Frozen Columns
Name
Smith W Nicka
Silvio Q Caldarera
James E Tollner
Adams A Rim
Smith T Rulapaugh
David W Chui
Stacey F Campain
Alejandro X Perin
Stacey F Doe
Adams K Shinko
Tony E Venere
Jones Z Maclead
Costa J Ostrosky
Isabel T Doe
Alejandro S Poquette
Munro X Gillian
Ricardo F Saylors
Wickens X Stockham
Rodrigues G Iturbide
Isabel K Morasca
Wickens Q Doe
Leja O Maclead
Aruna Y Albares
Misaki S Doe
Chavez T Waycott
Jefferson H Doe
Misaki O Darakjy
Misaki P Malet
Alejandro M Maclead
Wickens U Poquette
Rodrigues E Perin
Greenwood U Doe
Leja C Nestle
Maria I Amigon
Octavia S Venere
Wickens S Wieser
Nicolas U Oldroyd
Jefferson J Wieser
Munro L Shinko
Mayumi I Garufi
Emily N Ostrosky
Aruna L Stockham
Francesco E Campain
James Y Wieser
Misaki K Ruta
James E Stockham
James Y Bowley
Maisha M Whobrey
Maria I Caudy
Jefferson M Schemmer
IdCountryDate
1000Canada2024-04-11
1001India2024-04-14
1002Australia2024-04-17
1003Germany2024-04-24
1004United Kingdom2024-04-15
1005India2024-04-06
1006Japan2024-04-13
1007United Kingdom2024-04-17
1008Argentina2024-04-01
1009Brazil2024-04-01
1010Canada2024-04-03
1011Argentina2024-04-05
1012Russia2024-04-15
1013Spain2024-03-31
1014Argentina2024-04-24
1015Spain2024-04-12
1016Argentina2024-04-15
1017Argentina2024-04-19
1018Australia2024-04-20
1019Italy2024-03-28
1020Canada2024-04-07
1021United Kingdom2024-04-05
1022Italy2024-04-11
1023Brazil2024-04-20
1024India2024-03-29
1025France2024-04-02
1026Germany2024-04-14
1027Brazil2024-04-16
1028Italy2024-04-22
1029France2024-04-07
1030France2024-03-28
1031Argentina2024-03-28
1032Argentina2024-04-13
1033France2024-04-17
1034United Kingdom2024-04-17
1035Japan2024-04-02
1036Italy2024-04-18
1037Brazil2024-04-20
1038India2024-04-11
1039India2024-04-04
1040Japan2024-04-05
1041Japan2024-04-04
1042France2024-04-24
1043Italy2024-04-11
1044India2024-04-03
1045Argentina2024-04-24
1046Japan2024-04-16
1047Australia2024-04-10
1048France2024-04-06
1049Australia2024-04-23

On-Demand Data

NameIdCountryDate
Ashley P Waycott1000United Kingdom2024-04-12
Alejandro H Oldroyd1001France2024-04-04
Misaki T Foller1002Spain2024-04-03
Octavia C Venere1003Canada2024-04-07
Jefferson V Ruta1004Germany2024-04-03
Maisha N Sergi1005Germany2024-04-17
Antonio B Kusko1006Spain2024-04-06
Misaki F Waycott1007France2024-04-10
Clifford S Tollner1008Japan2024-03-28
Claire L Bolognia1009France2024-04-03
Tony O Nestle1010Australia2024-04-17
Jones Q Flosi1011France2024-04-08
Murillo O Tollner1012Spain2024-04-01
Tony Q Venere1013Japan2024-03-29
Antonio O Inouye1014Argentina2024-04-23
Cody A Inouye1015Spain2024-04-03
Stacey Y Slusarski1016Italy2024-03-27
Silvio Q Paprocki1017Germany2024-04-11
Leja H Garufi1018India2024-03-30
Isabel A Glick1019Spain2024-04-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Stacey F AlbaresAustraliaIvan Magalhaes UNQUALIFIED
Stacey J FollerJapanAmy Elsner QUALIFIED
Isabel D RulapaughRussiaStephen Shaw UNQUALIFIED
Stacey X NestleJapanStephen Shaw QUALIFIED
Jeanfrancois T RutaGermanyOnyama Limba RENEWAL
Clifford N RoysterUnited KingdomXuxue Feng PROPOSAL
Jefferson J MorascaUnited KingdomIoni Bowcher QUALIFIED
Stacey F MarrierJapanAmy Elsner RENEWAL
Silvio M ChuiRussiaStephen Shaw NEW
Jennifer W ShinkoIndiaElwin Sharvill UNQUALIFIED
Mujtaba W PoquetteRussiaStephen Shaw QUALIFIED
Jeanfrancois H WieserUnited KingdomStephen Shaw NEW
Smith K DilliardJapanElwin Sharvill QUALIFIED
Juan O GarufiRussiaIoni Bowcher NEGOTIATION
Silvio S AmigonCanadaBernardo Dominic NEGOTIATION
Johnson J AmigonBrazilElwin Sharvill NEGOTIATION
Izzy R OldroydBrazilAsiya Javayant NEGOTIATION
Tony C CaldareraAustraliaXuxue Feng PROPOSAL
Munro M IturbideAustraliaBernardo Dominic QUALIFIED
Ricardo B RutaCanadaAnna Fali PROPOSAL
Adams S DilliardCanadaBernardo Dominic NEGOTIATION
Isabel O AlbaresJapanOnyama Limba QUALIFIED
Clifford T PoquetteFranceAsiya Javayant NEW
Leja D BowleyArgentinaStephen Shaw PROPOSAL
Octavia Z GauchoSpainBernardo Dominic NEGOTIATION
Leon X CaudyBrazilOnyama Limba PROPOSAL
Mayumi E NestleRussiaIoni Bowcher NEW
Octavia O MorascaRussiaBernardo Dominic RENEWAL
Munro Q AlbaresGermanyAmy Elsner QUALIFIED
Maria R SaylorsRussiaAnna Fali UNQUALIFIED
Jennifer E SaylorsRussiaElwin Sharvill RENEWAL
Mayumi S KolmetzCanadaIoni Bowcher PROPOSAL
Kadeem O KolmetzFranceAsiya Javayant UNQUALIFIED
Emily X CaldareraSpainBernardo Dominic QUALIFIED
Aditya K KuskoSpainOnyama Limba RENEWAL
Nicolas N SergiJapanAmy Elsner NEGOTIATION
Maisha A SergiAustraliaIoni Bowcher NEGOTIATION
Morrow E ChuiItalyAmy Elsner QUALIFIED
Maria B CaudyCanadaAnna Fali NEGOTIATION
Munro U DarakjyAustraliaElwin Sharvill 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>