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
Maisha Z PerinRussiaBernardo Dominic PROPOSAL
Emily J GarufiBrazilElwin Sharvill QUALIFIED
Maisha P GillianFranceXuxue Feng NEGOTIATION
Costa J MaletArgentinaAnna Fali UNQUALIFIED
Maisha X InouyeGermanyAmy Elsner NEW
Julie I FerenczIndiaAsiya Javayant NEW
Aruna G WaycottItalyElwin Sharvill UNQUALIFIED
Kadeem W FollerRussiaIoni Bowcher UNQUALIFIED
Octavia Q BologniaGermanyOnyama Limba UNQUALIFIED
Aika E MorascaCanadaIvan Magalhaes UNQUALIFIED
Adams X DilliardFranceOnyama Limba RENEWAL
Stacey U VocelkaItalyAnna Fali NEW
Maria W TollnerBrazilElwin Sharvill QUALIFIED
Jones G KolmetzAustraliaElwin Sharvill NEW
Faith E BriddickAustraliaIoni Bowcher UNQUALIFIED
Darci A DoeUnited KingdomAmy Elsner RENEWAL
Smith U FigeroaCanadaStephen Shaw UNQUALIFIED
Stacey D SergiJapanIoni Bowcher QUALIFIED
Francesco D NestleRussiaStephen Shaw PROPOSAL
Leon K KuskoBrazilBernardo Dominic RENEWAL
James N CampainCanadaStephen Shaw QUALIFIED
Emily H VocelkaJapanAsiya Javayant NEW
Jennifer U MacleadRussiaAmy Elsner NEW
Aruna P BriddickRussiaAmy Elsner PROPOSAL
Wickens A CampainBrazilXuxue Feng PROPOSAL
Rodrigues D GlickAustraliaXuxue Feng UNQUALIFIED
David M WhobreyRussiaAnna Fali NEW
Greenwood G CaudyJapanAmy Elsner QUALIFIED
Emily K DilliardGermanyIoni Bowcher QUALIFIED
Maisha V GauchoIndiaIvan Magalhaes PROPOSAL
Jeanfrancois A PerinSpainStephen Shaw UNQUALIFIED
Kadeem U OldroydItalyOnyama Limba NEW
Leon Q CaudyGermanyAnna Fali RENEWAL
Aditya O IturbideJapanBernardo Dominic PROPOSAL
Aruna S NickaItalyBernardo Dominic UNQUALIFIED
Antonio L KuskoGermanyOnyama Limba QUALIFIED
Deepesh G TollnerAustraliaIoni Bowcher RENEWAL
Johnson M FigeroaJapanElwin Sharvill NEGOTIATION
Julie W WaycottFranceStephen Shaw NEW
Ashley D PerinAustraliaXuxue Feng PROPOSAL
Octavia R NickaRussiaIvan Magalhaes UNQUALIFIED
Isabel G RulapaughBrazilXuxue Feng NEGOTIATION
Emily O FerenczBrazilOnyama Limba RENEWAL
Antonio F RoysterFranceElwin Sharvill NEW
Juan J ChuiBrazilAmy Elsner UNQUALIFIED
Mayumi Q OldroydAustraliaBernardo Dominic QUALIFIED
Greenwood S SchemmerRussiaIvan Magalhaes NEGOTIATION
Antonio J GlickAustraliaStephen Shaw NEW
Misaki S CampainCanadaAsiya Javayant NEW
Isabel A FerenczBrazilIoni Bowcher PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Wickens K GauchoIndiaAnna Fali QUALIFIED
Kadeem Z WieserJapanIoni Bowcher NEW
Costa K VocelkaSpainBernardo Dominic UNQUALIFIED
Silvio Q GauchoCanadaIoni Bowcher NEGOTIATION
Maria U GlickAustraliaAsiya Javayant UNQUALIFIED
Deepesh J VocelkaJapanStephen Shaw NEW
Ricardo M ChuiArgentinaAsiya Javayant QUALIFIED
Maisha S PaprockiFranceOnyama Limba NEW
Morrow Q CaldareraArgentinaElwin Sharvill PROPOSAL
Aika M SlusarskiJapanXuxue Feng NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000David X IturbideArgentina2024-03-17Benton, John B Jr PROPOSAL45Ivan Magalhaes
1001Faith G VocelkaAustralia2024-03-17Printing Dimensions QUALIFIED71Bernardo Dominic
1002Emily Z NickaArgentina2024-03-12King, Christopher A Esq UNQUALIFIED67Bernardo Dominic
1003Julie T MacleadUnited Kingdom2024-03-10Commercial Press NEW70Anna Fali
1004Darci G RoysterCanada2024-03-13Benton, John B Jr NEW8Ivan Magalhaes
1005Leon R TollnerAustralia2024-03-16Commercial Press PROPOSAL27Bernardo Dominic
1006Maria S GauchoRussia2024-03-15Printing Dimensions NEW2Onyama Limba
1007Alejandro O RutaSpain2024-03-14Chapman, Ross E Esq NEGOTIATION61Elwin Sharvill
1008Jeanfrancois Q FlosiUnited Kingdom2024-03-13Chanay, Jeffrey A Esq NEGOTIATION32Onyama Limba
1009Octavia T KuskoIndia2024-02-27Truhlar And Truhlar Attys NEW76Stephen Shaw
1010Silvio W PoquetteUnited Kingdom2024-03-06Chemel, James L Cpa UNQUALIFIED29Stephen Shaw
1011Nicolas C DoeIndia2024-03-01Feltz Printing Service RENEWAL18Amy Elsner
1012Julie A FigeroaGermany2024-03-04Truhlar And Truhlar Attys RENEWAL39Onyama Limba
1013Nicolas X KolmetzArgentina2024-03-24Chapman, Ross E Esq NEGOTIATION43Anna Fali
1014Maria Q DarakjyArgentina2024-03-06Feiner Bros NEW44Ioni Bowcher
1015Stacey J CaldareraArgentina2024-03-24King, Christopher A Esq UNQUALIFIED32Onyama Limba
1016Morrow H NickaJapan2024-03-25Rousseaux, Michael Esq NEW32Onyama Limba
1017Murillo N RutaAustralia2024-03-20Rangoni Of Florence NEW68Xuxue Feng
1018Julie L MaletRussia2024-03-10Rousseaux, Michael Esq UNQUALIFIED52Asiya Javayant
1019Alejandro B NestleItaly2024-02-29Printing Dimensions UNQUALIFIED79Xuxue Feng
1020Jefferson P SlusarskiAustralia2024-03-21Chapman, Ross E Esq QUALIFIED15Asiya Javayant
1021Clifford I ShinkoCanada2024-02-28Benton, John B Jr NEW82Amy Elsner
1022Sinclair V PaprockiGermany2024-03-19Feiner Bros QUALIFIED31Xuxue Feng
1023Ivar N SergiItaly2024-03-22King, Christopher A Esq PROPOSAL2Ivan Magalhaes
1024Maisha N NestleRussia2024-03-03Feiner Bros RENEWAL5Stephen Shaw
1025Ricardo R BriddickUnited Kingdom2024-03-17Chemel, James L Cpa UNQUALIFIED4Ivan Magalhaes
1026Isabel Q FigeroaItaly2024-03-22Feltz Printing Service NEW44Stephen Shaw
1027Arvin O FerenczGermany2024-02-29Chapman, Ross E Esq QUALIFIED31Onyama Limba
1028Mayumi K WaycottSpain2024-03-23Truhlar And Truhlar Attys RENEWAL34Xuxue Feng
1029Leon Q RulapaughArgentina2024-02-28Chapman, Ross E Esq NEGOTIATION68Anna Fali
1030Jennifer X RulapaughBrazil2024-03-26Buckley Miller Wright QUALIFIED92Ivan Magalhaes
1031Izzy B SchemmerJapan2024-03-17Rousseaux, Michael Esq NEGOTIATION2Onyama Limba
1032Leon N RimCanada2024-03-07Rousseaux, Michael Esq PROPOSAL63Amy Elsner
1033Jones P FerenczItaly2024-03-22Buckley Miller Wright UNQUALIFIED81Ivan Magalhaes
1034Jennifer V StensethRussia2024-03-19Buckley Miller Wright NEGOTIATION40Asiya Javayant
1035Greenwood Q AmigonRussia2024-03-03Rousseaux, Michael Esq NEGOTIATION21Ioni Bowcher
1036Rodrigues D RutaCanada2024-03-08Commercial Press NEGOTIATION17Bernardo Dominic
1037Jefferson K DilliardRussia2024-03-27King, Christopher A Esq NEW88Ioni Bowcher
1038Mujtaba G ButtSpain2024-03-22Chemel, James L Cpa NEW82Xuxue Feng
1039Isabel M InouyeSpain2024-03-07Dorl, James J Esq QUALIFIED67Asiya Javayant
1040Claire A ButtBrazil2024-03-18Printing Dimensions QUALIFIED49Ivan Magalhaes
1041Alejandro B BowleyUnited Kingdom2024-03-17Morlong Associates NEGOTIATION7Anna Fali
1042Darci B FollerArgentina2024-03-07Morlong Associates NEGOTIATION83Ivan Magalhaes
1043Tony U ButtItaly2024-03-17Feiner Bros QUALIFIED82Asiya Javayant
1044Misaki A VenereCanada2024-03-27King, Christopher A Esq NEGOTIATION27Asiya Javayant
1045Adams O RulapaughGermany2024-03-02Rousseaux, Michael Esq NEW91Amy Elsner
1046Misaki V SaylorsRussia2024-03-04Chapman, Ross E Esq QUALIFIED15Elwin Sharvill
1047Clifford M WhobreyIndia2024-02-28Commercial Press RENEWAL90Anna Fali
1048James L StockhamJapan2024-03-13Dorl, James J Esq UNQUALIFIED70Xuxue Feng
1049Murillo P CaldareraGermany2024-03-16Rousseaux, Michael Esq NEW20Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Greenwood K DoeBrazilAsiya Javayant QUALIFIED
James J ChuiAustraliaIoni Bowcher NEW
Munro J PaprockiArgentinaAnna Fali NEW
Wickens J FlosiIndiaIoni Bowcher NEGOTIATION
Alejandro E OldroydArgentinaAsiya Javayant PROPOSAL
David G WaycottIndiaAmy Elsner UNQUALIFIED
Antonio M WaycottJapanAmy Elsner RENEWAL
Aditya Y KuskoGermanyIoni Bowcher NEGOTIATION
Stacey A FigeroaAustraliaOnyama Limba NEW
Misaki J BologniaBrazilAmy Elsner RENEWAL
Salvatore N VocelkaBrazilElwin Sharvill UNQUALIFIED
Mayumi P AlbaresUnited KingdomStephen Shaw RENEWAL
Tony R RulapaughGermanyAmy Elsner NEGOTIATION
Morrow W SlusarskiIndiaIvan Magalhaes PROPOSAL
Ashley Z RimBrazilBernardo Dominic PROPOSAL
Johnson K VocelkaUnited KingdomXuxue Feng QUALIFIED
Costa A CampainFranceElwin Sharvill QUALIFIED
Smith W WaycottUnited KingdomBernardo Dominic QUALIFIED
James X WieserBrazilStephen Shaw NEGOTIATION
Stacey G RutaSpainOnyama Limba RENEWAL
Jeanfrancois K SlusarskiFranceIoni Bowcher UNQUALIFIED
Isabel G BriddickItalyElwin Sharvill UNQUALIFIED
Tony Y MorascaIndiaXuxue Feng UNQUALIFIED
Costa M FerenczJapanAnna Fali NEW
Chavez D SchemmerSpainStephen Shaw NEGOTIATION
David F SergiArgentinaAnna Fali UNQUALIFIED
Misaki T RutaBrazilXuxue Feng NEW
Francesco L OldroydArgentinaAsiya Javayant UNQUALIFIED
Octavia H FigeroaCanadaIoni Bowcher PROPOSAL
Julie V IturbideJapanXuxue Feng PROPOSAL
Costa H GlickGermanyIvan Magalhaes RENEWAL
Clifford A PerinBrazilElwin Sharvill RENEWAL
Costa Q AlbaresIndiaBernardo Dominic RENEWAL
Antonio S OstroskyRussiaAnna Fali NEGOTIATION
David R PaprockiRussiaAnna Fali PROPOSAL
Faith S PoquetteArgentinaIoni Bowcher UNQUALIFIED
Emily Z CampainJapanStephen Shaw PROPOSAL
Aditya Y MarrierRussiaXuxue Feng RENEWAL
Octavia G VenereIndiaAmy Elsner NEW
Isabel E SergiItalyXuxue Feng RENEWAL
Murillo J MarrierGermanyAsiya Javayant UNQUALIFIED
Aika B SergiCanadaAmy Elsner NEGOTIATION
Maisha X NestleRussiaOnyama Limba NEGOTIATION
Mujtaba Q OstroskyGermanyAnna Fali PROPOSAL
Nicolas W SaylorsArgentinaBernardo Dominic NEGOTIATION
Octavia L CaldareraCanadaOnyama Limba RENEWAL
Aditya C ShinkoCanadaStephen Shaw PROPOSAL
Deepesh D SlusarskiUnited KingdomElwin Sharvill NEW
Greenwood U PerinSpainXuxue Feng RENEWAL
Maisha Z OstroskyBrazilIvan Magalhaes NEGOTIATION
Frozen Columns
Name
Ricardo H Morasca
Mayumi T Ruta
Johnson T Gillian
Jeanfrancois U Nicka
Arvin V Stenseth
Stacey D Perin
Alejandro P Whobrey
Izzy E Butt
Johnson J Vocelka
Costa X Butt
Costa U Maclead
Aruna D Glick
Darci E Butt
Isabel A Glick
Kadeem Q Malet
Jones L Caldarera
Chavez M Paprocki
Mujtaba G Ostrosky
Ivar I Figeroa
Clifford S Gaucho
Alejandro A Poquette
Deepesh Z Waycott
James S Rulapaugh
Clifford R Whobrey
Nicolas V Gillian
Cody O Albares
Cody R Ostrosky
David F Marrier
Munro C Stenseth
Ashley S Briddick
Arvin C Kolmetz
Jones K Poquette
Stacey V Albares
Jennifer K Inouye
Octavia F Maclead
Munro X Ostrosky
Stacey N Maclead
Morrow T Tollner
Wickens E Marrier
Greenwood I Campain
Morrow M Perin
Stacey I Maclead
Rodrigues X Rim
Alejandro M Sergi
Leon H Amigon
Misaki X Oldroyd
Chavez W Doe
Leon B Maclead
Ashley U Chui
Nicolas F Ostrosky
IdCountryDate
1000Canada2024-03-10
1001Japan2024-03-04
1002Canada2024-03-06
1003Germany2024-03-03
1004Brazil2024-03-03
1005Japan2024-03-05
1006India2024-03-08
1007India2024-03-10
1008Italy2024-03-22
1009France2024-03-03
1010Canada2024-03-05
1011Spain2024-03-15
1012Canada2024-03-15
1013Japan2024-02-28
1014Japan2024-03-13
1015Argentina2024-03-24
1016Canada2024-03-25
1017United Kingdom2024-03-17
1018India2024-03-16
1019Russia2024-02-28
1020Russia2024-03-15
1021United Kingdom2024-03-20
1022United Kingdom2024-03-12
1023Russia2024-03-07
1024Brazil2024-02-29
1025Canada2024-03-06
1026Russia2024-03-19
1027France2024-02-29
1028India2024-03-08
1029Japan2024-03-03
1030Russia2024-03-08
1031Brazil2024-03-07
1032Spain2024-03-25
1033Italy2024-03-25
1034Brazil2024-03-15
1035Italy2024-03-27
1036Italy2024-03-20
1037Australia2024-03-13
1038Canada2024-03-07
1039Russia2024-03-17
1040France2024-03-08
1041Australia2024-03-13
1042Argentina2024-03-04
1043Argentina2024-03-01
1044Japan2024-03-08
1045Japan2024-03-15
1046Argentina2024-03-03
1047Japan2024-02-29
1048Australia2024-03-26
1049Australia2024-03-08

