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
Jones T MaletIndiaIoni Bowcher UNQUALIFIED
Silvio V GlickSpainElwin Sharvill QUALIFIED
Antonio K SchemmerSpainStephen Shaw PROPOSAL
Darci G GillianBrazilOnyama Limba UNQUALIFIED
Smith V DilliardBrazilStephen Shaw NEW
Smith V FigeroaUnited KingdomAsiya Javayant RENEWAL
Smith G TollnerGermanyIvan Magalhaes NEGOTIATION
Silvio W GillianBrazilAmy Elsner NEW
Darci S BologniaUnited KingdomBernardo Dominic PROPOSAL
James Y FigeroaFranceIvan Magalhaes RENEWAL
Smith H CaldareraJapanIoni Bowcher QUALIFIED
Cody X KolmetzIndiaXuxue Feng NEW
Rodrigues X FlosiFranceIoni Bowcher NEW
Maria C ChuiUnited KingdomBernardo Dominic NEGOTIATION
Sinclair R WaycottGermanyAmy Elsner RENEWAL
Leja E ButtAustraliaBernardo Dominic RENEWAL
Johnson D CaudyFranceBernardo Dominic NEGOTIATION
Costa T WaycottUnited KingdomXuxue Feng RENEWAL
Aika R ButtBrazilIoni Bowcher PROPOSAL
Claire G PerinIndiaOnyama Limba QUALIFIED
Nicolas A BriddickUnited KingdomXuxue Feng QUALIFIED
Leon Y GauchoFranceAmy Elsner NEW
Aruna A NestleRussiaAnna Fali QUALIFIED
Jones G KuskoAustraliaAmy Elsner NEW
Isabel T GarufiRussiaStephen Shaw PROPOSAL
Salvatore C StensethGermanyElwin Sharvill RENEWAL
Ricardo T MaletUnited KingdomBernardo Dominic RENEWAL
Stacey P NestleFranceStephen Shaw NEGOTIATION
Ricardo V CaldareraGermanyIvan Magalhaes NEW
Ivar I AmigonBrazilXuxue Feng PROPOSAL
Jefferson X MarrierGermanyElwin Sharvill NEW
Francesco V VocelkaIndiaXuxue Feng NEGOTIATION
James Z TollnerGermanyAnna Fali UNQUALIFIED
Chavez B PoquetteGermanyAmy Elsner NEGOTIATION
Johnson J CaudyRussiaBernardo Dominic PROPOSAL
Kadeem V CaldareraAustraliaElwin Sharvill NEW
Alejandro U KolmetzArgentinaStephen Shaw UNQUALIFIED
Kaitlin S OldroydUnited KingdomXuxue Feng QUALIFIED
Greenwood G CampainGermanyAsiya Javayant NEGOTIATION
Sinclair B RutaRussiaBernardo Dominic UNQUALIFIED
Deepesh W MacleadIndiaAmy Elsner PROPOSAL
Ivar L VocelkaAustraliaStephen Shaw QUALIFIED
Emily I RulapaughBrazilStephen Shaw RENEWAL
Morrow M WaycottArgentinaIoni Bowcher PROPOSAL
Tony J KolmetzItalyIvan Magalhaes PROPOSAL
Munro B WaycottCanadaStephen Shaw NEGOTIATION
Smith R PerinJapanAsiya Javayant NEGOTIATION
Munro M MacleadItalyBernardo Dominic QUALIFIED
David D DoeBrazilAmy Elsner NEW
Adams V MaletSpainIoni Bowcher NEW
Horizontal
NameCountryRepresentativeStatus
David X MorascaJapanIvan Magalhaes NEW
Faith S RoysterJapanOnyama Limba NEW
Faith L InouyeGermanyAnna Fali RENEWAL
Francesco Z ShinkoJapanXuxue Feng QUALIFIED
Deepesh R NestleArgentinaBernardo Dominic RENEWAL
Johnson V DarakjyUnited KingdomAnna Fali PROPOSAL
Ashley E FigeroaGermanyStephen Shaw NEW
Adams Q RutaCanadaIvan Magalhaes RENEWAL
Mayumi B GauchoSpainAmy Elsner UNQUALIFIED
Tony E MacleadAustraliaAnna Fali PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Mujtaba Z StensethJapan2024-04-29Rangoni Of Florence PROPOSAL81Elwin Sharvill
1001Kaitlin H RoysterBrazil2024-04-10Chemel, James L Cpa NEGOTIATION57Elwin Sharvill
1002Arvin A GillianJapan2024-04-21Dorl, James J Esq NEW40Xuxue Feng
1003Darci C InouyeBrazil2024-03-31Chemel, James L Cpa NEW54Bernardo Dominic
1004Octavia B RimJapan2024-04-15King, Christopher A Esq NEW41Ioni Bowcher
1005Claire C OstroskyCanada2024-04-15Rangoni Of Florence QUALIFIED92Xuxue Feng
1006Chavez Y BriddickFrance2024-04-03Dorl, James J Esq PROPOSAL81Bernardo Dominic
1007Julie W BologniaArgentina2024-04-02Rousseaux, Michael Esq UNQUALIFIED36Stephen Shaw
1008Deepesh C SergiFrance2024-04-10Dorl, James J Esq PROPOSAL2Ivan Magalhaes
1009Mujtaba V SlusarskiArgentina2024-04-06King, Christopher A Esq QUALIFIED53Stephen Shaw
1010Aruna X GlickUnited Kingdom2024-04-15Chapman, Ross E Esq PROPOSAL20Bernardo Dominic
1011Jennifer R RutaBrazil2024-04-22Benton, John B Jr NEGOTIATION93Asiya Javayant
1012Sinclair K RoysterGermany2024-04-10Rangoni Of Florence NEW46Xuxue Feng
1013Misaki Q VocelkaIndia2024-04-27Buckley Miller Wright PROPOSAL68Elwin Sharvill
1014Emily A IturbideJapan2024-04-24Feltz Printing Service NEW53Anna Fali
1015Silvio L WieserItaly2024-04-02Chapman, Ross E Esq NEW69Anna Fali
1016Maria Y DarakjyItaly2024-04-03Commercial Press RENEWAL56Xuxue Feng
1017Alejandro X SaylorsBrazil2024-04-19Chanay, Jeffrey A Esq NEGOTIATION45Elwin Sharvill
1018Sinclair G MorascaIndia2024-04-15Printing Dimensions UNQUALIFIED1Elwin Sharvill
1019Jennifer T VenereGermany2024-04-28King, Christopher A Esq PROPOSAL24Ioni Bowcher
1020Julie B PoquetteGermany2024-04-08Commercial Press NEGOTIATION15Ioni Bowcher
1021Ricardo B ShinkoRussia2024-04-05Feiner Bros UNQUALIFIED49Bernardo Dominic
1022Emily R SlusarskiRussia2024-04-01Buckley Miller Wright UNQUALIFIED13Bernardo Dominic
1023Nicolas M NestleJapan2024-04-16Feiner Bros UNQUALIFIED87Stephen Shaw
1024Mayumi V MaletCanada2024-04-13Truhlar And Truhlar Attys PROPOSAL53Ioni Bowcher
1025Isabel Y SlusarskiArgentina2024-04-01Morlong Associates UNQUALIFIED99Anna Fali
1026Arvin N GarufiArgentina2024-04-06Chemel, James L Cpa NEGOTIATION29Elwin Sharvill
1027Emily I RimCanada2024-04-18Truhlar And Truhlar Attys PROPOSAL21Onyama Limba
1028Aruna D PoquetteCanada2024-04-02Chapman, Ross E Esq NEGOTIATION82Elwin Sharvill
1029Darci N VenereJapan2024-04-16Truhlar And Truhlar Attys NEGOTIATION3Amy Elsner
1030James M FollerBrazil2024-04-04King, Christopher A Esq RENEWAL28Amy Elsner
1031Salvatore F MorascaAustralia2024-04-29Printing Dimensions NEGOTIATION90Anna Fali
1032Antonio O PoquetteIndia2024-04-25Commercial Press RENEWAL17Xuxue Feng
1033Wickens H StensethIndia2024-04-15Feltz Printing Service RENEWAL19Xuxue Feng
1034James C OldroydIndia2024-04-08Dorl, James J Esq QUALIFIED19Bernardo Dominic
1035Jennifer J MorascaItaly2024-04-18Commercial Press NEW92Asiya Javayant
1036Jennifer A ButtSpain2024-04-03Feiner Bros UNQUALIFIED80Xuxue Feng
1037Faith R MaletAustralia2024-04-26Feltz Printing Service NEW62Ioni Bowcher
1038Kadeem D SaylorsItaly2024-04-14Rangoni Of Florence NEGOTIATION55Onyama Limba
1039Mujtaba H VenereUnited Kingdom2024-03-31Printing Dimensions NEGOTIATION74Elwin Sharvill
1040Aruna I VenereAustralia2024-04-10Feiner Bros PROPOSAL9Stephen Shaw
1041Isabel R BowleyItaly2024-04-02Truhlar And Truhlar Attys QUALIFIED75Onyama Limba
1042Jones R TollnerSpain2024-04-02Rousseaux, Michael Esq NEW45Xuxue Feng
1043Jennifer K AmigonUnited Kingdom2024-04-05Truhlar And Truhlar Attys NEW70Xuxue Feng
1044Clifford O KolmetzCanada2024-04-29King, Christopher A Esq NEW38Ivan Magalhaes
1045Misaki S GauchoRussia2024-04-16Truhlar And Truhlar Attys NEGOTIATION19Ioni Bowcher
1046Aruna U MarrierGermany2024-04-25Morlong Associates QUALIFIED60Elwin Sharvill
1047Costa W DarakjyUnited Kingdom2024-04-20King, Christopher A Esq PROPOSAL3Asiya Javayant
1048Ashley R CaldareraSpain2024-04-08Printing Dimensions RENEWAL22Ivan Magalhaes
1049Costa K OstroskyFrance2024-04-22Chanay, Jeffrey A Esq NEW0Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Ricardo Q MarrierSpainAsiya Javayant NEW
Juan V CaudySpainXuxue Feng QUALIFIED
Salvatore P SchemmerJapanXuxue Feng QUALIFIED
Maria J FlosiFranceAmy Elsner NEW
Munro Q MaletFranceIvan Magalhaes QUALIFIED
Izzy P GauchoCanadaOnyama Limba NEGOTIATION
Juan I VenereJapanStephen Shaw NEW
Francesco C CaldareraFranceAmy Elsner RENEWAL
Emily D SchemmerUnited KingdomAmy Elsner NEGOTIATION
Leon T FollerSpainXuxue Feng NEGOTIATION
Aika R DarakjyUnited KingdomXuxue Feng QUALIFIED
Arvin B SaylorsJapanAnna Fali PROPOSAL
Nicolas J OstroskyArgentinaAmy Elsner NEW
Sinclair E OldroydItalyElwin Sharvill QUALIFIED
Jennifer F NickaUnited KingdomStephen Shaw UNQUALIFIED
Sinclair C GillianUnited KingdomAsiya Javayant PROPOSAL
Aika D WhobreyRussiaBernardo Dominic QUALIFIED
Ricardo N AlbaresFranceIoni Bowcher NEW
Chavez I MarrierBrazilStephen Shaw QUALIFIED
Silvio O SlusarskiArgentinaAnna Fali NEGOTIATION
Deepesh Z NestleIndiaBernardo Dominic QUALIFIED
Smith S GauchoRussiaAnna Fali RENEWAL
Octavia X StockhamGermanyBernardo Dominic PROPOSAL
Maria P CaldareraSpainIvan Magalhaes QUALIFIED
Costa O StockhamUnited KingdomXuxue Feng PROPOSAL
Johnson D CampainRussiaAsiya Javayant RENEWAL
Darci Z VocelkaBrazilAnna Fali PROPOSAL
Isabel N BriddickBrazilAmy Elsner UNQUALIFIED
Jennifer W FerenczJapanStephen Shaw UNQUALIFIED
Clifford T SlusarskiBrazilStephen Shaw PROPOSAL
Francesco D MaletRussiaAsiya Javayant UNQUALIFIED
Munro L DilliardIndiaStephen Shaw UNQUALIFIED
Alejandro I KuskoCanadaAmy Elsner UNQUALIFIED
Alejandro X OstroskyCanadaIoni Bowcher NEGOTIATION
Arvin S DilliardBrazilAnna Fali NEW
Costa H PerinSpainAnna Fali QUALIFIED
Octavia U SaylorsSpainAnna Fali UNQUALIFIED
Darci V RoysterArgentinaElwin Sharvill QUALIFIED
Stacey Y NickaFranceElwin Sharvill QUALIFIED
Darci L PoquetteSpainBernardo Dominic QUALIFIED
Leon J FollerAustraliaStephen Shaw QUALIFIED
Antonio S RimRussiaAmy Elsner UNQUALIFIED
Clifford K GlickCanadaIoni Bowcher UNQUALIFIED
Jennifer H ShinkoBrazilIvan Magalhaes PROPOSAL
Leja V DilliardUnited KingdomStephen Shaw NEW
Jennifer X SchemmerGermanyIoni Bowcher UNQUALIFIED
David P NickaBrazilIvan Magalhaes NEW
Misaki K NestleRussiaBernardo Dominic QUALIFIED
Smith N FerenczRussiaBernardo Dominic NEW
Octavia D WieserSpainAmy Elsner PROPOSAL
Frozen Columns
Name
Isabel S Ferencz
Johnson D Ostrosky
Misaki L Malet
Morrow K Darakjy
Emily U Briddick
Jones Y Oldroyd
Ivar H Nicka
Jefferson H Glick
Jennifer M Albares
Nicolas V Chui
Ricardo N Wieser
Stacey I Bolognia
Juan I Iturbide
Jeanfrancois N Wieser
Isabel V Rim
Murillo E Slusarski
Rodrigues P Dilliard
Maria A Ruta
Smith I Rulapaugh
Silvio G Briddick
Silvio P Royster
Claire Y Figeroa
Silvio M Malet
Maria B Bowley
Cody Q Schemmer
David O Perin
Sinclair G Glick
Julie M Caldarera
Antonio N Dilliard
Silvio U Stenseth
Emily F Kolmetz
Silvio X Waycott
David O Vocelka
James W Malet
Greenwood I Dilliard
Jones W Waycott
Morrow B Nestle
Chavez G Flosi
Mujtaba S Bolognia
Jefferson E Paprocki
Silvio V Doe
Jones C Wieser
Maria H Figeroa
Emily L Royster
Rodrigues K Whobrey
Aruna F Shinko
Aruna Q Vocelka
Isabel F Slusarski
Arvin S Maclead
Clifford I Marrier
IdCountryDate
1000Argentina2024-04-09
1001France2024-04-24
1002Australia2024-04-23
1003Russia2024-04-20
1004Spain2024-04-28
1005Brazil2024-04-22
1006Germany2024-04-16
1007Germany2024-04-03
1008Brazil2024-04-25
1009Spain2024-04-03
1010France2024-04-11
1011France2024-03-31
1012Japan2024-04-16
1013Russia2024-04-01
1014United Kingdom2024-04-26
1015India2024-04-16
1016Brazil2024-04-20
1017Japan2024-04-26
1018Australia2024-04-09
1019Italy2024-04-09
1020India2024-04-08
1021Germany2024-04-13
1022Germany2024-04-14
1023Russia2024-04-02
1024India2024-04-09
1025Brazil2024-03-31
1026France2024-04-27
1027France2024-04-24
1028India2024-04-19
1029Germany2024-04-02
1030Italy2024-04-28
1031United Kingdom2024-04-22
1032France2024-04-21
1033Spain2024-04-20
1034Russia2024-04-01
1035Brazil2024-04-10
1036Spain2024-04-17
1037India2024-04-12
1038Italy2024-04-05
1039Brazil2024-04-02
1040Russia2024-04-05
1041Brazil2024-04-03
1042United Kingdom2024-04-02
1043Brazil2024-04-22
1044Japan2024-04-20
1045Italy2024-04-16
1046Canada2024-04-11
1047Argentina2024-04-09
1048Japan2024-04-16
1049Russia2024-04-07

