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
Maria C StockhamSpainIvan Magalhaes NEGOTIATION
Jefferson E FlosiJapanIoni Bowcher UNQUALIFIED
Octavia L MaletAustraliaAmy Elsner NEW
Aruna J PaprockiIndiaIvan Magalhaes NEW
Costa L AmigonCanadaAsiya Javayant RENEWAL
Francesco S KolmetzCanadaIvan Magalhaes QUALIFIED
Smith B RutaCanadaAnna Fali RENEWAL
Jeanfrancois Z MacleadItalyIoni Bowcher NEGOTIATION
Jones E VenereArgentinaAnna Fali UNQUALIFIED
Wickens S CaldareraRussiaStephen Shaw RENEWAL
Salvatore N WieserAustraliaIvan Magalhaes UNQUALIFIED
Rodrigues J SergiSpainAsiya Javayant QUALIFIED
Adams W WaycottItalyAsiya Javayant PROPOSAL
Deepesh M CaudyJapanIoni Bowcher NEW
Jones T AlbaresJapanIoni Bowcher RENEWAL
Leon O WaycottRussiaStephen Shaw PROPOSAL
Ashley A DilliardItalyAnna Fali PROPOSAL
Emily B NickaCanadaAsiya Javayant UNQUALIFIED
Wickens Z InouyeFranceIoni Bowcher PROPOSAL
Aruna K DarakjyIndiaOnyama Limba NEGOTIATION
Aditya R PoquetteItalyElwin Sharvill NEGOTIATION
Maria L CaldareraRussiaXuxue Feng NEW
Adams B RulapaughFranceAsiya Javayant QUALIFIED
Nicolas D NestleRussiaIoni Bowcher QUALIFIED
Tony Q PaprockiFranceAmy Elsner PROPOSAL
Arvin F DilliardFranceBernardo Dominic RENEWAL
Faith J DilliardSpainStephen Shaw PROPOSAL
Francesco Q AlbaresArgentinaBernardo Dominic QUALIFIED
Francesco I FigeroaAustraliaElwin Sharvill NEGOTIATION
Ashley X NestleRussiaAmy Elsner NEGOTIATION
Aditya D WieserSpainXuxue Feng RENEWAL
Misaki Z MaletFranceAmy Elsner QUALIFIED
Leja T AmigonIndiaAmy Elsner QUALIFIED
Izzy T PoquetteAustraliaIoni Bowcher PROPOSAL
Misaki K SlusarskiAustraliaXuxue Feng NEGOTIATION
Maria J IturbideArgentinaStephen Shaw RENEWAL
Jennifer T MorascaBrazilXuxue Feng NEW
Arvin A ChuiRussiaXuxue Feng NEGOTIATION
Mayumi B GlickArgentinaIvan Magalhaes PROPOSAL
Salvatore Z GarufiGermanyXuxue Feng UNQUALIFIED
Francesco A CaudyBrazilBernardo Dominic PROPOSAL
Aditya J VocelkaSpainOnyama Limba NEGOTIATION
Mujtaba W ShinkoRussiaAmy Elsner RENEWAL
Adams K WaycottItalyBernardo Dominic NEGOTIATION
Faith Z OldroydBrazilXuxue Feng UNQUALIFIED
Izzy E VenereAustraliaStephen Shaw NEW
Wickens E IturbideBrazilAsiya Javayant PROPOSAL
Stacey A MorascaBrazilAsiya Javayant NEW
Chavez P NickaUnited KingdomBernardo Dominic NEW
Mujtaba D ShinkoBrazilIvan Magalhaes NEW
Horizontal
NameCountryRepresentativeStatus
Chavez P PaprockiItalyXuxue Feng RENEWAL
Tony E PoquetteIndiaAsiya Javayant UNQUALIFIED
Leja J WieserBrazilXuxue Feng NEGOTIATION
Arvin M MacleadGermanyOnyama Limba NEGOTIATION
Francesco N GauchoCanadaIvan Magalhaes NEGOTIATION
Izzy Q VocelkaFranceIoni Bowcher UNQUALIFIED
Murillo S VocelkaGermanyAsiya Javayant QUALIFIED
Aika T SchemmerJapanStephen Shaw NEW
Antonio C MarrierIndiaElwin Sharvill NEGOTIATION
Leja B GarufiBrazilElwin Sharvill NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Isabel T IturbideAustralia2024-03-31Benton, John B Jr NEW8Elwin Sharvill
1001Faith L FerenczIndia2024-04-06Rousseaux, Michael Esq PROPOSAL88Xuxue Feng
1002James O WieserArgentina2024-03-28Chanay, Jeffrey A Esq RENEWAL58Stephen Shaw
1003Silvio L AmigonIndia2024-04-12Truhlar And Truhlar Attys PROPOSAL73Ioni Bowcher
1004Kaitlin G ButtItaly2024-04-21Commercial Press PROPOSAL26Amy Elsner
1005Maria B CaldareraSpain2024-04-18Rangoni Of Florence UNQUALIFIED39Ioni Bowcher
1006Chavez N MaletBrazil2024-04-04King, Christopher A Esq UNQUALIFIED41Amy Elsner
1007Alejandro G VocelkaBrazil2024-04-24Morlong Associates NEW66Anna Fali
1008Adams P SchemmerCanada2024-04-04Rousseaux, Michael Esq NEW28Amy Elsner
1009Aika N ButtGermany2024-04-15Feiner Bros NEGOTIATION7Stephen Shaw
1010Greenwood F StensethAustralia2024-04-23Chapman, Ross E Esq NEW27Ioni Bowcher
1011Maisha I InouyeAustralia2024-03-28Buckley Miller Wright UNQUALIFIED15Elwin Sharvill
1012Tony S GillianBrazil2024-04-02Dorl, James J Esq UNQUALIFIED71Elwin Sharvill
1013David V SergiUnited Kingdom2024-04-16Dorl, James J Esq UNQUALIFIED77Asiya Javayant
1014Aditya C MacleadUnited Kingdom2024-03-30Benton, John B Jr QUALIFIED93Ivan Magalhaes
1015Antonio O MaletBrazil2024-04-09Feltz Printing Service UNQUALIFIED16Ivan Magalhaes
1016Izzy F IturbideCanada2024-04-01Chanay, Jeffrey A Esq UNQUALIFIED44Onyama Limba
1017Francesco U TollnerArgentina2024-04-14Chanay, Jeffrey A Esq QUALIFIED99Stephen Shaw
1018Chavez V OldroydJapan2024-04-18Feiner Bros QUALIFIED58Onyama Limba
1019Kadeem A FollerGermany2024-04-20Rangoni Of Florence NEW26Ioni Bowcher
1020Octavia G SaylorsItaly2024-04-19Feiner Bros QUALIFIED17Onyama Limba
1021Chavez K VenereBrazil2024-03-29Rousseaux, Michael Esq NEGOTIATION1Onyama Limba
1022Sinclair C RulapaughFrance2024-03-27Rangoni Of Florence NEW24Onyama Limba
1023Adams J MarrierGermany2024-04-21Chemel, James L Cpa QUALIFIED96Amy Elsner
1024Adams P FollerJapan2024-03-28Feltz Printing Service NEGOTIATION86Asiya Javayant
1025Adams N BologniaIndia2024-04-08Chanay, Jeffrey A Esq NEGOTIATION19Bernardo Dominic
1026Kadeem O WaycottIndia2024-04-14Rangoni Of Florence UNQUALIFIED9Amy Elsner
1027Aruna R PerinFrance2024-04-01Feltz Printing Service UNQUALIFIED93Asiya Javayant
1028Antonio L PoquetteUnited Kingdom2024-04-23Chanay, Jeffrey A Esq PROPOSAL79Stephen Shaw
1029Greenwood E StensethJapan2024-04-17Truhlar And Truhlar Attys UNQUALIFIED69Anna Fali
1030Misaki L IturbideItaly2024-04-17Rangoni Of Florence QUALIFIED9Stephen Shaw
1031Isabel G VocelkaArgentina2024-04-12Dorl, James J Esq PROPOSAL19Onyama Limba
1032Jeanfrancois F SlusarskiFrance2024-04-02Commercial Press UNQUALIFIED83Amy Elsner
1033Stacey G ChuiSpain2024-04-25Morlong Associates NEGOTIATION3Elwin Sharvill
1034Clifford U SergiAustralia2024-04-13Chemel, James L Cpa RENEWAL45Asiya Javayant
1035Isabel L CaudyArgentina2024-04-20Truhlar And Truhlar Attys RENEWAL48Bernardo Dominic
1036Ivar N PoquetteUnited Kingdom2024-04-13Truhlar And Truhlar Attys NEW12Anna Fali
1037Maria Y WieserFrance2024-04-01Chemel, James L Cpa NEW70Onyama Limba
1038Antonio R FigeroaIndia2024-04-22Chapman, Ross E Esq RENEWAL14Amy Elsner
1039Jefferson K MaletBrazil2024-04-01Morlong Associates QUALIFIED45Asiya Javayant
1040Darci Y OldroydJapan2024-04-25Commercial Press UNQUALIFIED32Amy Elsner
1041Silvio X WaycottCanada2024-04-04Commercial Press RENEWAL42Amy Elsner
1042Adams N InouyeItaly2024-04-19Rousseaux, Michael Esq PROPOSAL67Ioni Bowcher
1043Salvatore B ChuiArgentina2024-04-07Dorl, James J Esq RENEWAL1Onyama Limba
1044Maisha Z SchemmerUnited Kingdom2024-04-12Rangoni Of Florence NEGOTIATION3Bernardo Dominic
1045Chavez V CaudyBrazil2024-04-18Chapman, Ross E Esq QUALIFIED6Elwin Sharvill
1046Izzy T GauchoSpain2024-04-24Chemel, James L Cpa RENEWAL41Ivan Magalhaes
1047Greenwood Z RulapaughJapan2024-04-21Chemel, James L Cpa NEGOTIATION95Ivan Magalhaes
1048Claire T ChuiArgentina2024-04-09Truhlar And Truhlar Attys PROPOSAL91Amy Elsner
1049Arvin S ChuiJapan2024-03-31Feltz Printing Service NEW49Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Maisha Y KolmetzArgentinaIvan Magalhaes QUALIFIED
Leon C AmigonArgentinaBernardo Dominic NEGOTIATION
Silvio Y SchemmerUnited KingdomOnyama Limba QUALIFIED
Sinclair Y StensethAustraliaIvan Magalhaes PROPOSAL
Kadeem Y IturbideArgentinaAsiya Javayant NEW
Mayumi A PoquetteItalyIoni Bowcher UNQUALIFIED
Francesco Q StockhamIndiaXuxue Feng NEW
Jefferson M ChuiBrazilAsiya Javayant UNQUALIFIED
Mayumi W KolmetzRussiaAsiya Javayant PROPOSAL
Salvatore Z MacleadSpainIoni Bowcher PROPOSAL
Jennifer M CampainGermanyAnna Fali PROPOSAL
Ivar T RutaRussiaAnna Fali QUALIFIED
Emily K RulapaughBrazilStephen Shaw PROPOSAL
Izzy J CaldareraItalyBernardo Dominic NEGOTIATION
Alejandro B DarakjyFranceAsiya Javayant NEGOTIATION
Francesco S SlusarskiCanadaAnna Fali NEW
Aruna N MacleadUnited KingdomAsiya Javayant NEW
Jeanfrancois W TollnerGermanyXuxue Feng RENEWAL
Silvio K PoquetteArgentinaIvan Magalhaes NEW
Chavez T PaprockiIndiaIvan Magalhaes RENEWAL
Deepesh E DilliardRussiaStephen Shaw RENEWAL
Tony F DilliardArgentinaOnyama Limba UNQUALIFIED
Antonio J MorascaFranceAmy Elsner NEGOTIATION
Salvatore Q FigeroaUnited KingdomStephen Shaw UNQUALIFIED
Alejandro F VenereArgentinaAsiya Javayant NEW
Smith H WhobreyGermanyIoni Bowcher RENEWAL
Nicolas B FerenczUnited KingdomElwin Sharvill RENEWAL
Nicolas T DilliardJapanIvan Magalhaes NEW
Maria Y RulapaughRussiaXuxue Feng RENEWAL
Julie K MaletBrazilIoni Bowcher PROPOSAL
Octavia A OstroskyIndiaStephen Shaw NEGOTIATION
Juan B FlosiUnited KingdomXuxue Feng NEGOTIATION
Alejandro V MaletSpainXuxue Feng NEW
Costa N GlickCanadaBernardo Dominic PROPOSAL
Stacey R VocelkaUnited KingdomBernardo Dominic UNQUALIFIED
Johnson N RoysterIndiaIvan Magalhaes RENEWAL
Jeanfrancois K SchemmerRussiaElwin Sharvill RENEWAL
Darci J SergiItalyElwin Sharvill UNQUALIFIED
Leja Y SergiJapanIvan Magalhaes NEW
Jefferson S ShinkoRussiaAmy Elsner RENEWAL
Alejandro P OldroydIndiaAsiya Javayant RENEWAL
Arvin G MaletArgentinaAsiya Javayant PROPOSAL
Maria U SaylorsUnited KingdomStephen Shaw NEGOTIATION
Salvatore U IturbideJapanElwin Sharvill QUALIFIED
Chavez X GarufiAustraliaOnyama Limba QUALIFIED
Emily S BologniaJapanElwin Sharvill QUALIFIED
Adams X BologniaRussiaStephen Shaw UNQUALIFIED
Morrow E BowleyCanadaIoni Bowcher PROPOSAL
Isabel F NickaFranceIvan Magalhaes UNQUALIFIED
Darci J FerenczArgentinaIvan Magalhaes NEGOTIATION
Frozen Columns
Name
Kadeem Y Kolmetz
Octavia H Vocelka
Kadeem N Albares
Leja D Caldarera
Nicolas K Campain
Leja E Marrier
Aruna K Glick
Arvin K Rim
Izzy Y Garufi
Alejandro W Vocelka
Clifford C Gaucho
Mayumi X Flosi
Maria W Perin
Murillo F Bowley
Clifford C Wieser
Aika J Albares
Jeanfrancois V Rim
Darci H Albares
Salvatore O Gaucho
Greenwood I Briddick
Darci K Stenseth
Munro M Flosi
Alejandro X Malet
Kaitlin N Morasca
Isabel I Foller
Leja M Darakjy
Silvio M Stenseth
Ashley N Inouye
Julie V Foller
Isabel A Nicka
Francesco Z Wieser
Maisha E Iturbide
Ivar R Glick
Juan Y Rulapaugh
Ricardo V Kusko
Octavia D Ostrosky
Darci U Saylors
Nicolas I Nestle
Tony L Doe
David J Whobrey
Maisha E Malet
Aruna J Albares
Alejandro A Darakjy
Adams A Malet
Maria V Flosi
Antonio U Doe
Nicolas S Vocelka
James U Morasca
Mayumi F Dilliard
Arvin R Poquette
IdCountryDate
1000France2024-04-17
1001France2024-04-25
1002France2024-04-11
1003Spain2024-04-17
1004Italy2024-04-04
1005Argentina2024-04-17
1006Italy2024-03-31
1007Japan2024-04-11
1008Canada2024-04-03
1009Canada2024-04-06
1010Japan2024-04-25
1011Russia2024-04-18
1012United Kingdom2024-04-16
1013United Kingdom2024-04-06
1014Italy2024-03-30
1015Italy2024-03-30
1016France2024-04-08
1017Spain2024-04-25
1018Germany2024-03-27
1019Spain2024-03-30
1020Argentina2024-03-27
1021Australia2024-04-14
1022United Kingdom2024-04-06
1023Russia2024-04-05
1024Canada2024-04-20
1025Brazil2024-03-30
1026Argentina2024-04-21
1027Germany2024-04-03
1028United Kingdom2024-04-24
1029Germany2024-04-04
1030Spain2024-04-14
1031India2024-04-07
1032Spain2024-04-10
1033France2024-04-18
1034Australia2024-04-15
1035France2024-04-24
1036France2024-04-25
1037France2024-04-18
1038Brazil2024-04-04
1039Italy2024-04-04
1040Canada2024-04-04
1041Italy2024-04-12
1042United Kingdom2024-04-06
1043Argentina2024-04-20
1044Brazil2024-04-22
1045Germany2024-04-13
1046Japan2024-04-08
1047France2024-04-11
1048Japan2024-04-11
1049Russia2024-03-31

