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
Antonio Z PaprockiCanadaOnyama Limba RENEWAL
Salvatore U AmigonCanadaXuxue Feng NEGOTIATION
Darci N SchemmerRussiaIoni Bowcher PROPOSAL
Ivar W CaldareraIndiaIvan Magalhaes RENEWAL
Smith N IturbideFranceOnyama Limba NEW
Emily V FigeroaRussiaAnna Fali NEW
Costa S BowleyArgentinaIoni Bowcher UNQUALIFIED
Antonio E RulapaughAustraliaOnyama Limba QUALIFIED
Emily E OstroskyFranceXuxue Feng UNQUALIFIED
Kadeem P MaletGermanyAnna Fali NEGOTIATION
Maria S AlbaresSpainBernardo Dominic QUALIFIED
Greenwood P OstroskyCanadaStephen Shaw RENEWAL
Maisha W GauchoFranceAnna Fali NEGOTIATION
Octavia S NickaSpainXuxue Feng PROPOSAL
Aika O PoquetteAustraliaXuxue Feng NEGOTIATION
Costa U ShinkoArgentinaStephen Shaw NEW
Adams Z GlickItalyElwin Sharvill NEGOTIATION
James B StockhamSpainElwin Sharvill UNQUALIFIED
Arvin Z SchemmerAustraliaBernardo Dominic UNQUALIFIED
Greenwood L AlbaresItalyAmy Elsner PROPOSAL
Sinclair Z StockhamAustraliaBernardo Dominic RENEWAL
Wickens J SergiGermanyAnna Fali NEW
Stacey R GarufiSpainAnna Fali NEGOTIATION
Silvio I FollerItalyAmy Elsner RENEWAL
Salvatore S PerinRussiaOnyama Limba QUALIFIED
Aruna P FlosiAustraliaBernardo Dominic UNQUALIFIED
Claire G WieserGermanyStephen Shaw RENEWAL
Faith S CaldareraUnited KingdomIvan Magalhaes UNQUALIFIED
Salvatore K FigeroaGermanyBernardo Dominic RENEWAL
Maisha P SaylorsJapanElwin Sharvill RENEWAL
Johnson P StensethRussiaAsiya Javayant UNQUALIFIED
Nicolas G CaldareraJapanIoni Bowcher RENEWAL
Jennifer X InouyeFranceIvan Magalhaes PROPOSAL
James P GillianRussiaStephen Shaw NEW
Jennifer W WhobreyRussiaElwin Sharvill UNQUALIFIED
Jefferson F MacleadGermanyIoni Bowcher QUALIFIED
Juan H SaylorsRussiaAmy Elsner PROPOSAL
Maisha X CaudyFranceXuxue Feng QUALIFIED
Munro T OstroskyIndiaOnyama Limba UNQUALIFIED
Misaki V MaletSpainIvan Magalhaes NEW
Julie U ShinkoGermanyBernardo Dominic PROPOSAL
Alejandro Z OstroskyBrazilIvan Magalhaes QUALIFIED
Leja O PoquetteGermanyElwin Sharvill PROPOSAL
Jeanfrancois G RimJapanAnna Fali PROPOSAL
Antonio K KuskoItalyAmy Elsner NEGOTIATION
Greenwood K KolmetzAustraliaIoni Bowcher QUALIFIED
Maisha P SlusarskiJapanAmy Elsner PROPOSAL
Adams S PerinBrazilStephen Shaw NEW
Clifford Q TollnerItalyStephen Shaw NEGOTIATION
Morrow P KolmetzIndiaIvan Magalhaes NEW
Horizontal
NameCountryRepresentativeStatus
Stacey S InouyeGermanyIoni Bowcher RENEWAL
Leon M RoysterBrazilElwin Sharvill UNQUALIFIED
Julie B RimBrazilStephen Shaw NEGOTIATION
Claire F VocelkaBrazilXuxue Feng QUALIFIED
Clifford V GlickArgentinaXuxue Feng NEW
Tony G FigeroaRussiaAsiya Javayant NEGOTIATION
Izzy W SlusarskiSpainAmy Elsner RENEWAL
Arvin G IturbideGermanyIoni Bowcher PROPOSAL
Antonio A FigeroaSpainAsiya Javayant PROPOSAL
Tony G FlosiCanadaBernardo Dominic NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maisha S CaldareraSpain2024-04-21Chanay, Jeffrey A Esq UNQUALIFIED17Xuxue Feng
1001Wickens V RulapaughIndia2024-04-24Morlong Associates RENEWAL60Stephen Shaw
1002Alejandro X FerenczItaly2024-04-08Chemel, James L Cpa RENEWAL72Asiya Javayant
1003Aika W FollerGermany2024-03-31Chemel, James L Cpa QUALIFIED23Elwin Sharvill
1004Claire T GarufiBrazil2024-03-30Commercial Press NEW24Anna Fali
1005Alejandro X FigeroaUnited Kingdom2024-04-27King, Christopher A Esq RENEWAL38Onyama Limba
1006Kadeem Y CampainItaly2024-04-03Feiner Bros PROPOSAL94Ivan Magalhaes
1007Leon G ChuiArgentina2024-04-03King, Christopher A Esq RENEWAL95Stephen Shaw
1008Julie Q AmigonArgentina2024-04-22Chapman, Ross E Esq UNQUALIFIED40Amy Elsner
1009Claire Y GarufiFrance2024-04-16Chemel, James L Cpa NEW44Bernardo Dominic
1010Darci K RimIndia2024-04-07Chapman, Ross E Esq NEGOTIATION76Onyama Limba
1011Aika C ButtArgentina2024-04-08Rousseaux, Michael Esq UNQUALIFIED95Stephen Shaw
1012Claire T NestleCanada2024-04-07Chemel, James L Cpa NEGOTIATION5Stephen Shaw
1013Munro C TollnerFrance2024-03-31Commercial Press NEGOTIATION20Ivan Magalhaes
1014Mujtaba P DoeCanada2024-04-07King, Christopher A Esq NEW45Amy Elsner
1015Alejandro T RulapaughItaly2024-04-17Truhlar And Truhlar Attys PROPOSAL7Amy Elsner
1016Jones L TollnerBrazil2024-04-08Rangoni Of Florence QUALIFIED74Bernardo Dominic
1017Maria D DilliardSpain2024-03-30Rangoni Of Florence RENEWAL90Xuxue Feng
1018Darci N FollerArgentina2024-04-05Rangoni Of Florence QUALIFIED35Ivan Magalhaes
1019Leja M StockhamGermany2024-04-14Truhlar And Truhlar Attys RENEWAL90Anna Fali
1020Aika G StensethJapan2024-04-08Morlong Associates NEW35Asiya Javayant
1021Greenwood N PoquetteUnited Kingdom2024-04-24Feiner Bros NEGOTIATION79Ioni Bowcher
1022Leja U RimAustralia2024-04-14Feltz Printing Service PROPOSAL76Bernardo Dominic
1023Ivar D DilliardSpain2024-03-30Truhlar And Truhlar Attys RENEWAL9Xuxue Feng
1024Johnson W VenereCanada2024-04-15Buckley Miller Wright NEGOTIATION41Asiya Javayant
1025Darci U DarakjyFrance2024-04-01Morlong Associates RENEWAL27Amy Elsner
1026Munro X CampainBrazil2024-04-08Dorl, James J Esq PROPOSAL16Anna Fali
1027Octavia E FlosiAustralia2024-04-05Feiner Bros UNQUALIFIED57Asiya Javayant
1028Aruna X RulapaughBrazil2024-04-24King, Christopher A Esq PROPOSAL33Xuxue Feng
1029Emily U AlbaresBrazil2024-04-13Buckley Miller Wright NEW23Stephen Shaw
1030Murillo B FollerFrance2024-04-16Chapman, Ross E Esq UNQUALIFIED74Xuxue Feng
1031David G DoeItaly2024-04-22Chapman, Ross E Esq QUALIFIED49Ioni Bowcher
1032Morrow U AmigonCanada2024-04-04Benton, John B Jr UNQUALIFIED90Asiya Javayant
1033Leja V OstroskyIndia2024-04-07Dorl, James J Esq RENEWAL84Xuxue Feng
1034Aditya I RoysterCanada2024-04-14Dorl, James J Esq NEW91Ivan Magalhaes
1035Arvin D StockhamJapan2024-04-04Feiner Bros NEGOTIATION97Amy Elsner
1036Jones D OstroskyFrance2024-04-12Printing Dimensions NEGOTIATION27Elwin Sharvill
1037David C MorascaJapan2024-03-30Feiner Bros PROPOSAL47Stephen Shaw
1038Greenwood R GauchoAustralia2024-04-19Chemel, James L Cpa RENEWAL35Xuxue Feng
1039Munro D BowleyItaly2024-03-31Chapman, Ross E Esq QUALIFIED96Onyama Limba
1040Octavia B VenereGermany2024-04-17Chanay, Jeffrey A Esq NEGOTIATION22Onyama Limba
1041Sinclair G VenereRussia2024-04-14Morlong Associates PROPOSAL15Xuxue Feng
1042Mujtaba Y OldroydItaly2024-04-18Chemel, James L Cpa UNQUALIFIED44Stephen Shaw
1043Ivar L MaletCanada2024-04-23Printing Dimensions PROPOSAL53Bernardo Dominic
1044Munro T DilliardAustralia2024-04-22Benton, John B Jr RENEWAL91Asiya Javayant
1045Salvatore V StensethJapan2024-04-23Feltz Printing Service RENEWAL87Asiya Javayant
1046Deepesh C CaldareraUnited Kingdom2024-04-08Chapman, Ross E Esq QUALIFIED3Elwin Sharvill
1047Kadeem A BowleyItaly2024-04-08Chemel, James L Cpa QUALIFIED91Ioni Bowcher
1048Clifford Q WhobreyAustralia2024-04-05Rangoni Of Florence RENEWAL62Xuxue Feng
1049Francesco P GillianItaly2024-04-27Commercial Press RENEWAL54Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Rodrigues B OldroydFranceStephen Shaw UNQUALIFIED
Silvio T VocelkaItalyElwin Sharvill RENEWAL
Jennifer F IturbideBrazilAmy Elsner NEGOTIATION
Aditya N SaylorsArgentinaStephen Shaw UNQUALIFIED
Ashley M VocelkaBrazilAnna Fali UNQUALIFIED
Ricardo X SchemmerFranceOnyama Limba RENEWAL
Cody D SchemmerCanadaElwin Sharvill QUALIFIED
Smith O KuskoItalyAnna Fali NEGOTIATION
Mujtaba S BowleyIndiaAnna Fali PROPOSAL
Leon L OstroskyAustraliaAsiya Javayant QUALIFIED
Kaitlin I PoquetteItalyAsiya Javayant NEW
Ivar A VocelkaFranceIvan Magalhaes NEGOTIATION
James Z CampainIndiaAmy Elsner NEGOTIATION
Claire D SlusarskiIndiaIvan Magalhaes UNQUALIFIED
Julie F OldroydItalyAmy Elsner RENEWAL
Octavia C BologniaAustraliaBernardo Dominic UNQUALIFIED
Mujtaba I VenereAustraliaXuxue Feng NEGOTIATION
Faith X MaletItalyAmy Elsner UNQUALIFIED
Darci T DarakjyJapanAmy Elsner PROPOSAL
Mujtaba A AlbaresUnited KingdomOnyama Limba NEW
Leja Y IturbideJapanOnyama Limba RENEWAL
David U BologniaBrazilAsiya Javayant NEGOTIATION
Izzy D CaldareraArgentinaOnyama Limba RENEWAL
Clifford R CampainAustraliaIoni Bowcher UNQUALIFIED
Maisha J CaudyCanadaBernardo Dominic NEGOTIATION
Silvio S GillianFranceIoni Bowcher QUALIFIED
Juan S GauchoItalyAsiya Javayant RENEWAL
Rodrigues A BologniaJapanXuxue Feng NEW
Adams M MaletFranceIoni Bowcher QUALIFIED
Ivar S SchemmerRussiaIvan Magalhaes NEGOTIATION
Antonio Y KuskoIndiaElwin Sharvill PROPOSAL
Ivar X ButtFranceAsiya Javayant NEGOTIATION
Silvio A StockhamRussiaBernardo Dominic NEGOTIATION
Tony B FlosiJapanOnyama Limba NEW
Deepesh B StensethItalyAnna Fali RENEWAL
Maria H SlusarskiCanadaElwin Sharvill NEW
Kadeem C AlbaresIndiaAmy Elsner NEW
Mayumi S ButtItalyAnna Fali UNQUALIFIED
Adams A GauchoCanadaXuxue Feng PROPOSAL
Greenwood R PaprockiJapanElwin Sharvill NEGOTIATION
Ricardo W GillianArgentinaAnna Fali UNQUALIFIED
Morrow S SaylorsAustraliaAnna Fali RENEWAL
Morrow S MorascaArgentinaOnyama Limba QUALIFIED
Cody V GlickIndiaOnyama Limba PROPOSAL
Emily J PerinSpainBernardo Dominic QUALIFIED
Nicolas I ChuiAustraliaIvan Magalhaes NEGOTIATION
Alejandro L StensethFranceAnna Fali NEGOTIATION
Ashley J SaylorsJapanIvan Magalhaes QUALIFIED
Smith E GillianJapanOnyama Limba QUALIFIED
Salvatore L MaletCanadaElwin Sharvill NEGOTIATION
Frozen Columns
Name
Silvio H Inouye
Costa Q Inouye
Clifford X Rim
Cody V Butt
Mayumi G Nicka
Aika H Nestle
Emily M Campain
Faith A Whobrey
Silvio O Poquette
Cody J Nicka
Ricardo D Saylors
Wickens M Chui
Silvio L Waycott
Wickens D Malet
Johnson N Flosi
Claire U Stockham
Kadeem N Saylors
Aditya R Morasca
Jefferson Y Wieser
James J Doe
Sinclair O Amigon
Maisha A Poquette
Julie O Nestle
Munro G Kusko
Stacey B Poquette
Ricardo Z Paprocki
Jones I Dilliard
Aika P Darakjy
Salvatore C Bolognia
Emily G Campain
Aruna F Morasca
Chavez W Poquette
Emily L Darakjy
Alejandro H Shinko
Wickens W Perin
Johnson C Waycott
Leon K Caudy
Wickens O Doe
Leja D Nestle
Jefferson U Dilliard
Tony B Sergi
Francesco W Malet
Octavia V Darakjy
Wickens B Wieser
Murillo X Slusarski
David Z Whobrey
Julie V Nicka
Ashley K Malet
Chavez J Briddick
Sinclair L Amigon
IdCountryDate
1000Italy2024-04-12
1001Italy2024-04-23
1002Japan2024-04-22
1003Argentina2024-04-13
1004Japan2024-04-10
1005Canada2024-04-20
1006France2024-04-09
1007Germany2024-04-04
1008Canada2024-04-24
1009United Kingdom2024-04-20
1010Argentina2024-04-27
1011Canada2024-04-08
1012Australia2024-04-23
1013United Kingdom2024-04-09
1014Spain2024-03-30
1015France2024-04-22
1016Canada2024-03-31
1017Germany2024-04-20
1018Germany2024-03-31
1019Spain2024-04-22
1020France2024-04-12
1021United Kingdom2024-04-03
1022France2024-04-25
1023Australia2024-04-01
1024Argentina2024-04-06
1025France2024-04-04
1026Japan2024-04-06
1027Japan2024-04-08
1028Japan2024-04-23
1029Spain2024-04-04
1030Germany2024-04-20
1031Australia2024-04-06
1032Australia2024-04-08
1033Canada2024-04-07
1034Germany2024-04-10
1035Canada2024-04-13
1036Japan2024-04-16
1037Spain2024-04-01
1038Brazil2024-04-25
1039Spain2024-04-02
1040Brazil2024-04-07
1041Russia2024-04-20
1042Germany2024-04-03
1043Australia2024-04-19
1044Russia2024-04-05
1045Brazil2024-04-08
1046France2024-04-25
1047Argentina2024-04-27
1048United Kingdom2024-04-12
1049France2024-04-27

