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 J IturbideJapanStephen Shaw UNQUALIFIED
Aruna P RutaAustraliaIoni Bowcher UNQUALIFIED
Cody I PaprockiAustraliaAsiya Javayant QUALIFIED
Maisha B FlosiItalyBernardo Dominic UNQUALIFIED
Clifford Q OstroskyRussiaAmy Elsner PROPOSAL
Stacey R OstroskyIndiaElwin Sharvill QUALIFIED
Francesco V DoeJapanStephen Shaw PROPOSAL
Maria J MaletFranceIoni Bowcher NEGOTIATION
Clifford S CampainItalyAnna Fali NEGOTIATION
Ivar J OldroydGermanyAmy Elsner RENEWAL
Claire C RimUnited KingdomIvan Magalhaes PROPOSAL
Ricardo J VenereJapanIoni Bowcher QUALIFIED
Octavia Z TollnerBrazilIvan Magalhaes QUALIFIED
Aditya T MaletRussiaOnyama Limba RENEWAL
Ricardo Q BriddickFranceAnna Fali UNQUALIFIED
Emily U DoeBrazilOnyama Limba PROPOSAL
Arvin P OldroydItalyStephen Shaw QUALIFIED
Murillo P OstroskyRussiaBernardo Dominic QUALIFIED
James H TollnerGermanyElwin Sharvill NEW
Kaitlin B PaprockiSpainAnna Fali NEW
Deepesh Q ShinkoArgentinaAmy Elsner QUALIFIED
Tony G NestleIndiaAmy Elsner RENEWAL
Claire F TollnerUnited KingdomIvan Magalhaes QUALIFIED
Kaitlin X GlickRussiaAsiya Javayant RENEWAL
Morrow V FerenczCanadaElwin Sharvill UNQUALIFIED
David C FollerFranceXuxue Feng UNQUALIFIED
Jeanfrancois N RimItalyAmy Elsner NEW
Wickens O MacleadSpainIvan Magalhaes RENEWAL
Jeanfrancois I RutaRussiaAmy Elsner PROPOSAL
Mayumi D CampainUnited KingdomAnna Fali PROPOSAL
Ricardo W BowleyFranceElwin Sharvill PROPOSAL
Kadeem U OldroydJapanXuxue Feng PROPOSAL
Octavia T PaprockiItalyXuxue Feng UNQUALIFIED
Sinclair L OstroskyIndiaIoni Bowcher RENEWAL
Alejandro W MaletSpainStephen Shaw QUALIFIED
Juan Y InouyeUnited KingdomOnyama Limba RENEWAL
David G GlickBrazilAnna Fali PROPOSAL
James K GlickUnited KingdomElwin Sharvill NEW
Aruna S KuskoUnited KingdomBernardo Dominic PROPOSAL
Faith W MarrierSpainAmy Elsner QUALIFIED
Faith C RutaGermanyAnna Fali RENEWAL
Tony A DarakjyGermanyIvan Magalhaes NEW
Claire K InouyeJapanBernardo Dominic UNQUALIFIED
Munro G PaprockiArgentinaElwin Sharvill PROPOSAL
Darci L WieserRussiaAsiya Javayant QUALIFIED
Antonio Q SergiArgentinaIvan Magalhaes UNQUALIFIED
Francesco O DilliardUnited KingdomAsiya Javayant NEGOTIATION
Rodrigues H GillianItalyBernardo Dominic NEGOTIATION
Mayumi K VocelkaSpainAnna Fali UNQUALIFIED
Maisha R BologniaIndiaBernardo Dominic PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Ivar F RulapaughCanadaBernardo Dominic PROPOSAL
Tony M MaletJapanAsiya Javayant RENEWAL
Darci P GarufiArgentinaAnna Fali RENEWAL
Jones Q AmigonJapanXuxue Feng PROPOSAL
Smith E WaycottArgentinaBernardo Dominic NEW
Salvatore J VenereItalyElwin Sharvill RENEWAL
Izzy Z RutaIndiaAnna Fali PROPOSAL
Alejandro F BriddickSpainIoni Bowcher RENEWAL
Faith S OstroskySpainStephen Shaw PROPOSAL
Smith C VocelkaAustraliaXuxue Feng UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Cody X RoysterBrazil2024-04-17Rousseaux, Michael Esq QUALIFIED22Elwin Sharvill
1001Mayumi O FlosiAustralia2024-04-19Chanay, Jeffrey A Esq PROPOSAL32Anna Fali
1002Octavia E PaprockiGermany2024-04-16Dorl, James J Esq NEW95Onyama Limba
1003Mujtaba Q RulapaughSpain2024-04-19Chemel, James L Cpa QUALIFIED76Stephen Shaw
1004Jennifer E FollerArgentina2024-04-25Dorl, James J Esq UNQUALIFIED68Onyama Limba
1005Ivar H GlickArgentina2024-04-07Rangoni Of Florence UNQUALIFIED87Ioni Bowcher
1006Mayumi K CaudyFrance2024-03-31Commercial Press NEGOTIATION37Anna Fali
1007Clifford I WhobreyFrance2024-04-11Truhlar And Truhlar Attys PROPOSAL94Elwin Sharvill
1008Leja L AlbaresItaly2024-04-28Rousseaux, Michael Esq NEGOTIATION94Amy Elsner
1009Cody I StensethArgentina2024-04-26Morlong Associates NEGOTIATION6Ioni Bowcher
1010Faith R CaldareraUnited Kingdom2024-04-26Commercial Press PROPOSAL97Onyama Limba
1011Wickens T MaletGermany2024-04-13Commercial Press PROPOSAL72Onyama Limba
1012Deepesh G MorascaGermany2024-04-12Feiner Bros NEGOTIATION7Ioni Bowcher
1013Alejandro O FerenczJapan2024-04-28Feltz Printing Service NEGOTIATION81Onyama Limba
1014Darci Q WaycottUnited Kingdom2024-04-01Dorl, James J Esq UNQUALIFIED7Stephen Shaw
1015Octavia R VocelkaFrance2024-04-06Printing Dimensions QUALIFIED7Amy Elsner
1016Izzy V RimArgentina2024-04-07Chapman, Ross E Esq UNQUALIFIED54Ivan Magalhaes
1017Julie C MarrierRussia2024-04-06Benton, John B Jr UNQUALIFIED77Xuxue Feng
1018Aditya C NestleCanada2024-04-10Rousseaux, Michael Esq RENEWAL37Ivan Magalhaes
1019Deepesh P MaletGermany2024-04-28Dorl, James J Esq RENEWAL82Onyama Limba
1020Aika S AlbaresUnited Kingdom2024-04-18Chemel, James L Cpa UNQUALIFIED46Xuxue Feng
1021Kadeem K SlusarskiItaly2024-04-23Truhlar And Truhlar Attys NEW66Xuxue Feng
1022Jeanfrancois P SergiFrance2024-04-25Buckley Miller Wright NEGOTIATION64Onyama Limba
1023Antonio V SaylorsArgentina2024-04-25King, Christopher A Esq QUALIFIED25Anna Fali
1024Adams A RimCanada2024-04-01Chapman, Ross E Esq RENEWAL99Elwin Sharvill
1025Murillo A DilliardBrazil2024-04-11Commercial Press NEGOTIATION39Ivan Magalhaes
1026Smith U StensethAustralia2024-04-23Chanay, Jeffrey A Esq UNQUALIFIED50Bernardo Dominic
1027Aditya X BowleyGermany2024-04-01Morlong Associates NEW38Elwin Sharvill
1028Kaitlin V CampainIndia2024-04-07Rangoni Of Florence QUALIFIED38Xuxue Feng
1029Jeanfrancois Z WhobreyArgentina2024-04-19Commercial Press UNQUALIFIED91Elwin Sharvill
1030Darci Y IturbideBrazil2024-04-04Feiner Bros RENEWAL59Bernardo Dominic
1031Morrow O KuskoItaly2024-04-02Benton, John B Jr RENEWAL39Anna Fali
1032Deepesh X FlosiIndia2024-04-28Chapman, Ross E Esq NEW29Onyama Limba
1033Juan Y CaudySpain2024-04-01Morlong Associates QUALIFIED84Anna Fali
1034Kaitlin E WieserAustralia2024-04-21Printing Dimensions QUALIFIED52Anna Fali
1035Wickens B StockhamAustralia2024-03-31Benton, John B Jr QUALIFIED68Anna Fali
1036Jennifer M CampainCanada2024-04-09Morlong Associates NEGOTIATION13Ioni Bowcher
1037Maisha X SaylorsJapan2024-04-25Chanay, Jeffrey A Esq RENEWAL9Ivan Magalhaes
1038Rodrigues H GauchoAustralia2024-04-15King, Christopher A Esq NEW2Amy Elsner
1039Kaitlin E PoquetteItaly2024-04-21Dorl, James J Esq NEGOTIATION23Anna Fali
1040Maisha C RoysterAustralia2024-04-16Chemel, James L Cpa RENEWAL38Amy Elsner
1041Ivar B WaycottBrazil2024-04-25Chemel, James L Cpa UNQUALIFIED41Onyama Limba
1042Francesco H RutaBrazil2024-04-25King, Christopher A Esq NEW99Asiya Javayant
1043Julie Q StockhamFrance2024-04-14Chapman, Ross E Esq RENEWAL62Onyama Limba
1044Leon D BowleyBrazil2024-03-30Morlong Associates NEW68Elwin Sharvill
1045Stacey X MaletRussia2024-04-16Printing Dimensions NEGOTIATION33Anna Fali
1046Mayumi O RutaUnited Kingdom2024-04-18Morlong Associates QUALIFIED4Stephen Shaw
1047Silvio Y VocelkaCanada2024-04-05Feiner Bros NEGOTIATION71Stephen Shaw
1048Alejandro M GillianAustralia2024-04-20Feiner Bros QUALIFIED16Bernardo Dominic
1049Munro C NestleCanada2024-04-27Feltz Printing Service PROPOSAL93Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Rodrigues V MaletRussiaElwin Sharvill UNQUALIFIED
Aruna S FigeroaFranceIvan Magalhaes NEW
Nicolas S MaletBrazilAmy Elsner QUALIFIED
Adams S TollnerFranceAnna Fali UNQUALIFIED
Arvin Q TollnerFranceXuxue Feng NEGOTIATION
Emily W GarufiArgentinaXuxue Feng PROPOSAL
Munro T ButtCanadaStephen Shaw NEW
Ivar K AmigonFranceBernardo Dominic NEGOTIATION
Aika O PerinSpainAnna Fali PROPOSAL
Adams M BriddickItalyAmy Elsner QUALIFIED
Misaki R WieserRussiaIoni Bowcher UNQUALIFIED
Emily S NestleAustraliaAsiya Javayant UNQUALIFIED
Morrow M CaldareraBrazilAmy Elsner NEW
Tony R DarakjyRussiaXuxue Feng NEW
Kadeem T FollerAustraliaIvan Magalhaes UNQUALIFIED
Cody M CaldareraArgentinaStephen Shaw QUALIFIED
Rodrigues O DilliardSpainStephen Shaw NEGOTIATION
Nicolas E RimFranceElwin Sharvill RENEWAL
Julie P TollnerRussiaIoni Bowcher PROPOSAL
Mayumi Z VocelkaUnited KingdomXuxue Feng RENEWAL
Munro Q RutaSpainIvan Magalhaes PROPOSAL
Julie L BowleyAustraliaAnna Fali NEGOTIATION
Julie D PerinGermanyIoni Bowcher NEW
Smith K VocelkaCanadaElwin Sharvill RENEWAL
Jennifer E FollerJapanAnna Fali NEW
Izzy O BriddickIndiaAnna Fali NEGOTIATION
Jefferson P WieserFranceXuxue Feng RENEWAL
Claire S PoquetteSpainIoni Bowcher NEGOTIATION
Juan K MorascaArgentinaXuxue Feng RENEWAL
Murillo H BologniaRussiaElwin Sharvill NEW
Costa V WaycottRussiaIvan Magalhaes RENEWAL
Cody G CaldareraArgentinaElwin Sharvill QUALIFIED
David I PoquetteIndiaAnna Fali PROPOSAL
Jones G MarrierFranceElwin Sharvill NEGOTIATION
Stacey A MacleadGermanyXuxue Feng UNQUALIFIED
Chavez P CampainJapanAsiya Javayant QUALIFIED
Jennifer L CaudyArgentinaElwin Sharvill RENEWAL
Leja J FlosiFranceAnna Fali UNQUALIFIED
Ricardo M BriddickRussiaAsiya Javayant NEGOTIATION
Clifford A SaylorsItalyXuxue Feng UNQUALIFIED
Cody D InouyeAustraliaBernardo Dominic UNQUALIFIED
Faith S MacleadSpainAsiya Javayant NEW
Maisha A WhobreyAustraliaXuxue Feng RENEWAL
James J DoeSpainElwin Sharvill NEGOTIATION
Greenwood U FlosiSpainXuxue Feng NEGOTIATION
Johnson C WieserSpainIoni Bowcher NEGOTIATION
Smith R OldroydItalyAsiya Javayant UNQUALIFIED
Smith A PerinItalyXuxue Feng NEGOTIATION
Aruna I FigeroaRussiaStephen Shaw QUALIFIED
Morrow R SlusarskiBrazilXuxue Feng UNQUALIFIED
Frozen Columns
Name
Clifford N Malet
Deepesh E Bolognia
Claire G Kolmetz
Mujtaba B Perin
Jennifer K Garufi
Tony X Stockham
Murillo U Rulapaugh
Cody E Ruta
Johnson S Stenseth
James U Campain
Arvin X Darakjy
Salvatore Z Rim
Stacey C Waycott
Rodrigues U Bolognia
Leon R Perin
Misaki Z Glick
Misaki B Perin
Leon P Foller
Clifford H Doe
Tony G Foller
Smith L Royster
Aruna L Glick
Faith H Gaucho
Smith S Royster
Alejandro K Marrier
Adams V Briddick
Rodrigues H Ferencz
Jones I Sergi
Darci T Albares
Leja G Malet
Salvatore Q Gillian
Chavez C Bolognia
Sinclair D Maclead
Cody A Doe
Stacey C Malet
Antonio L Caudy
Costa S Caldarera
Johnson Z Vocelka
Greenwood F Inouye
Wickens Q Flosi
Izzy P Amigon
Leja R Stockham
Leja Y Figeroa
Munro Y Malet
Isabel T Poquette
Silvio G Glick
Jones R Saylors
Maisha W Bolognia
Misaki W Malet
Maisha N Sergi
IdCountryDate
1000Argentina2024-04-20
1001Brazil2024-04-08
1002Argentina2024-04-03
1003Russia2024-04-20
1004United Kingdom2024-04-02
1005Australia2024-04-10
1006Spain2024-03-30
1007Japan2024-04-22
1008Australia2024-04-24
1009Argentina2024-04-21
1010Spain2024-04-07
1011Germany2024-04-06
1012Australia2024-04-17
1013Japan2024-04-20
1014Japan2024-04-22
1015Italy2024-04-07
1016Argentina2024-04-07
1017Canada2024-04-05
1018India2024-04-11
1019Germany2024-04-19
1020Germany2024-04-16
1021India2024-04-01
1022United Kingdom2024-04-16
1023Japan2024-04-01
1024Australia2024-04-10
1025Spain2024-04-15
1026Brazil2024-04-21
1027Australia2024-04-13
1028Brazil2024-04-20
1029Germany2024-04-11
1030Japan2024-03-31
1031United Kingdom2024-04-01
1032Russia2024-04-17
1033France2024-04-12
1034Germany2024-04-24
1035Argentina2024-04-24
1036India2024-04-23
1037United Kingdom2024-04-19
1038Australia2024-04-06
1039Spain2024-03-30
1040Italy2024-04-10
1041India2024-04-07
1042Japan2024-04-20
1043Germany2024-04-12
1044Germany2024-04-17
1045Australia2024-04-16
1046Argentina2024-04-20
1047Spain2024-04-17
1048Russia2024-04-19
1049Spain2024-04-04

