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 Z TollnerFranceAmy Elsner NEW
Ashley F MorascaArgentinaIoni Bowcher RENEWAL
Greenwood X NickaJapanIoni Bowcher QUALIFIED
Aditya W BriddickSpainAmy Elsner RENEWAL
Jennifer U NickaRussiaXuxue Feng RENEWAL
Ricardo V AlbaresAustraliaAnna Fali UNQUALIFIED
Maisha O DilliardIndiaIvan Magalhaes UNQUALIFIED
Isabel E ShinkoCanadaXuxue Feng PROPOSAL
James L WaycottJapanAmy Elsner UNQUALIFIED
Smith U GauchoFranceAmy Elsner RENEWAL
Silvio E IturbideFranceOnyama Limba QUALIFIED
Silvio R GarufiJapanXuxue Feng PROPOSAL
Aditya K NickaAustraliaIoni Bowcher QUALIFIED
Maria E RoysterJapanOnyama Limba UNQUALIFIED
Ashley C OldroydRussiaAmy Elsner PROPOSAL
Maria D GarufiSpainElwin Sharvill UNQUALIFIED
Jeanfrancois U OldroydSpainAnna Fali NEW
Darci J StensethJapanElwin Sharvill QUALIFIED
Jeanfrancois V CaldareraGermanyElwin Sharvill PROPOSAL
Aditya B BologniaSpainElwin Sharvill PROPOSAL
Stacey I OstroskyCanadaOnyama Limba NEW
Morrow N NestleJapanAmy Elsner PROPOSAL
Jefferson O AlbaresFranceStephen Shaw UNQUALIFIED
Emily H IturbideArgentinaAmy Elsner RENEWAL
Adams A PerinSpainXuxue Feng NEW
Greenwood V MorascaGermanyAsiya Javayant QUALIFIED
Munro X TollnerUnited KingdomAsiya Javayant PROPOSAL
Faith F PaprockiUnited KingdomIoni Bowcher QUALIFIED
Deepesh E SergiBrazilAmy Elsner PROPOSAL
Ivar K MarrierBrazilAmy Elsner UNQUALIFIED
James Y AlbaresAustraliaXuxue Feng NEW
David R KuskoArgentinaIoni Bowcher NEW
Greenwood S FlosiIndiaOnyama Limba NEW
Izzy D IturbideFranceStephen Shaw NEGOTIATION
Mujtaba T MorascaIndiaAsiya Javayant NEGOTIATION
Johnson C NickaJapanElwin Sharvill RENEWAL
Jennifer G AmigonArgentinaAnna Fali PROPOSAL
Ivar G SergiCanadaIvan Magalhaes PROPOSAL
Smith T BowleyCanadaIvan Magalhaes NEGOTIATION
Aruna I SchemmerJapanAmy Elsner RENEWAL
Kaitlin A PoquetteBrazilAnna Fali QUALIFIED
David J StensethRussiaElwin Sharvill QUALIFIED
Juan V ShinkoCanadaXuxue Feng NEW
Jones X SergiBrazilIvan Magalhaes RENEWAL
Alejandro P RoysterAustraliaStephen Shaw NEGOTIATION
Misaki W FigeroaUnited KingdomStephen Shaw QUALIFIED
Aika X StensethIndiaIoni Bowcher QUALIFIED
Nicolas B RimSpainOnyama Limba RENEWAL
Jeanfrancois S FollerCanadaElwin Sharvill QUALIFIED
Leon V AmigonGermanyAmy Elsner QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Costa Z FigeroaArgentinaStephen Shaw NEW
Francesco F GarufiCanadaOnyama Limba QUALIFIED
Leja G WieserSpainStephen Shaw NEGOTIATION
Rodrigues B PoquetteCanadaAnna Fali QUALIFIED
Tony X IturbideFranceOnyama Limba NEW
Jefferson M ChuiFranceOnyama Limba PROPOSAL
Johnson Z PerinArgentinaIoni Bowcher QUALIFIED
Greenwood Q RulapaughArgentinaAsiya Javayant NEW
Jeanfrancois Z MaletRussiaElwin Sharvill UNQUALIFIED
Darci E KuskoUnited KingdomAmy Elsner NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ivar V AlbaresCanada2024-04-16Commercial Press QUALIFIED16Stephen Shaw
1001Maria U GauchoAustralia2024-04-08Buckley Miller Wright NEW71Xuxue Feng
1002Jones N AlbaresUnited Kingdom2024-04-21Rangoni Of Florence NEW42Asiya Javayant
1003Johnson I KolmetzFrance2024-04-26King, Christopher A Esq UNQUALIFIED62Anna Fali
1004Darci M GlickJapan2024-05-02Commercial Press PROPOSAL77Amy Elsner
1005Faith F DarakjyCanada2024-04-06Benton, John B Jr PROPOSAL16Elwin Sharvill
1006Mayumi K PerinIndia2024-05-05Commercial Press NEGOTIATION23Ivan Magalhaes
1007Deepesh J RoysterBrazil2024-04-25Chemel, James L Cpa QUALIFIED13Asiya Javayant
1008David Q OstroskyIndia2024-05-01Dorl, James J Esq PROPOSAL63Asiya Javayant
1009Arvin F CaldareraFrance2024-04-15Feiner Bros NEGOTIATION31Elwin Sharvill
1010Leja I KuskoIndia2024-05-05King, Christopher A Esq RENEWAL5Ioni Bowcher
1011Octavia N WieserGermany2024-04-08Feltz Printing Service QUALIFIED33Ioni Bowcher
1012Wickens A OldroydBrazil2024-05-04Chanay, Jeffrey A Esq QUALIFIED30Elwin Sharvill
1013Mujtaba C TollnerArgentina2024-04-21Rousseaux, Michael Esq PROPOSAL87Amy Elsner
1014Tony R VocelkaCanada2024-04-07King, Christopher A Esq QUALIFIED25Onyama Limba
1015Ricardo R GillianGermany2024-04-14Buckley Miller Wright QUALIFIED95Asiya Javayant
1016Aditya Z KuskoCanada2024-04-10Truhlar And Truhlar Attys QUALIFIED37Anna Fali
1017Aditya J SaylorsSpain2024-04-29Commercial Press UNQUALIFIED20Anna Fali
1018Greenwood I PerinJapan2024-04-29Feiner Bros NEGOTIATION13Xuxue Feng
1019Jefferson Y RutaItaly2024-04-27Buckley Miller Wright QUALIFIED43Ivan Magalhaes
1020Claire B PaprockiAustralia2024-04-25Printing Dimensions QUALIFIED79Ioni Bowcher
1021Maisha O WaycottUnited Kingdom2024-04-16Feltz Printing Service NEW22Bernardo Dominic
1022Jones F GarufiFrance2024-05-02Chanay, Jeffrey A Esq RENEWAL99Elwin Sharvill
1023Munro D GlickItaly2024-04-09Rangoni Of Florence RENEWAL99Ivan Magalhaes
1024Aditya A VenereBrazil2024-04-14Chapman, Ross E Esq UNQUALIFIED87Ioni Bowcher
1025Deepesh P BologniaItaly2024-04-20Morlong Associates PROPOSAL86Ivan Magalhaes
1026Tony Y FlosiRussia2024-04-06Rangoni Of Florence NEW91Xuxue Feng
1027Salvatore I StockhamBrazil2024-04-27Buckley Miller Wright RENEWAL24Ioni Bowcher
1028Murillo G FlosiUnited Kingdom2024-04-24Feiner Bros PROPOSAL71Bernardo Dominic
1029Smith M DarakjyJapan2024-04-22Chanay, Jeffrey A Esq QUALIFIED23Xuxue Feng
1030Aruna E SlusarskiUnited Kingdom2024-04-07King, Christopher A Esq QUALIFIED84Amy Elsner
1031Ivar E OstroskyCanada2024-04-09Rangoni Of Florence PROPOSAL30Asiya Javayant
1032Mayumi V WieserJapan2024-04-22Commercial Press NEGOTIATION48Ivan Magalhaes
1033Deepesh M AmigonBrazil2024-05-01King, Christopher A Esq NEW63Bernardo Dominic
1034Chavez Q SlusarskiBrazil2024-04-14Chanay, Jeffrey A Esq RENEWAL51Amy Elsner
1035Leja K NickaSpain2024-04-27King, Christopher A Esq UNQUALIFIED39Anna Fali
1036Alejandro K RutaIndia2024-04-30Truhlar And Truhlar Attys NEGOTIATION7Bernardo Dominic
1037Nicolas X BowleyJapan2024-04-06Rousseaux, Michael Esq QUALIFIED31Ivan Magalhaes
1038Cody C PaprockiArgentina2024-04-09Rangoni Of Florence NEGOTIATION91Xuxue Feng
1039Mayumi O KolmetzFrance2024-04-08Feiner Bros NEGOTIATION43Anna Fali
1040Adams Z RutaBrazil2024-04-19Chanay, Jeffrey A Esq NEW75Bernardo Dominic
1041Munro C MarrierIndia2024-05-04Benton, John B Jr NEW18Elwin Sharvill
1042Juan O FerenczFrance2024-04-27Printing Dimensions PROPOSAL55Bernardo Dominic
1043Jennifer G KuskoCanada2024-04-20Rousseaux, Michael Esq UNQUALIFIED27Elwin Sharvill
1044Cody R VenereItaly2024-04-15Rangoni Of Florence PROPOSAL22Ioni Bowcher
1045Juan S ChuiJapan2024-05-03Feiner Bros UNQUALIFIED66Xuxue Feng
1046James I IturbideRussia2024-04-17Dorl, James J Esq RENEWAL94Elwin Sharvill
1047Wickens K GauchoFrance2024-04-13Rangoni Of Florence UNQUALIFIED56Amy Elsner
1048Mujtaba S ShinkoFrance2024-04-16Chapman, Ross E Esq NEW14Ivan Magalhaes
1049Jeanfrancois A GauchoSpain2024-04-13Rangoni Of Florence NEW85Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Octavia F WaycottRussiaAsiya Javayant NEGOTIATION
Murillo W OldroydArgentinaAnna Fali QUALIFIED
Misaki R IturbideJapanAmy Elsner RENEWAL
Tony Y MaletGermanyIvan Magalhaes UNQUALIFIED
Ricardo V DarakjyArgentinaIoni Bowcher UNQUALIFIED
Julie B BriddickItalyAmy Elsner NEW
Emily H GarufiGermanyOnyama Limba UNQUALIFIED
Costa N SlusarskiRussiaBernardo Dominic NEGOTIATION
Aditya C CaldareraJapanAmy Elsner RENEWAL
Jefferson T WhobreyIndiaStephen Shaw RENEWAL
Chavez O DoeFranceElwin Sharvill NEW
Alejandro Q NestleSpainOnyama Limba PROPOSAL
Salvatore W ChuiCanadaAnna Fali UNQUALIFIED
Jones T MaletSpainAnna Fali QUALIFIED
Ricardo D GauchoSpainBernardo Dominic PROPOSAL
Claire S RoysterJapanAsiya Javayant NEW
Deepesh L PerinBrazilIvan Magalhaes UNQUALIFIED
Leon E GauchoJapanAnna Fali UNQUALIFIED
Antonio G RimBrazilAnna Fali QUALIFIED
Stacey W KuskoGermanyAnna Fali PROPOSAL
Murillo G SaylorsJapanElwin Sharvill UNQUALIFIED
Ashley M RulapaughItalyXuxue Feng QUALIFIED
Salvatore H StensethUnited KingdomXuxue Feng QUALIFIED
Juan N CaldareraArgentinaStephen Shaw PROPOSAL
Greenwood L MaletIndiaIvan Magalhaes UNQUALIFIED
Costa D SergiIndiaIvan Magalhaes NEW
Costa W FlosiAustraliaAnna Fali PROPOSAL
Claire X IturbideArgentinaAmy Elsner QUALIFIED
Mayumi B FlosiUnited KingdomBernardo Dominic PROPOSAL
Ivar D VocelkaJapanXuxue Feng RENEWAL
Julie D WaycottGermanyAnna Fali UNQUALIFIED
Aruna X AlbaresIndiaStephen Shaw NEGOTIATION
Chavez L PerinIndiaAsiya Javayant QUALIFIED
Emily K PoquetteAustraliaIoni Bowcher NEGOTIATION
Octavia B GillianItalyIvan Magalhaes QUALIFIED
Leon O DoeGermanyAnna Fali NEW
Johnson T InouyeAustraliaAsiya Javayant NEGOTIATION
Chavez U GauchoUnited KingdomBernardo Dominic QUALIFIED
Mayumi X MaletSpainBernardo Dominic UNQUALIFIED
Ivar D CampainItalyIvan Magalhaes QUALIFIED
Juan N SergiItalyElwin Sharvill PROPOSAL
Mujtaba A GillianItalyElwin Sharvill RENEWAL
Aruna W VenereFranceIoni Bowcher NEGOTIATION
Claire L VocelkaBrazilIoni Bowcher NEGOTIATION
Cody H PoquetteFranceAsiya Javayant QUALIFIED
Mayumi A AmigonBrazilIoni Bowcher UNQUALIFIED
Rodrigues L GarufiBrazilIvan Magalhaes NEGOTIATION
Nicolas A WhobreyGermanyElwin Sharvill PROPOSAL
Leja Q DoeIndiaAmy Elsner UNQUALIFIED
Octavia C BologniaCanadaAnna Fali QUALIFIED
Frozen Columns
Name
Claire Y Maclead
Johnson X Chui
David Q Tollner
Nicolas V Foller
Costa Y Malet
Leon U Ostrosky
Ashley H Schemmer
Faith Z Nicka
Jefferson V Campain
Maria P Shinko
Jefferson L Flosi
Jennifer N Nestle
Faith D Garufi
Maisha Z Foller
Stacey N Briddick
Jennifer A Kusko
Costa L Wieser
Clifford Y Vocelka
Juan E Maclead
Costa G Butt
Sinclair Y Caldarera
Murillo P Gaucho
Octavia X Venere
Emily A Sergi
Octavia V Ostrosky
Leja X Figeroa
Smith W Rim
Darci A Oldroyd
Mujtaba U Perin
Nicolas Y Inouye
Smith G Poquette
Darci Y Albares
Tony V Caldarera
Claire S Gaucho
Aruna L Rulapaugh
Deepesh Q Briddick
Aditya V Kusko
Silvio R Rim
Murillo B Waycott
Izzy R Gaucho
Adams U Kusko
Aika W Perin
Leja R Glick
Ivar T Waycott
Kadeem P Amigon
Darci F Stockham
Kaitlin H Glick
James C Kusko
Smith X Perin
Leja M Caldarera
IdCountryDate
1000United Kingdom2024-05-01
1001Germany2024-04-26
1002Japan2024-05-05
1003United Kingdom2024-04-17
1004Italy2024-04-16
1005Italy2024-04-24
1006Russia2024-04-13
1007Canada2024-04-23
1008United Kingdom2024-04-13
1009Japan2024-04-12
1010Spain2024-04-23
1011Italy2024-04-06
1012France2024-04-28
1013Canada2024-04-09
1014France2024-04-20
1015Argentina2024-04-09
1016Canada2024-04-19
1017Canada2024-04-14
1018Brazil2024-04-27
1019Russia2024-04-12
1020Japan2024-05-03
1021France2024-04-27
1022Germany2024-05-01
1023Spain2024-04-20
1024France2024-04-14
1025Australia2024-04-11
1026Japan2024-04-22
1027Russia2024-04-30
1028Japan2024-04-10
1029Italy2024-04-28
1030Canada2024-05-02
1031India2024-05-04
1032Argentina2024-04-27
1033Canada2024-04-18
1034Spain2024-04-19
1035Spain2024-04-08
1036Italy2024-04-19
1037Italy2024-04-07
1038Germany2024-04-18
1039India2024-05-03
1040United Kingdom2024-04-07
1041Spain2024-04-29
1042United Kingdom2024-04-11
1043Russia2024-04-30
1044United Kingdom2024-04-11
1045United Kingdom2024-04-11
1046Brazil2024-04-09
1047Russia2024-04-30
1048France2024-04-14
1049Russia2024-04-15