On-Demand Data

NameIdCountryDate
Julie C Amigon1000Italy2024-04-18
David W Glick1001Argentina2024-04-25
Murillo J Slusarski1002Spain2024-04-22
Arvin Y Rim1003Japan2024-04-28
Kadeem G Albares1004Canada2024-04-03
Antonio H Maclead1005Brazil2024-03-31
Kadeem D Caldarera1006Canada2024-04-27
Smith N Schemmer1007Argentina2024-04-18
Faith B Stockham1008Australia2024-04-05
Cody I Paprocki1009Russia2024-04-05
Greenwood E Whobrey1010India2024-04-26
David I Rim1011Japan2024-04-25
Clifford P Albares1012Argentina2024-04-23
Mayumi V Briddick1013Spain2024-04-22
Emily X Rulapaugh1014Brazil2024-04-05
Smith D Schemmer1015Germany2024-04-22
Johnson P Wieser1016Argentina2024-04-10
Jones E Malet1017Australia2024-04-02
Ricardo P Rulapaugh1018United Kingdom2024-04-04
Ashley X Slusarski1019Brazil2024-04-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Francesco H SaylorsBrazilElwin Sharvill UNQUALIFIED
Nicolas I OstroskyCanadaBernardo Dominic UNQUALIFIED
Izzy Y CaudyCanadaBernardo Dominic PROPOSAL
Darci N IturbideGermanyOnyama Limba QUALIFIED
Alejandro T FigeroaGermanyElwin Sharvill UNQUALIFIED
Kaitlin E BriddickSpainIvan Magalhaes PROPOSAL
Silvio I ChuiSpainXuxue Feng NEGOTIATION
Mayumi G FollerGermanyIoni Bowcher NEGOTIATION
Greenwood O FigeroaBrazilStephen Shaw NEW
James V MaletAustraliaBernardo Dominic UNQUALIFIED
Kaitlin D MarrierBrazilOnyama Limba QUALIFIED
Johnson I SlusarskiIndiaIvan Magalhaes PROPOSAL
Francesco K InouyeFranceAmy Elsner NEW
Juan G InouyeCanadaAsiya Javayant RENEWAL
Kaitlin A RulapaughIndiaAsiya Javayant NEW
Clifford N MorascaCanadaAmy Elsner NEW
Aditya G MaletBrazilAnna Fali QUALIFIED
Munro S DoeSpainIoni Bowcher NEW
Julie G KuskoFranceIoni Bowcher PROPOSAL
Stacey E GillianUnited KingdomAmy Elsner RENEWAL
Emily I RutaUnited KingdomAnna Fali QUALIFIED
Juan Z GillianBrazilAnna Fali QUALIFIED
Greenwood S PoquetteItalyOnyama Limba NEW
Misaki Q GauchoArgentinaOnyama Limba NEW
Maisha L VocelkaIndiaElwin Sharvill NEW
Rodrigues A RoysterJapanElwin Sharvill NEW
Izzy F FigeroaCanadaElwin Sharvill NEW
Izzy B FollerAustraliaOnyama Limba QUALIFIED
Aika U SergiRussiaElwin Sharvill NEW
Stacey N FerenczItalyXuxue Feng QUALIFIED
Kadeem F ButtCanadaAmy Elsner UNQUALIFIED
Silvio T PoquetteAustraliaBernardo Dominic RENEWAL
Jeanfrancois Q FollerSpainAmy Elsner QUALIFIED
Wickens I MorascaBrazilBernardo Dominic RENEWAL
Johnson F MaletGermanyIvan Magalhaes PROPOSAL
Ivar R KolmetzArgentinaAsiya Javayant RENEWAL
Arvin U InouyeArgentinaBernardo Dominic PROPOSAL
Leon K FigeroaAustraliaElwin Sharvill PROPOSAL
Julie L SlusarskiJapanOnyama Limba PROPOSAL
Jones P MaletAustraliaIvan Magalhaes 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>