On-Demand Data

NameIdCountryDate
Adams Q Gillian1000Canada2024-04-25
Maria H Gaucho1001Brazil2024-04-17
Alejandro T Wieser1002Canada2024-04-10
Faith C Bolognia1003Russia2024-04-21
Tony C Ruta1004France2024-04-06
Rodrigues U Glick1005United Kingdom2024-04-17
Isabel A Malet1006Brazil2024-04-16
Deepesh F Flosi1007United Kingdom2024-04-03
Tony H Stenseth1008Brazil2024-04-14
Rodrigues V Kolmetz1009Germany2024-04-02
Deepesh O Schemmer1010Spain2024-04-06
Misaki J Amigon1011Germany2024-04-27
Stacey O Perin1012France2024-04-01
Julie X Amigon1013Argentina2024-04-10
Aika Y Gaucho1014India2024-04-02
Sinclair S Slusarski1015Spain2024-04-27
Leja E Kusko1016India2024-04-13
Leja F Caudy1017Australia2024-04-21
Salvatore B Ostrosky1018India2024-04-06
Rodrigues Y Inouye1019United Kingdom2024-04-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maria L RutaIndiaAsiya Javayant QUALIFIED
Clifford S SlusarskiFranceAsiya Javayant QUALIFIED
Silvio Y AlbaresArgentinaBernardo Dominic RENEWAL
Clifford Z VenereRussiaOnyama Limba RENEWAL
Munro O IturbideCanadaStephen Shaw RENEWAL
Ashley X ShinkoGermanyAmy Elsner QUALIFIED
Mayumi K AmigonIndiaIoni Bowcher NEW
Misaki S BologniaArgentinaAnna Fali RENEWAL
Claire X KuskoJapanIvan Magalhaes PROPOSAL
Leja E StensethBrazilOnyama Limba QUALIFIED
Misaki T InouyeJapanIvan Magalhaes NEGOTIATION
Silvio U MaletFranceIoni Bowcher RENEWAL
Munro U SlusarskiBrazilStephen Shaw UNQUALIFIED
Adams X FigeroaBrazilAmy Elsner NEGOTIATION
Murillo Z GillianRussiaStephen Shaw NEW
Ivar L NickaIndiaBernardo Dominic QUALIFIED
Kaitlin V WaycottSpainAnna Fali QUALIFIED
Ricardo S VocelkaSpainAsiya Javayant RENEWAL
Leja R StockhamIndiaStephen Shaw NEGOTIATION
Aika X BowleyItalyElwin Sharvill NEW
Silvio A ShinkoRussiaIoni Bowcher NEGOTIATION
Greenwood M ShinkoArgentinaAnna Fali QUALIFIED
Maria Q InouyeFranceStephen Shaw UNQUALIFIED
Octavia F BowleyArgentinaElwin Sharvill PROPOSAL
James D FollerSpainOnyama Limba QUALIFIED
Misaki U StockhamBrazilAsiya Javayant UNQUALIFIED
Morrow V RulapaughGermanyIvan Magalhaes NEGOTIATION
Costa Q OldroydArgentinaStephen Shaw RENEWAL
Rodrigues I DarakjyFranceElwin Sharvill NEGOTIATION
Mayumi B InouyeRussiaElwin Sharvill RENEWAL
Jones U RoysterItalyIoni Bowcher NEGOTIATION
Faith P WieserAustraliaAnna Fali UNQUALIFIED
Maisha T IturbideAustraliaIoni Bowcher QUALIFIED
Ricardo A MaletIndiaOnyama Limba NEW
Maria K BriddickItalyAsiya Javayant UNQUALIFIED
Faith M NestleUnited KingdomIoni Bowcher PROPOSAL
Stacey X BriddickRussiaIoni Bowcher NEW
Chavez Y FlosiItalyIoni Bowcher NEGOTIATION
Juan G WhobreyIndiaAsiya Javayant UNQUALIFIED
Mujtaba H VenereIndiaBernardo Dominic 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>