On-Demand Data

NameIdCountryDate
Leon A Garufi1000India2024-04-20
Aruna B Glick1001Spain2024-04-08
Jennifer L Perin1002Germany2024-05-03
Juan P Nicka1003Germany2024-04-22
Chavez N Wieser1004Australia2024-05-03
Morrow A Vocelka1005Argentina2024-04-20
Johnson E Schemmer1006Japan2024-04-30
Ivar D Malet1007Spain2024-04-24
Tony T Dilliard1008Russia2024-04-11
Misaki C Dilliard1009Argentina2024-04-22
Mayumi P Waycott1010France2024-04-09
Murillo B Kusko1011Germany2024-04-16
Rodrigues S Flosi1012Spain2024-04-23
Aruna V Rim1013United Kingdom2024-04-29
Claire H Ruta1014Australia2024-05-03
James M Darakjy1015Argentina2024-04-18
Leon Y Stockham1016Australia2024-04-12
Chavez Z Iturbide1017Germany2024-04-29
Adams V Rulapaugh1018France2024-04-15
Costa F Malet1019France2024-04-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Smith Q SaylorsGermanyAnna Fali PROPOSAL
Smith N ShinkoRussiaOnyama Limba QUALIFIED
Leja J KuskoUnited KingdomOnyama Limba NEW
Leja Z GlickArgentinaIvan Magalhaes NEW
Leja T StensethSpainBernardo Dominic NEGOTIATION
James D KuskoUnited KingdomXuxue Feng QUALIFIED
Smith U CampainSpainAsiya Javayant UNQUALIFIED
Morrow W MorascaIndiaElwin Sharvill PROPOSAL
Octavia D GauchoAustraliaIvan Magalhaes QUALIFIED
Aditya L MorascaArgentinaAsiya Javayant QUALIFIED
Johnson L DarakjyAustraliaStephen Shaw QUALIFIED
Julie H NickaIndiaXuxue Feng RENEWAL
Ricardo O FerenczIndiaIvan Magalhaes QUALIFIED
Kadeem W CaudyRussiaAmy Elsner NEGOTIATION
Izzy O DarakjyFranceOnyama Limba RENEWAL
Arvin K FollerFranceAmy Elsner NEGOTIATION
Isabel Q NestleGermanyAmy Elsner RENEWAL
Jefferson B VenereItalyAsiya Javayant RENEWAL
Kadeem I MaletFranceIvan Magalhaes PROPOSAL
Darci T StensethBrazilIoni Bowcher QUALIFIED
Mayumi V ChuiItalyBernardo Dominic NEW
James D PoquetteGermanyAmy Elsner UNQUALIFIED
Clifford K PerinItalyAmy Elsner RENEWAL
Johnson A WhobreyFranceAmy Elsner NEGOTIATION
Stacey F SergiCanadaOnyama Limba UNQUALIFIED
Antonio O BologniaAustraliaStephen Shaw NEGOTIATION
Cody J GillianIndiaXuxue Feng NEGOTIATION
Tony D PerinRussiaElwin Sharvill QUALIFIED
Stacey E ShinkoCanadaElwin Sharvill NEW
Clifford V DarakjyCanadaStephen Shaw PROPOSAL
Isabel N PoquetteItalyIoni Bowcher RENEWAL
Leja O ChuiCanadaBernardo Dominic RENEWAL
Chavez S WhobreyGermanyBernardo Dominic QUALIFIED
Juan L SergiJapanStephen Shaw UNQUALIFIED
Nicolas J FlosiItalyAmy Elsner RENEWAL
Wickens K InouyeBrazilAmy Elsner NEW
David L NickaGermanyStephen Shaw NEGOTIATION
Mujtaba G CampainAustraliaAmy Elsner UNQUALIFIED
Octavia P VocelkaArgentinaElwin Sharvill RENEWAL
Stacey N MaletCanadaAsiya Javayant UNQUALIFIED

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