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 N MaletItalyOnyama Limba UNQUALIFIED
Smith P KuskoCanadaStephen Shaw PROPOSAL
Darci M RulapaughArgentinaIvan Magalhaes UNQUALIFIED
Jennifer U IturbideFranceBernardo Dominic NEGOTIATION
Aika J ShinkoAustraliaAsiya Javayant RENEWAL
Claire E SlusarskiAustraliaAsiya Javayant QUALIFIED
Murillo G MaletArgentinaXuxue Feng QUALIFIED
Arvin V PaprockiBrazilElwin Sharvill QUALIFIED
Juan A FollerIndiaXuxue Feng UNQUALIFIED
Jones E FlosiCanadaBernardo Dominic QUALIFIED
Clifford W SlusarskiArgentinaStephen Shaw NEGOTIATION
Izzy G FerenczSpainXuxue Feng PROPOSAL
Morrow G MorascaBrazilAsiya Javayant QUALIFIED
David X GillianFranceElwin Sharvill NEGOTIATION
Emily D GauchoSpainXuxue Feng NEGOTIATION
Nicolas C RutaSpainIoni Bowcher RENEWAL
Juan V PaprockiSpainAnna Fali UNQUALIFIED
Emily E RimArgentinaStephen Shaw NEGOTIATION
Alejandro P BowleyCanadaXuxue Feng QUALIFIED
Murillo I GarufiFranceElwin Sharvill NEW
Aruna N SaylorsGermanyAmy Elsner NEW
Leja D StensethBrazilStephen Shaw RENEWAL
Julie R FollerSpainOnyama Limba UNQUALIFIED
Costa C DarakjyUnited KingdomXuxue Feng QUALIFIED
Adams W MacleadRussiaOnyama Limba UNQUALIFIED
Nicolas Z TollnerArgentinaXuxue Feng UNQUALIFIED
Aditya T SergiIndiaIoni Bowcher QUALIFIED
James Y GillianArgentinaBernardo Dominic UNQUALIFIED
Darci L MorascaGermanyXuxue Feng NEGOTIATION
Aruna F BowleyJapanXuxue Feng NEW
Francesco C ShinkoJapanAsiya Javayant RENEWAL
Kadeem I RimSpainAnna Fali UNQUALIFIED
Octavia M CaldareraGermanyAmy Elsner NEW
Ashley P CampainFranceAmy Elsner RENEWAL
Cody V AmigonBrazilIoni Bowcher RENEWAL
Aika A ShinkoGermanyOnyama Limba UNQUALIFIED
Julie I PaprockiCanadaBernardo Dominic UNQUALIFIED
Costa H OldroydItalyBernardo Dominic PROPOSAL
Ivar B SaylorsCanadaElwin Sharvill NEGOTIATION
Leja F RimBrazilIoni Bowcher NEGOTIATION
Leon U KuskoFranceAnna Fali NEW
Francesco R GarufiIndiaIvan Magalhaes QUALIFIED
Juan V AlbaresArgentinaStephen Shaw NEW
Nicolas Y TollnerItalyIoni Bowcher QUALIFIED
Wickens A BologniaItalyBernardo Dominic UNQUALIFIED
Julie S OldroydArgentinaIoni Bowcher RENEWAL
Mujtaba F GarufiUnited KingdomElwin Sharvill NEGOTIATION
Faith V FlosiUnited KingdomIoni Bowcher RENEWAL
Kaitlin R DilliardUnited KingdomAmy Elsner QUALIFIED
David S MaletIndiaOnyama Limba PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Munro G CaudyItalyXuxue Feng QUALIFIED
Jennifer X StensethItalyAmy Elsner NEGOTIATION
Francesco M KolmetzCanadaAsiya Javayant NEW
Ashley P RimAustraliaIvan Magalhaes QUALIFIED
Aditya P OstroskyUnited KingdomAsiya Javayant UNQUALIFIED
Kadeem V AmigonJapanAnna Fali UNQUALIFIED
Rodrigues C FigeroaUnited KingdomXuxue Feng PROPOSAL
Munro N GarufiRussiaIvan Magalhaes PROPOSAL
Sinclair Z AmigonAustraliaXuxue Feng NEGOTIATION
Jefferson J FigeroaBrazilXuxue Feng UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Izzy G ButtBrazil2024-04-10Morlong Associates RENEWAL19Bernardo Dominic
1001Clifford H ShinkoCanada2024-04-11Feltz Printing Service PROPOSAL75Bernardo Dominic
1002Jeanfrancois N RimSpain2024-03-26King, Christopher A Esq NEW84Asiya Javayant
1003Antonio G GlickAustralia2024-04-20Buckley Miller Wright PROPOSAL56Asiya Javayant
1004Deepesh F StockhamIndia2024-04-20Chemel, James L Cpa QUALIFIED81Xuxue Feng
1005Ivar S PerinArgentina2024-04-08King, Christopher A Esq UNQUALIFIED40Anna Fali
1006Murillo D FlosiArgentina2024-04-21King, Christopher A Esq UNQUALIFIED93Anna Fali
1007Silvio E FigeroaFrance2024-04-09Chemel, James L Cpa UNQUALIFIED73Stephen Shaw
1008Emily L FigeroaCanada2024-04-05Dorl, James J Esq NEGOTIATION90Stephen Shaw
1009David Q WieserAustralia2024-04-01Morlong Associates NEW77Bernardo Dominic
1010Kaitlin W RutaCanada2024-04-15Chemel, James L Cpa NEW87Amy Elsner
1011Antonio M MaletJapan2024-03-29Chanay, Jeffrey A Esq NEGOTIATION22Ivan Magalhaes
1012Jefferson J WieserUnited Kingdom2024-04-23Dorl, James J Esq RENEWAL56Onyama Limba
1013Cody D PoquetteIndia2024-04-17Chemel, James L Cpa QUALIFIED68Asiya Javayant
1014Octavia M MorascaCanada2024-04-23Buckley Miller Wright NEGOTIATION66Xuxue Feng
1015Rodrigues R VocelkaItaly2024-04-20King, Christopher A Esq NEGOTIATION9Ivan Magalhaes
1016Chavez Z AmigonUnited Kingdom2024-03-25Benton, John B Jr QUALIFIED32Ioni Bowcher
1017Mujtaba T StockhamItaly2024-04-11Truhlar And Truhlar Attys NEGOTIATION24Amy Elsner
1018Claire G GlickArgentina2024-04-14Morlong Associates QUALIFIED14Bernardo Dominic
1019Clifford B WieserCanada2024-04-04Chapman, Ross E Esq UNQUALIFIED89Asiya Javayant
1020Leja J WhobreyItaly2024-04-01Rangoni Of Florence QUALIFIED81Bernardo Dominic
1021Aditya K MacleadGermany2024-03-27Truhlar And Truhlar Attys QUALIFIED47Anna Fali
1022Alejandro J MaletAustralia2024-04-04Dorl, James J Esq QUALIFIED21Elwin Sharvill
1023Kaitlin Q GauchoRussia2024-04-03Printing Dimensions QUALIFIED69Bernardo Dominic
1024Smith X BologniaUnited Kingdom2024-04-13Chemel, James L Cpa RENEWAL71Asiya Javayant
1025Juan W FollerRussia2024-04-20Commercial Press QUALIFIED35Amy Elsner
1026Octavia Y NickaFrance2024-04-22Chanay, Jeffrey A Esq RENEWAL63Amy Elsner
1027Misaki M VocelkaJapan2024-04-13Commercial Press QUALIFIED6Stephen Shaw
1028Mujtaba E RimFrance2024-03-28Truhlar And Truhlar Attys NEW18Amy Elsner
1029Ashley Y FigeroaUnited Kingdom2024-03-25Rousseaux, Michael Esq RENEWAL37Amy Elsner
1030James R FerenczRussia2024-04-17Chanay, Jeffrey A Esq NEGOTIATION64Anna Fali
1031Faith V WieserCanada2024-04-16Chapman, Ross E Esq NEGOTIATION15Xuxue Feng
1032Sinclair G GlickBrazil2024-04-02Commercial Press UNQUALIFIED62Ioni Bowcher
1033Jeanfrancois E SchemmerRussia2024-04-12Dorl, James J Esq NEW7Xuxue Feng
1034Leja Y NestleArgentina2024-04-07Chapman, Ross E Esq NEGOTIATION22Onyama Limba
1035Julie W SchemmerRussia2024-04-17Chapman, Ross E Esq RENEWAL85Onyama Limba
1036Johnson T ShinkoJapan2024-04-09Rousseaux, Michael Esq NEGOTIATION70Ioni Bowcher
1037Jones S ChuiSpain2024-03-28Chanay, Jeffrey A Esq NEGOTIATION95Elwin Sharvill
1038Darci M StensethUnited Kingdom2024-04-02King, Christopher A Esq NEW80Amy Elsner
1039Antonio N WhobreySpain2024-03-29Chapman, Ross E Esq RENEWAL20Stephen Shaw
1040Mujtaba E DilliardFrance2024-04-12King, Christopher A Esq NEW15Ioni Bowcher
1041Murillo Y DarakjyArgentina2024-03-30Chapman, Ross E Esq UNQUALIFIED33Ioni Bowcher
1042Claire A WieserBrazil2024-03-27Truhlar And Truhlar Attys RENEWAL30Elwin Sharvill
1043Isabel G StensethRussia2024-04-12Commercial Press UNQUALIFIED83Elwin Sharvill
1044Mujtaba N SlusarskiSpain2024-04-15Chemel, James L Cpa NEW11Stephen Shaw
1045Murillo T BriddickUnited Kingdom2024-04-19Chanay, Jeffrey A Esq NEW85Bernardo Dominic
1046Aditya G PoquetteUnited Kingdom2024-03-28Printing Dimensions PROPOSAL10Amy Elsner
1047Arvin S BologniaBrazil2024-04-19Chanay, Jeffrey A Esq UNQUALIFIED99Bernardo Dominic
1048Faith B PerinJapan2024-04-17Morlong Associates PROPOSAL96Ivan Magalhaes
1049Mujtaba R SaylorsUnited Kingdom2024-03-25Rousseaux, Michael Esq RENEWAL95Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Misaki K FollerGermanyBernardo Dominic UNQUALIFIED
Mayumi C BowleyUnited KingdomElwin Sharvill QUALIFIED
Adams O KolmetzSpainIoni Bowcher PROPOSAL
James A FlosiUnited KingdomStephen Shaw UNQUALIFIED
Mayumi E PoquetteAustraliaAsiya Javayant PROPOSAL
Aruna K FigeroaSpainXuxue Feng QUALIFIED
Jefferson G CaldareraIndiaElwin Sharvill PROPOSAL
Silvio B SergiCanadaOnyama Limba NEGOTIATION
Darci S PoquetteArgentinaElwin Sharvill UNQUALIFIED
Aika L OstroskyJapanAsiya Javayant RENEWAL
Ashley V IturbideSpainIoni Bowcher QUALIFIED
Francesco Y OstroskyIndiaIvan Magalhaes UNQUALIFIED
Claire O VocelkaFranceAnna Fali UNQUALIFIED
Juan W FigeroaRussiaAnna Fali QUALIFIED
Tony M NickaSpainOnyama Limba RENEWAL
Darci L RoysterIndiaAmy Elsner QUALIFIED
Izzy I CaldareraArgentinaIvan Magalhaes RENEWAL
Emily N NestleArgentinaStephen Shaw NEGOTIATION
Salvatore F BowleyJapanIoni Bowcher PROPOSAL
Ashley M InouyeAustraliaAnna Fali QUALIFIED
Cody Z MorascaFranceXuxue Feng NEGOTIATION
Greenwood F StensethCanadaElwin Sharvill NEGOTIATION
Wickens O RoysterIndiaAnna Fali RENEWAL
James D MaletAustraliaElwin Sharvill RENEWAL
Adams L MarrierUnited KingdomIoni Bowcher NEGOTIATION
Wickens P AmigonGermanyOnyama Limba NEW
Izzy W WhobreyCanadaAmy Elsner QUALIFIED
Sinclair Z BriddickGermanyBernardo Dominic PROPOSAL
Tony L CampainFranceOnyama Limba NEW
Tony R InouyeFranceElwin Sharvill PROPOSAL
Jones H InouyeItalyIoni Bowcher NEW
Jefferson J MaletRussiaOnyama Limba NEGOTIATION
Tony X NickaItalyAnna Fali RENEWAL
Deepesh Z RoysterGermanyBernardo Dominic PROPOSAL
Costa N SlusarskiGermanyIvan Magalhaes RENEWAL
Aika L NickaRussiaIoni Bowcher RENEWAL
Mayumi D RutaJapanAmy Elsner QUALIFIED
Nicolas C SlusarskiFranceOnyama Limba PROPOSAL
Sinclair U DarakjyArgentinaAmy Elsner UNQUALIFIED
Faith U SergiIndiaElwin Sharvill RENEWAL
Nicolas T AlbaresSpainElwin Sharvill QUALIFIED
Aditya H AlbaresJapanBernardo Dominic UNQUALIFIED
Arvin T VocelkaItalyElwin Sharvill QUALIFIED
Maisha U FerenczIndiaAmy Elsner NEW
Chavez C RoysterIndiaOnyama Limba NEGOTIATION
Claire J StockhamGermanyAnna Fali RENEWAL
Rodrigues Q SchemmerRussiaAmy Elsner RENEWAL
Silvio I ButtBrazilElwin Sharvill NEW
Rodrigues Q VocelkaBrazilIvan Magalhaes NEW
Munro J NestleFranceIoni Bowcher RENEWAL
Frozen Columns
Name
Tony G Bowley
Leon A Foller
Isabel N Flosi
Cody Q Ferencz
Aruna E Wieser
Julie I Royster
Adams S Flosi
Cody C Garufi
Emily A Rulapaugh
Faith T Paprocki
Octavia U Saylors
Jeanfrancois Y Waycott
Arvin D Wieser
Wickens Y Amigon
Juan V Foller
Sinclair X Venere
David H Maclead
Octavia D Kolmetz
Mujtaba D Stockham
Ricardo G Foller
Kadeem C Ferencz
Morrow N Briddick
Mujtaba R Kusko
Jones H Butt
Alejandro F Bowley
Leja C Garufi
Salvatore M Nestle
Kaitlin F Rim
Maria W Vocelka
Nicolas Y Rim
Sinclair E Bowley
Tony H Maclead
Clifford P Morasca
David H Maclead
Salvatore W Albares
Leon K Marrier
Antonio S Figeroa
Adams S Slusarski
Jones R Wieser
Ivar I Foller
Greenwood O Oldroyd
Silvio P Amigon
Antonio D Butt
Jones T Malet
Deepesh A Perin
Johnson P Foller
Maria W Campain
Francesco A Caldarera
Octavia I Whobrey
Stacey X Figeroa
IdCountryDate
1000Spain2024-04-20
1001France2024-04-08
1002Russia2024-04-17
1003United Kingdom2024-04-05
1004Russia2024-04-16
1005Australia2024-04-06
1006United Kingdom2024-04-06
1007Germany2024-04-01
1008Italy2024-04-23
1009Canada2024-04-10
1010France2024-04-11
1011United Kingdom2024-04-20
1012Australia2024-04-08
1013Italy2024-03-25
1014India2024-03-28
1015Canada2024-04-20
1016India2024-04-14
1017Australia2024-03-27
1018Canada2024-03-29
1019Italy2024-03-28
1020Russia2024-03-29
1021Japan2024-04-20
1022Italy2024-04-15
1023France2024-04-11
1024Argentina2024-04-12
1025Canada2024-04-18
1026Brazil2024-04-16
1027Spain2024-04-22
1028Germany2024-04-23
1029United Kingdom2024-04-18
1030Canada2024-04-07
1031India2024-04-09
1032Germany2024-04-04
1033Japan2024-03-29
1034India2024-03-31
1035Brazil2024-04-01
1036Argentina2024-03-29
1037Russia2024-04-22
1038Australia2024-04-22
1039France2024-03-31
1040Spain2024-04-12
1041Italy2024-03-26
1042Spain2024-03-26
1043Italy2024-03-29
1044Argentina2024-04-13
1045Spain2024-03-26
1046Germany2024-04-16
1047Germany2024-04-09
1048Italy2024-03-25
1049France2024-04-21