On-Demand Data

NameIdCountryDate
Izzy F Paprocki1000India2024-04-19
Mayumi T Maclead1001Canada2024-04-13
Darci D Poquette1002Japan2024-04-01
Darci E Sergi1003Italy2024-04-10
Claire B Figeroa1004Argentina2024-04-03
Jones S Campain1005Germany2024-04-22
Munro F Amigon1006United Kingdom2024-04-06
Johnson R Tollner1007Argentina2024-03-31
Aruna S Bowley1008Russia2024-04-04
Chavez Y Foller1009Brazil2024-04-06
Francesco L Caldarera1010Italy2024-03-30
Smith E Kolmetz1011Japan2024-04-10
Mayumi K Briddick1012Russia2024-04-05
James H Paprocki1013Germany2024-04-08
Misaki P Stockham1014Japan2024-04-21
Silvio I Oldroyd1015Germany2024-04-22
David J Flosi1016Australia2024-04-26
Stacey X Stockham1017Germany2024-04-02
Alejandro A Foller1018Japan2024-04-08
Juan Q Chui1019Australia2024-04-09
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mujtaba J MaletUnited KingdomAsiya Javayant NEW
Silvio V DilliardRussiaStephen Shaw NEW
Jeanfrancois X SergiGermanyAnna Fali QUALIFIED
Ricardo Q AlbaresUnited KingdomOnyama Limba RENEWAL
Julie E WieserUnited KingdomStephen Shaw NEW
Tony I SlusarskiAustraliaAmy Elsner RENEWAL
Costa B ShinkoIndiaAnna Fali PROPOSAL
David B WaycottAustraliaIvan Magalhaes NEW
Munro S SergiFranceOnyama Limba UNQUALIFIED
Antonio K BowleyItalyAnna Fali QUALIFIED
Jefferson I PoquetteAustraliaBernardo Dominic UNQUALIFIED
Izzy B ChuiArgentinaStephen Shaw UNQUALIFIED
Leja J NestleAustraliaAsiya Javayant PROPOSAL
Isabel H PerinArgentinaOnyama Limba RENEWAL
Munro Y OldroydArgentinaAmy Elsner QUALIFIED
Clifford F OldroydCanadaAnna Fali UNQUALIFIED
Arvin V SlusarskiCanadaAnna Fali UNQUALIFIED
Izzy X KuskoSpainElwin Sharvill PROPOSAL
David I WieserGermanyXuxue Feng UNQUALIFIED
Clifford C ChuiIndiaAnna Fali UNQUALIFIED
Silvio E SergiItalyIvan Magalhaes PROPOSAL
Julie O KolmetzGermanyOnyama Limba RENEWAL
Jones S NestleIndiaXuxue Feng NEW
Aika P RimArgentinaStephen Shaw NEW
Silvio W FlosiItalyOnyama Limba QUALIFIED
Wickens N ButtItalyBernardo Dominic RENEWAL
Rodrigues O AmigonAustraliaAsiya Javayant QUALIFIED
Aika Q OstroskyGermanyIvan Magalhaes RENEWAL
Juan T TollnerCanadaAnna Fali NEW
Cody X DilliardSpainElwin Sharvill UNQUALIFIED
Cody Z OstroskyGermanyIoni Bowcher UNQUALIFIED
David S NestleSpainElwin Sharvill QUALIFIED
Sinclair W DoeArgentinaElwin Sharvill QUALIFIED
Jones G TollnerArgentinaOnyama Limba RENEWAL
Sinclair O RutaBrazilStephen Shaw RENEWAL
Arvin J KolmetzRussiaBernardo Dominic NEW
David H GauchoCanadaIvan Magalhaes PROPOSAL
Maisha X InouyeItalyStephen Shaw QUALIFIED
Adams P ChuiFranceBernardo Dominic RENEWAL
Murillo O BriddickArgentinaAmy Elsner RENEWAL

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