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
David M FigeroaAustraliaIoni Bowcher UNQUALIFIED
Aruna D ChuiUnited KingdomOnyama Limba RENEWAL
Octavia K CaldareraSpainAsiya Javayant RENEWAL
Jefferson K SaylorsAustraliaOnyama Limba RENEWAL
Maria S TollnerGermanyStephen Shaw UNQUALIFIED
Kaitlin Y FigeroaItalyAsiya Javayant NEW
Emily C FerenczUnited KingdomOnyama Limba UNQUALIFIED
Nicolas K MaletRussiaXuxue Feng RENEWAL
Aruna T ShinkoItalyOnyama Limba RENEWAL
Leon C AlbaresGermanyAsiya Javayant UNQUALIFIED
Aika U PoquetteJapanAmy Elsner NEW
Antonio R VenereRussiaAnna Fali RENEWAL
Maisha D DoeItalyStephen Shaw QUALIFIED
Wickens E SlusarskiCanadaXuxue Feng UNQUALIFIED
Silvio D VenereArgentinaOnyama Limba PROPOSAL
Johnson N MarrierGermanyXuxue Feng UNQUALIFIED
Francesco I FlosiJapanElwin Sharvill QUALIFIED
Octavia Z IturbideArgentinaBernardo Dominic QUALIFIED
Aditya G MaletArgentinaIvan Magalhaes NEGOTIATION
Cody Y ChuiItalyIoni Bowcher PROPOSAL
Johnson R InouyeUnited KingdomBernardo Dominic NEGOTIATION
Jones R CaldareraIndiaXuxue Feng RENEWAL
Emily G PerinAustraliaAnna Fali UNQUALIFIED
Nicolas G AmigonAustraliaAsiya Javayant QUALIFIED
Leja I WaycottIndiaIoni Bowcher NEW
Jones P GauchoJapanElwin Sharvill RENEWAL
David J GauchoAustraliaXuxue Feng NEGOTIATION
Aika O PerinUnited KingdomOnyama Limba NEW
Smith N TollnerRussiaIvan Magalhaes QUALIFIED
Jennifer O ButtFranceXuxue Feng QUALIFIED
Stacey V FigeroaIndiaAnna Fali NEW
Jones F CaldareraItalyAnna Fali UNQUALIFIED
Aditya N MacleadAustraliaAmy Elsner UNQUALIFIED
Maisha V SlusarskiArgentinaIoni Bowcher RENEWAL
Johnson E SlusarskiCanadaXuxue Feng NEW
Claire S DoeGermanyAnna Fali QUALIFIED
Cody P SaylorsJapanAsiya Javayant QUALIFIED
Ricardo S SergiCanadaIvan Magalhaes PROPOSAL
Clifford X OstroskyArgentinaBernardo Dominic RENEWAL
Kaitlin B GlickAustraliaBernardo Dominic RENEWAL
Ricardo E SlusarskiItalyIoni Bowcher NEGOTIATION
Sinclair N MaletBrazilElwin Sharvill QUALIFIED
Maria N MaletGermanyBernardo Dominic NEW
Costa D PaprockiFranceAsiya Javayant PROPOSAL
Wickens W BriddickCanadaAsiya Javayant PROPOSAL
Antonio Z WhobreyItalyIvan Magalhaes UNQUALIFIED
Adams N BriddickUnited KingdomAsiya Javayant RENEWAL
Misaki K SaylorsGermanyAsiya Javayant NEW
Deepesh Z SlusarskiFranceOnyama Limba PROPOSAL
Greenwood T SaylorsFranceElwin Sharvill UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Nicolas X GarufiUnited KingdomElwin Sharvill NEW
Izzy V WhobreyAustraliaAsiya Javayant RENEWAL
Julie J FlosiAustraliaIvan Magalhaes UNQUALIFIED
Adams Q GauchoGermanyOnyama Limba NEW
Juan A VenereAustraliaAsiya Javayant NEW
Antonio A GarufiIndiaXuxue Feng QUALIFIED
Claire S GauchoBrazilBernardo Dominic UNQUALIFIED
Cody F MaletAustraliaAsiya Javayant UNQUALIFIED
Stacey B GarufiSpainAmy Elsner NEW
Munro W NestleAustraliaIoni Bowcher PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Tony G StensethSpain2024-04-01Printing Dimensions UNQUALIFIED56Ivan Magalhaes
1001Cody M VenereSpain2024-04-02King, Christopher A Esq NEW86Asiya Javayant
1002Costa X FerenczCanada2024-04-08Truhlar And Truhlar Attys NEGOTIATION79Asiya Javayant
1003Jeanfrancois R CaudyItaly2024-04-24Benton, John B Jr NEGOTIATION78Elwin Sharvill
1004Clifford W AlbaresIndia2024-04-17Chanay, Jeffrey A Esq NEGOTIATION55Stephen Shaw
1005James T MorascaIndia2024-04-05Chapman, Ross E Esq RENEWAL28Anna Fali
1006Smith M MaletFrance2024-04-20Morlong Associates QUALIFIED75Elwin Sharvill
1007Darci T PaprockiJapan2024-04-13Morlong Associates RENEWAL92Elwin Sharvill
1008Juan C RoysterRussia2024-04-22Truhlar And Truhlar Attys PROPOSAL6Amy Elsner
1009Isabel F AlbaresSpain2024-04-17Rangoni Of Florence QUALIFIED29Stephen Shaw
1010Izzy Z DilliardAustralia2024-04-25Printing Dimensions NEW73Onyama Limba
1011Arvin V VenereIndia2024-04-04Buckley Miller Wright UNQUALIFIED49Bernardo Dominic
1012Juan X RimRussia2024-04-23Dorl, James J Esq QUALIFIED20Stephen Shaw
1013Munro E OstroskyIndia2024-04-24Rangoni Of Florence UNQUALIFIED55Bernardo Dominic
1014Aruna T ChuiArgentina2024-04-08Benton, John B Jr RENEWAL57Asiya Javayant
1015Octavia I PerinSpain2024-04-19Chapman, Ross E Esq NEW93Ivan Magalhaes
1016Julie E FerenczAustralia2024-04-09Printing Dimensions PROPOSAL76Asiya Javayant
1017Chavez L PaprockiFrance2024-04-11Rousseaux, Michael Esq NEW40Amy Elsner
1018Antonio F FerenczBrazil2024-04-25Rousseaux, Michael Esq PROPOSAL96Ioni Bowcher
1019Salvatore K BowleyUnited Kingdom2024-04-06Feltz Printing Service NEGOTIATION44Bernardo Dominic
1020Mujtaba J MorascaIndia2024-04-11Buckley Miller Wright PROPOSAL26Ivan Magalhaes
1021Rodrigues D VenereFrance2024-03-29Rousseaux, Michael Esq NEW15Onyama Limba
1022Leja Q FigeroaCanada2024-04-24Rangoni Of Florence NEGOTIATION10Ivan Magalhaes
1023Julie B OldroydJapan2024-03-31Chanay, Jeffrey A Esq RENEWAL58Stephen Shaw
1024Salvatore L RimBrazil2024-04-14Rangoni Of Florence PROPOSAL89Onyama Limba
1025Leon Q BowleyBrazil2024-03-29Benton, John B Jr UNQUALIFIED52Onyama Limba
1026Misaki A ButtCanada2024-04-13Chanay, Jeffrey A Esq QUALIFIED4Xuxue Feng
1027Isabel U FerenczAustralia2024-04-07Rangoni Of Florence NEW24Asiya Javayant
1028Adams O FlosiGermany2024-04-16Truhlar And Truhlar Attys PROPOSAL68Elwin Sharvill
1029Nicolas J AlbaresUnited Kingdom2024-04-25Rangoni Of Florence UNQUALIFIED66Anna Fali
1030Tony A WaycottIndia2024-04-23Feiner Bros QUALIFIED2Asiya Javayant
1031Mayumi R FollerItaly2024-04-21Rangoni Of Florence UNQUALIFIED78Ivan Magalhaes
1032Adams J InouyeFrance2024-04-12Printing Dimensions PROPOSAL81Bernardo Dominic
1033Darci C MacleadRussia2024-04-01Rousseaux, Michael Esq QUALIFIED59Anna Fali
1034Aruna I DoeAustralia2024-04-09Dorl, James J Esq PROPOSAL48Anna Fali
1035Julie A MorascaBrazil2024-04-06Morlong Associates UNQUALIFIED10Anna Fali
1036David Q StockhamJapan2024-03-28Chapman, Ross E Esq RENEWAL90Xuxue Feng
1037Sinclair P PerinIndia2024-04-02Chapman, Ross E Esq NEGOTIATION61Elwin Sharvill
1038Aruna U GarufiIndia2024-04-01Dorl, James J Esq RENEWAL31Ioni Bowcher
1039Costa H IturbideGermany2024-03-31Printing Dimensions UNQUALIFIED3Asiya Javayant
1040Kaitlin P StensethJapan2024-04-04Commercial Press NEW25Onyama Limba
1041David G OstroskyCanada2024-04-22Dorl, James J Esq NEGOTIATION1Ivan Magalhaes
1042Darci X KuskoBrazil2024-04-08Benton, John B Jr PROPOSAL3Bernardo Dominic
1043Jeanfrancois N GauchoRussia2024-04-06Feiner Bros NEGOTIATION93Asiya Javayant
1044Jones Z ChuiRussia2024-04-11Buckley Miller Wright QUALIFIED90Onyama Limba
1045Maria S RulapaughSpain2024-04-16Truhlar And Truhlar Attys NEW78Asiya Javayant
1046Claire C CaudyGermany2024-04-06Rousseaux, Michael Esq QUALIFIED23Ioni Bowcher
1047Johnson C BologniaFrance2024-04-21Chanay, Jeffrey A Esq PROPOSAL20Onyama Limba
1048Aika I DilliardUnited Kingdom2024-04-15Rangoni Of Florence QUALIFIED72Anna Fali
1049Leon B MaletBrazil2024-04-21Truhlar And Truhlar Attys PROPOSAL86Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Mayumi I VocelkaIndiaStephen Shaw PROPOSAL
Juan U OldroydCanadaIvan Magalhaes QUALIFIED
Kaitlin V MaletJapanAmy Elsner UNQUALIFIED
Adams P MaletGermanyIoni Bowcher PROPOSAL
Mujtaba N VocelkaFranceOnyama Limba PROPOSAL
Smith C KuskoSpainAmy Elsner QUALIFIED
Kadeem X StockhamFranceOnyama Limba NEW
Arvin R FlosiGermanyElwin Sharvill RENEWAL
Izzy V RutaJapanOnyama Limba NEGOTIATION
Cody V RoysterGermanyXuxue Feng PROPOSAL
Jefferson M DilliardArgentinaBernardo Dominic NEGOTIATION
Ashley I RulapaughCanadaStephen Shaw QUALIFIED
Wickens V IturbideIndiaOnyama Limba UNQUALIFIED
Clifford T ShinkoIndiaIvan Magalhaes RENEWAL
Jefferson H VenereFranceOnyama Limba PROPOSAL
David A FigeroaCanadaAmy Elsner QUALIFIED
Octavia T CampainAustraliaXuxue Feng QUALIFIED
Aruna R SaylorsFranceIoni Bowcher UNQUALIFIED
Maisha F RutaJapanStephen Shaw UNQUALIFIED
Salvatore B VenereRussiaAmy Elsner RENEWAL
Claire X BriddickGermanyIoni Bowcher NEW
Tony K KuskoUnited KingdomIoni Bowcher UNQUALIFIED
Mayumi W AlbaresGermanyIvan Magalhaes QUALIFIED
Rodrigues H SergiBrazilOnyama Limba PROPOSAL
Aika D InouyeFranceElwin Sharvill PROPOSAL
Smith H MarrierJapanAsiya Javayant RENEWAL
Izzy Y GlickItalyOnyama Limba RENEWAL
Aika I GauchoRussiaBernardo Dominic PROPOSAL
Leja R GillianRussiaBernardo Dominic NEGOTIATION
Maisha R FigeroaJapanStephen Shaw PROPOSAL
Ricardo O GillianRussiaBernardo Dominic NEGOTIATION
Leon D RulapaughFranceAsiya Javayant NEGOTIATION
Leja A MaletFranceOnyama Limba NEW
Munro J BowleySpainIvan Magalhaes UNQUALIFIED
Claire X RimFranceAnna Fali UNQUALIFIED
Rodrigues M SaylorsFranceIvan Magalhaes RENEWAL
Stacey S SaylorsArgentinaAnna Fali UNQUALIFIED
Darci P MacleadRussiaIvan Magalhaes NEGOTIATION
Isabel R CaudyJapanXuxue Feng RENEWAL
Jefferson S PoquetteBrazilAmy Elsner QUALIFIED
Johnson E CaudyArgentinaBernardo Dominic RENEWAL
Julie A VenereArgentinaIoni Bowcher PROPOSAL
Misaki B InouyeCanadaBernardo Dominic PROPOSAL
Silvio H BriddickGermanyIoni Bowcher NEGOTIATION
Alejandro L GlickBrazilElwin Sharvill NEGOTIATION
Smith J WieserRussiaIoni Bowcher UNQUALIFIED
Wickens G KolmetzSpainAmy Elsner NEW
Maisha A PaprockiIndiaBernardo Dominic NEGOTIATION
Ivar C BowleyJapanIoni Bowcher NEGOTIATION
Clifford V GauchoAustraliaBernardo Dominic PROPOSAL
Frozen Columns
Name
Tony B Vocelka
Ivar Y Caldarera
Chavez A Ruta
Ashley I Saylors
Leon S Bowley
Sinclair M Flosi
Johnson O Bolognia
Greenwood T Whobrey
Maisha M Chui
Ricardo Y Bowley
Francesco R Ferencz
Smith L Venere
Emily Y Marrier
Kadeem R Ruta
Smith N Rim
Stacey I Vocelka
Leon A Butt
Sinclair P Tollner
Ivar U Waycott
Jefferson Y Wieser
Tony R Foller
Alejandro Z Garufi
Wickens S Marrier
Murillo F Slusarski
Mayumi O Vocelka
Mayumi X Foller
Kaitlin I Figeroa
James V Nestle
Ivar O Stenseth
Salvatore W Malet
Chavez X Ruta
Jones O Tollner
Aika E Darakjy
Clifford A Shinko
Faith U Oldroyd
Misaki L Marrier
Smith R Campain
Maisha L Royster
Deepesh I Ferencz
James G Vocelka
Julie D Caldarera
Mujtaba Y Kusko
Johnson Q Dilliard
Johnson G Doe
Clifford C Kusko
Greenwood W Waycott
Clifford C Vocelka
Adams F Garufi
David U Vocelka
Smith N Nestle
IdCountryDate
1000Brazil2024-04-26
1001Canada2024-04-25
1002Australia2024-04-18
1003France2024-04-23
1004Canada2024-04-09
1005India2024-04-14
1006Australia2024-03-28
1007Japan2024-03-30
1008United Kingdom2024-03-28
1009Brazil2024-03-31
1010Russia2024-04-16
1011Germany2024-04-01
1012Germany2024-03-29
1013France2024-04-05
1014Japan2024-04-25
1015United Kingdom2024-04-14
1016Brazil2024-04-16
1017Spain2024-04-02
1018Italy2024-04-25
1019Brazil2024-04-18
1020Canada2024-04-23
1021India2024-04-09
1022Spain2024-03-28
1023Germany2024-03-28
1024United Kingdom2024-04-26
1025Australia2024-04-21
1026Germany2024-04-10
1027Japan2024-04-25
1028India2024-04-07
1029Italy2024-04-20
1030Germany2024-03-28
1031Germany2024-04-15
1032United Kingdom2024-04-11
1033France2024-03-31
1034India2024-04-22
1035Argentina2024-03-29
1036Italy2024-04-22
1037Australia2024-04-16
1038Russia2024-04-17
1039India2024-04-20
1040France2024-03-28
1041Australia2024-04-19
1042Australia2024-04-20
1043Argentina2024-04-01
1044Australia2024-04-17
1045Canada2024-04-19
1046Japan2024-04-26
1047Brazil2024-04-25
1048Germany2024-03-29
1049France2024-04-26