On-Demand Data

NameIdCountryDate
Mujtaba J Flosi1000Spain2024-04-23
David V Schemmer1001Australia2024-04-12
James Q Inouye1002Argentina2024-04-05
Morrow K Figeroa1003Italy2024-04-12
Salvatore Z Flosi1004Japan2024-04-15
Leja G Caudy1005France2024-03-30
James L Amigon1006France2024-04-09
Sinclair G Whobrey1007Canada2024-03-30
Jefferson Z Maclead1008Brazil2024-03-29
Mayumi N Saylors1009Japan2024-04-01
Silvio O Rim1010Germany2024-04-04
Isabel P Malet1011Japan2024-04-09
Antonio S Bolognia1012United Kingdom2024-03-25
Julie J Kusko1013Argentina2024-04-06
Aditya W Gillian1014Australia2024-03-27
Jones R Paprocki1015Spain2024-04-07
Aruna L Gaucho1016Brazil2024-04-11
Wickens J Wieser1017Brazil2024-03-28
Jones P Kusko1018Russia2024-04-18
Octavia Q Schemmer1019Russia2024-04-09
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ashley Z VenereUnited KingdomIvan Magalhaes QUALIFIED
Aika K WaycottSpainOnyama Limba PROPOSAL
Alejandro M FollerArgentinaAnna Fali NEGOTIATION
Ashley S RutaUnited KingdomStephen Shaw NEW
Kadeem R ChuiJapanAsiya Javayant PROPOSAL
Salvatore O RimAustraliaIvan Magalhaes QUALIFIED
Clifford V GauchoGermanyStephen Shaw PROPOSAL
Ashley P OstroskyBrazilBernardo Dominic NEW
Ashley Y SergiUnited KingdomAsiya Javayant NEW
Mujtaba K DilliardItalyIvan Magalhaes QUALIFIED
Octavia F DoeUnited KingdomBernardo Dominic PROPOSAL
James N GarufiArgentinaAmy Elsner UNQUALIFIED
Sinclair P SergiItalyXuxue Feng UNQUALIFIED
Leja L PerinSpainStephen Shaw RENEWAL
Jones N SchemmerUnited KingdomAsiya Javayant UNQUALIFIED
David A DoeUnited KingdomBernardo Dominic PROPOSAL
Adams O PoquetteRussiaXuxue Feng UNQUALIFIED
Nicolas Q ShinkoFranceAnna Fali RENEWAL
Deepesh Z WaycottArgentinaAmy Elsner NEW
Tony E BriddickJapanAmy Elsner PROPOSAL
Sinclair A DilliardBrazilXuxue Feng RENEWAL
Darci W AmigonGermanyElwin Sharvill QUALIFIED
Tony F WhobreyArgentinaIvan Magalhaes NEW
Stacey Y GillianItalyElwin Sharvill RENEWAL
Leon L FlosiBrazilXuxue Feng NEW
David X RulapaughJapanIvan Magalhaes RENEWAL
Izzy D WhobreyFranceElwin Sharvill QUALIFIED
Arvin C MaletUnited KingdomAmy Elsner PROPOSAL
Tony F InouyeArgentinaOnyama Limba NEW
Leja T GarufiCanadaAmy Elsner QUALIFIED
Sinclair W KuskoUnited KingdomIoni Bowcher RENEWAL
Cody X RoysterRussiaStephen Shaw NEW
Mayumi R MaletJapanIoni Bowcher PROPOSAL
Clifford X SaylorsFranceOnyama Limba PROPOSAL
Aika U CampainFranceAmy Elsner UNQUALIFIED
Darci E DoeBrazilIoni Bowcher PROPOSAL
Adams H CaudyArgentinaElwin Sharvill PROPOSAL
Tony R DoeSpainAsiya Javayant NEGOTIATION
Claire K RoysterUnited KingdomIoni Bowcher NEW
Maisha D MorascaSpainBernardo Dominic 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>