On-Demand Data

NameIdCountryDate
Emily B Paprocki1000Argentina2024-04-05
Aika B Inouye1001Brazil2024-04-21
David E Malet1002Germany2024-04-06
Aditya C Marrier1003Russia2024-04-06
Greenwood X Figeroa1004Spain2024-03-27
Maisha M Waycott1005Russia2024-03-29
Jeanfrancois D Malet1006France2024-04-03
Ashley V Saylors1007Brazil2024-03-31
Julie N Rulapaugh1008Japan2024-04-08
Cody V Perin1009France2024-04-01
Nicolas I Vocelka1010United Kingdom2024-04-12
David B Nicka1011Japan2024-03-31
Faith B Gaucho1012Canada2024-03-28
Alejandro B Morasca1013Italy2024-04-16
Claire K Caldarera1014India2024-04-10
Izzy Z Garufi1015India2024-04-18
Emily K Whobrey1016Australia2024-04-13
Claire I Figeroa1017Australia2024-04-02
Alejandro U Poquette1018Canada2024-04-16
Alejandro Z Marrier1019Russia2024-04-25
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jeanfrancois D CaudyGermanyAsiya Javayant NEW
Aditya U RoysterAustraliaAsiya Javayant NEGOTIATION
Jennifer E MaletRussiaXuxue Feng PROPOSAL
Sinclair I DarakjyIndiaBernardo Dominic UNQUALIFIED
Smith N FerenczSpainOnyama Limba NEW
Jeanfrancois Z RoysterAustraliaAsiya Javayant UNQUALIFIED
Octavia R AmigonCanadaElwin Sharvill NEW
Greenwood Q DoeFranceAsiya Javayant RENEWAL
Tony Y BriddickRussiaAmy Elsner NEW
Rodrigues H NickaRussiaXuxue Feng NEGOTIATION
Leja H FigeroaBrazilAnna Fali NEW
Kadeem I VenereIndiaAsiya Javayant QUALIFIED
Mujtaba Z RoysterFranceAnna Fali QUALIFIED
Ivar B FollerGermanyIoni Bowcher NEW
Stacey Y NickaItalyXuxue Feng NEGOTIATION
Francesco E GarufiIndiaAnna Fali UNQUALIFIED
Juan M RoysterCanadaBernardo Dominic UNQUALIFIED
Clifford E VenereSpainBernardo Dominic NEGOTIATION
Leon F FerenczFranceOnyama Limba PROPOSAL
Izzy O MarrierAustraliaIoni Bowcher NEW
Clifford K KuskoSpainIvan Magalhaes PROPOSAL
Tony K SergiFranceBernardo Dominic PROPOSAL
Leon R KuskoBrazilAmy Elsner NEGOTIATION
Deepesh Q GlickGermanyIoni Bowcher NEW
Clifford C AlbaresRussiaIoni Bowcher UNQUALIFIED
Jefferson Z WhobreyAustraliaAsiya Javayant QUALIFIED
Arvin X RulapaughCanadaBernardo Dominic QUALIFIED
Ivar N WaycottGermanyIvan Magalhaes RENEWAL
Claire F RulapaughArgentinaAsiya Javayant UNQUALIFIED
Leja G ChuiIndiaAsiya Javayant QUALIFIED
Arvin A CampainRussiaAmy Elsner RENEWAL
Kadeem S GauchoBrazilAsiya Javayant UNQUALIFIED
Ashley H VocelkaIndiaOnyama Limba PROPOSAL
Ashley Q BriddickArgentinaXuxue Feng NEW
Julie B MaletCanadaIoni Bowcher QUALIFIED
Mayumi X MarrierCanadaAmy Elsner NEW
Jennifer C ChuiIndiaIvan Magalhaes QUALIFIED
Adams Z ShinkoJapanXuxue Feng NEGOTIATION
Rodrigues P MacleadBrazilStephen Shaw UNQUALIFIED
Murillo I SaylorsFranceAmy Elsner 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>