On-Demand Data

NameIdCountryDate
Alejandro A Inouye1000Italy2024-04-20
Maisha C Doe1001United Kingdom2024-03-31
James L Rim1002Russia2024-04-11
Murillo V Nicka1003Australia2024-04-03
Aika C Malet1004Spain2024-04-07
Ashley S Bolognia1005Canada2024-04-04
Kaitlin U Garufi1006United Kingdom2024-04-10
Julie H Slusarski1007Germany2024-04-08
Octavia D Tollner1008Russia2024-04-19
Arvin D Morasca1009France2024-04-24
Alejandro F Butt1010India2024-04-11
Nicolas A Stenseth1011Spain2024-04-20
Octavia U Maclead1012Germany2024-04-03
Izzy M Morasca1013France2024-04-19
Stacey T Poquette1014France2024-04-14
Jennifer G Shinko1015Italy2024-03-31
Chavez I Dilliard1016Canada2024-03-30
Mujtaba D Bolognia1017Spain2024-04-15
Ricardo Y Garufi1018Italy2024-04-06
Mayumi M Dilliard1019Argentina2024-04-01
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aika Q PoquetteUnited KingdomAmy Elsner PROPOSAL
Stacey R OldroydBrazilOnyama Limba PROPOSAL
Alejandro T InouyeFranceElwin Sharvill RENEWAL
Octavia S FlosiAustraliaIvan Magalhaes PROPOSAL
Maria F SlusarskiFranceBernardo Dominic NEW
Tony A NickaAustraliaElwin Sharvill QUALIFIED
Maisha D KolmetzAustraliaStephen Shaw RENEWAL
Arvin F GarufiUnited KingdomAsiya Javayant PROPOSAL
Silvio F FerenczItalyIvan Magalhaes QUALIFIED
Maria L ButtUnited KingdomAnna Fali UNQUALIFIED
Aruna C ButtArgentinaStephen Shaw NEGOTIATION
Ivar A DoeIndiaXuxue Feng NEW
Izzy W WaycottCanadaElwin Sharvill QUALIFIED
Jefferson B WieserFranceIvan Magalhaes NEGOTIATION
Juan T MaletRussiaAmy Elsner PROPOSAL
Greenwood Y RutaBrazilIvan Magalhaes NEW
Munro F SchemmerFranceAsiya Javayant PROPOSAL
Morrow T FlosiIndiaAsiya Javayant NEW
Smith C WieserItalyStephen Shaw UNQUALIFIED
Ashley B DilliardItalyAnna Fali UNQUALIFIED
Antonio X KuskoArgentinaAmy Elsner NEGOTIATION
Silvio X KolmetzItalyElwin Sharvill NEW
Mujtaba X AmigonFranceAnna Fali QUALIFIED
Wickens X PaprockiAustraliaXuxue Feng QUALIFIED
Isabel H MaletIndiaIvan Magalhaes NEGOTIATION
Ricardo B PoquetteUnited KingdomIvan Magalhaes NEGOTIATION
Morrow Q GauchoGermanyXuxue Feng NEGOTIATION
Izzy W SlusarskiSpainStephen Shaw RENEWAL
David Q MaletUnited KingdomBernardo Dominic QUALIFIED
Ashley P SaylorsJapanBernardo Dominic NEGOTIATION
Kadeem T DoeArgentinaIoni Bowcher RENEWAL
Maisha P DoeIndiaIoni Bowcher RENEWAL
Salvatore M BriddickGermanyAsiya Javayant PROPOSAL
Maria G FerenczCanadaBernardo Dominic PROPOSAL
Maisha T BowleyItalyStephen Shaw NEGOTIATION
David D PaprockiUnited KingdomIoni Bowcher NEW
Costa Y MaletJapanAmy Elsner NEW
James U RulapaughIndiaOnyama Limba NEW
Emily A PoquetteFranceAsiya Javayant RENEWAL
Izzy M MacleadGermanyElwin 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>