On-Demand Data

NameIdCountryDate
Julie G Perin1000India2024-03-19
Greenwood G Kolmetz1001Canada2024-02-27
Murillo Z Nicka1002Argentina2024-03-08
Kadeem K Morasca1003Australia2024-03-02
Maria F Amigon1004Russia2024-03-16
Morrow S Foller1005India2024-03-25
Julie U Doe1006Argentina2024-03-21
Emily J Doe1007Italy2024-03-09
Silvio N Iturbide1008Canada2024-03-24
Sinclair N Glick1009India2024-02-28
Jennifer B Caudy1010Italy2024-03-13
Kaitlin P Caldarera1011Spain2024-03-20
Wickens G Shinko1012Spain2024-03-04
Deepesh B Rulapaugh1013Japan2024-03-04
Mayumi X Gaucho1014Australia2024-03-14
Kaitlin F Sergi1015Argentina2024-02-29
Ashley A Ferencz1016Canada2024-03-20
Nicolas Z Ostrosky1017France2024-03-13
Greenwood S Malet1018Canada2024-03-20
Adams B Chui1019Brazil2024-03-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mujtaba G DarakjyBrazilStephen Shaw UNQUALIFIED
Julie K InouyeIndiaAsiya Javayant UNQUALIFIED
Claire U FerenczUnited KingdomAsiya Javayant PROPOSAL
Nicolas K OldroydIndiaBernardo Dominic UNQUALIFIED
Maisha Y GillianArgentinaOnyama Limba RENEWAL
Jones O MorascaUnited KingdomBernardo Dominic QUALIFIED
Alejandro K SchemmerBrazilAnna Fali QUALIFIED
Sinclair Q NickaIndiaAsiya Javayant UNQUALIFIED
Kadeem Y OldroydArgentinaIvan Magalhaes NEW
Faith F WaycottSpainStephen Shaw QUALIFIED
Greenwood V SchemmerCanadaIoni Bowcher RENEWAL
Munro Q VocelkaIndiaIvan Magalhaes PROPOSAL
Claire A BologniaSpainIoni Bowcher PROPOSAL
Tony Z PerinCanadaIvan Magalhaes NEW
Jeanfrancois V GillianFranceAnna Fali QUALIFIED
Aika V DoeAustraliaBernardo Dominic PROPOSAL
Wickens I InouyeRussiaAnna Fali QUALIFIED
Cody X PerinCanadaIvan Magalhaes UNQUALIFIED
Murillo C VocelkaItalyAnna Fali NEGOTIATION
Silvio K FerenczJapanElwin Sharvill QUALIFIED
Alejandro P AmigonItalyBernardo Dominic QUALIFIED
Aika M BologniaFranceIvan Magalhaes NEW
Nicolas X SlusarskiFranceAmy Elsner QUALIFIED
Antonio T DilliardItalyIvan Magalhaes NEGOTIATION
Emily L ButtFranceXuxue Feng UNQUALIFIED
Stacey Q ChuiFranceXuxue Feng QUALIFIED
Arvin O RimRussiaOnyama Limba QUALIFIED
Kaitlin C SlusarskiRussiaElwin Sharvill QUALIFIED
Chavez S CaldareraAustraliaIoni Bowcher NEW
Leon I CaudyGermanyIoni Bowcher QUALIFIED
Alejandro U WieserCanadaIoni Bowcher NEGOTIATION
Johnson J CaudyRussiaAnna Fali QUALIFIED
Stacey I NickaUnited KingdomAnna Fali QUALIFIED
Faith A RutaIndiaOnyama Limba RENEWAL
Darci O GlickUnited KingdomElwin Sharvill NEW
Clifford Y AmigonAustraliaOnyama Limba NEW
Arvin D KuskoRussiaAnna Fali NEGOTIATION
Ricardo O MorascaJapanOnyama Limba UNQUALIFIED
Misaki O CampainSpainOnyama Limba RENEWAL
Izzy S RimJapanXuxue Feng NEW

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