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
Cody P BriddickIndiaIoni Bowcher RENEWAL
Julie F BologniaCanadaXuxue Feng PROPOSAL
Greenwood P WhobreyItalyAmy Elsner QUALIFIED
Julie X MacleadIndiaElwin Sharvill UNQUALIFIED
Kadeem A OstroskyUnited KingdomBernardo Dominic PROPOSAL
Munro Y ButtFranceIoni Bowcher PROPOSAL
Kadeem U RimJapanAnna Fali RENEWAL
Aditya V PoquetteUnited KingdomIoni Bowcher PROPOSAL
Smith Y BowleyJapanElwin Sharvill RENEWAL
Aika P RulapaughBrazilOnyama Limba QUALIFIED
Darci S BologniaIndiaIvan Magalhaes NEGOTIATION
Ashley K FlosiJapanAnna Fali UNQUALIFIED
James M OldroydUnited KingdomElwin Sharvill NEGOTIATION
David T StockhamSpainIoni Bowcher NEGOTIATION
Isabel V OstroskySpainAsiya Javayant RENEWAL
Rodrigues B ShinkoBrazilAsiya Javayant QUALIFIED
Nicolas H MaletCanadaAsiya Javayant QUALIFIED
Greenwood T WhobreyIndiaStephen Shaw UNQUALIFIED
Cody B CaldareraFranceAmy Elsner UNQUALIFIED
Wickens R BologniaSpainAnna Fali RENEWAL
Nicolas F DarakjyItalyXuxue Feng NEW
Maria E DarakjySpainElwin Sharvill RENEWAL
Morrow I RoysterIndiaIvan Magalhaes NEGOTIATION
Maria T VocelkaIndiaBernardo Dominic UNQUALIFIED
Greenwood E PerinCanadaStephen Shaw QUALIFIED
Arvin K ButtAustraliaAmy Elsner NEW
Wickens L IturbideCanadaAnna Fali UNQUALIFIED
Morrow W NickaAustraliaIvan Magalhaes UNQUALIFIED
Jefferson V PoquetteSpainAsiya Javayant UNQUALIFIED
Mujtaba S FollerBrazilAmy Elsner UNQUALIFIED
Chavez B InouyeArgentinaOnyama Limba RENEWAL
Costa J FlosiAustraliaStephen Shaw NEW
Chavez M ShinkoBrazilOnyama Limba PROPOSAL
Octavia G WieserFranceStephen Shaw QUALIFIED
Morrow T AmigonSpainBernardo Dominic NEGOTIATION
Misaki J DoeAustraliaElwin Sharvill PROPOSAL
Sinclair I RutaBrazilOnyama Limba PROPOSAL
Tony X GlickJapanElwin Sharvill NEW
Cody B VocelkaItalyStephen Shaw QUALIFIED
Nicolas Q DarakjyBrazilBernardo Dominic UNQUALIFIED
Francesco R GarufiIndiaAmy Elsner NEGOTIATION
Maisha Y IturbideFranceStephen Shaw RENEWAL
Costa C WieserGermanyBernardo Dominic QUALIFIED
Adams R OldroydGermanyAsiya Javayant QUALIFIED
Deepesh E FollerGermanyOnyama Limba NEW
Jeanfrancois P WaycottItalyIoni Bowcher NEW
Alejandro G BowleyIndiaIvan Magalhaes PROPOSAL
Antonio N WaycottGermanyStephen Shaw PROPOSAL
Jennifer H RimBrazilBernardo Dominic RENEWAL
Mujtaba Q CaudyJapanXuxue Feng PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Mayumi F SlusarskiArgentinaXuxue Feng NEGOTIATION
Ivar Y GillianAustraliaAsiya Javayant PROPOSAL
Juan W KuskoBrazilAmy Elsner RENEWAL
Morrow G ChuiAustraliaIoni Bowcher NEW
Leja F FerenczArgentinaOnyama Limba UNQUALIFIED
Jeanfrancois O BowleyRussiaAsiya Javayant NEW
Nicolas X DoeFranceBernardo Dominic NEW
Ashley A DarakjyItalyOnyama Limba PROPOSAL
Wickens F WhobreyRussiaIoni Bowcher RENEWAL
Octavia M NestleSpainXuxue Feng NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maisha B InouyeIndia2024-04-03Buckley Miller Wright PROPOSAL77Stephen Shaw
1001Deepesh E PaprockiIndia2024-04-13Rangoni Of Florence PROPOSAL68Bernardo Dominic
1002Misaki E DoeJapan2024-04-02Buckley Miller Wright NEW98Stephen Shaw
1003Francesco M KolmetzItaly2024-04-02Feltz Printing Service PROPOSAL88Amy Elsner
1004Salvatore L MorascaJapan2024-04-01Rousseaux, Michael Esq UNQUALIFIED70Amy Elsner
1005Murillo I WhobreyBrazil2024-04-18King, Christopher A Esq RENEWAL21Amy Elsner
1006David S MarrierUnited Kingdom2024-04-23Morlong Associates NEW13Asiya Javayant
1007Stacey V MaletRussia2024-04-16Commercial Press NEGOTIATION68Stephen Shaw
1008Antonio H MacleadCanada2024-04-09Chanay, Jeffrey A Esq UNQUALIFIED33Stephen Shaw
1009Wickens B RimBrazil2024-04-23Feltz Printing Service PROPOSAL55Asiya Javayant
1010Jeanfrancois X BowleyBrazil2024-04-09Morlong Associates RENEWAL85Asiya Javayant
1011Murillo V RimArgentina2024-04-01Feiner Bros NEW71Elwin Sharvill
1012Kadeem L RimCanada2024-04-21Printing Dimensions NEGOTIATION86Stephen Shaw
1013Stacey W RutaCanada2024-04-07Buckley Miller Wright QUALIFIED33Bernardo Dominic
1014Chavez L ShinkoCanada2024-04-16Buckley Miller Wright NEGOTIATION25Ioni Bowcher
1015Darci Y StensethArgentina2024-03-29Rousseaux, Michael Esq UNQUALIFIED45Xuxue Feng
1016Chavez X MarrierJapan2024-04-13King, Christopher A Esq QUALIFIED87Xuxue Feng
1017Aruna J OstroskyRussia2024-04-11King, Christopher A Esq NEW50Amy Elsner
1018Misaki Y ShinkoIndia2024-04-24Rangoni Of Florence NEGOTIATION97Elwin Sharvill
1019Arvin D BologniaGermany2024-03-29Commercial Press PROPOSAL98Xuxue Feng
1020Isabel G SergiJapan2024-04-08Printing Dimensions QUALIFIED51Xuxue Feng
1021Juan S BriddickBrazil2024-04-25Benton, John B Jr QUALIFIED52Ivan Magalhaes
1022Salvatore E SergiGermany2024-04-01Buckley Miller Wright NEGOTIATION32Amy Elsner
1023Costa K IturbideIndia2024-04-14Chanay, Jeffrey A Esq RENEWAL8Bernardo Dominic
1024Claire E GlickSpain2024-04-08Feiner Bros QUALIFIED69Xuxue Feng
1025Silvio Q OldroydSpain2024-04-10Chanay, Jeffrey A Esq NEGOTIATION50Stephen Shaw
1026Kaitlin Z BowleyJapan2024-04-08King, Christopher A Esq NEGOTIATION75Elwin Sharvill
1027Jennifer W WaycottItaly2024-04-03Morlong Associates NEGOTIATION72Amy Elsner
1028Jones K PoquetteUnited Kingdom2024-04-07Rousseaux, Michael Esq UNQUALIFIED85Elwin Sharvill
1029Silvio E DarakjyItaly2024-04-15Dorl, James J Esq NEGOTIATION8Ioni Bowcher
1030Cody F RimIndia2024-04-25Printing Dimensions NEW40Ioni Bowcher
1031Octavia R OstroskyIndia2024-04-27Dorl, James J Esq RENEWAL14Xuxue Feng
1032Ricardo Q BowleySpain2024-04-26Chapman, Ross E Esq PROPOSAL21Asiya Javayant
1033Aditya O KolmetzArgentina2024-04-04Dorl, James J Esq RENEWAL53Elwin Sharvill
1034Cody Y FollerBrazil2024-04-11Benton, John B Jr RENEWAL9Onyama Limba
1035Smith E RutaBrazil2024-04-22Feiner Bros NEGOTIATION70Ivan Magalhaes
1036Mujtaba E FerenczCanada2024-04-14Feiner Bros NEGOTIATION37Stephen Shaw
1037Rodrigues M BriddickGermany2024-04-21Rousseaux, Michael Esq NEW6Bernardo Dominic
1038Maisha P CaudyItaly2024-04-19Chanay, Jeffrey A Esq RENEWAL76Bernardo Dominic
1039Arvin A AlbaresAustralia2024-04-25Truhlar And Truhlar Attys RENEWAL27Amy Elsner
1040Stacey A WaycottRussia2024-03-31Printing Dimensions NEW1Asiya Javayant
1041Isabel K SchemmerArgentina2024-04-13Feltz Printing Service RENEWAL90Elwin Sharvill
1042James P MorascaBrazil2024-04-13Chanay, Jeffrey A Esq NEGOTIATION1Ivan Magalhaes
1043David R DoeUnited Kingdom2024-04-19Chapman, Ross E Esq NEW90Bernardo Dominic
1044Smith U GlickAustralia2024-04-27Truhlar And Truhlar Attys PROPOSAL73Xuxue Feng
1045Johnson D MacleadFrance2024-04-01Morlong Associates PROPOSAL3Elwin Sharvill
1046Ashley K AmigonSpain2024-04-18Printing Dimensions NEGOTIATION34Asiya Javayant
1047Chavez F AmigonAustralia2024-04-05Feltz Printing Service RENEWAL77Anna Fali
1048Francesco T NickaFrance2024-04-04Printing Dimensions UNQUALIFIED79Xuxue Feng
1049Deepesh S MarrierSpain2024-04-21Dorl, James J Esq QUALIFIED87Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Chavez Z OldroydArgentinaIvan Magalhaes NEW
Deepesh O VenereRussiaBernardo Dominic PROPOSAL
Faith A BriddickItalyIoni Bowcher NEGOTIATION
Silvio I RulapaughRussiaAsiya Javayant NEGOTIATION
Jennifer S RulapaughSpainElwin Sharvill NEW
Salvatore L SlusarskiSpainIoni Bowcher UNQUALIFIED
Rodrigues T MarrierAustraliaIvan Magalhaes QUALIFIED
Misaki R MacleadIndiaStephen Shaw UNQUALIFIED
Morrow I RoysterJapanIvan Magalhaes NEGOTIATION
Ricardo H DilliardGermanyElwin Sharvill NEGOTIATION
Ashley E PerinAustraliaAnna Fali NEGOTIATION
Munro J BologniaArgentinaAmy Elsner RENEWAL
Costa F NestleCanadaIvan Magalhaes RENEWAL
Faith N StockhamAustraliaAmy Elsner RENEWAL
Ricardo G WhobreyRussiaIvan Magalhaes PROPOSAL
Clifford Z RimItalyAsiya Javayant QUALIFIED
Smith E BowleyIndiaOnyama Limba QUALIFIED
Smith E RoysterSpainStephen Shaw PROPOSAL
Aika Y InouyeSpainStephen Shaw PROPOSAL
James Y NickaArgentinaStephen Shaw PROPOSAL
Tony Y CaldareraAustraliaAmy Elsner NEW
Tony A TollnerBrazilAsiya Javayant PROPOSAL
Emily F WhobreyItalyElwin Sharvill NEW
Darci W WhobreyIndiaIoni Bowcher RENEWAL
Aruna L VenereGermanyAsiya Javayant NEW
Ashley Q NickaSpainXuxue Feng PROPOSAL
Mujtaba Q MarrierBrazilStephen Shaw QUALIFIED
James O BowleyUnited KingdomAmy Elsner RENEWAL
Juan H MacleadArgentinaAsiya Javayant UNQUALIFIED
Aruna Q ChuiGermanyBernardo Dominic NEGOTIATION
James X SergiIndiaIvan Magalhaes QUALIFIED
Tony P CaldareraItalyXuxue Feng RENEWAL
Stacey U SlusarskiGermanyAsiya Javayant QUALIFIED
Maria V CampainArgentinaXuxue Feng PROPOSAL
Rodrigues B NestleBrazilIvan Magalhaes UNQUALIFIED
Jennifer L SlusarskiGermanyIoni Bowcher UNQUALIFIED
Julie Q GauchoCanadaXuxue Feng RENEWAL
Juan T WieserGermanyIvan Magalhaes NEGOTIATION
Emily M OldroydCanadaAnna Fali QUALIFIED
Morrow B ButtIndiaStephen Shaw NEW
Johnson N CaldareraAustraliaIoni Bowcher NEGOTIATION
Aditya I StensethGermanyAsiya Javayant NEW
Aruna F DoeJapanElwin Sharvill PROPOSAL
Francesco H CampainRussiaIoni Bowcher NEW
Greenwood T RoysterUnited KingdomElwin Sharvill NEGOTIATION
Leja E SchemmerAustraliaAsiya Javayant UNQUALIFIED
James K TollnerIndiaStephen Shaw NEGOTIATION
Greenwood R RoysterFranceElwin Sharvill NEW
Sinclair X DarakjyRussiaIoni Bowcher UNQUALIFIED
Mayumi V DoeRussiaAnna Fali UNQUALIFIED
Frozen Columns
Name
Izzy D Shinko
Tony Z Bowley
David Z Malet
Leja A Malet
Greenwood R Bolognia
Ivar O Gillian
Alejandro V Inouye
Stacey H Butt
Leja P Darakjy
Ricardo N Slusarski
Johnson W Stockham
Darci N Inouye
Morrow N Sergi
Munro N Waycott
Darci O Gillian
Leja G Malet
Mujtaba H Amigon
Murillo N Sergi
Isabel V Ruta
Leja D Malet
Mayumi D Ostrosky
Salvatore F Campain
Jefferson G Foller
Kadeem K Gillian
Izzy A Rulapaugh
Chavez G Malet
Clifford N Gaucho
Jones Z Whobrey
Rodrigues O Kusko
Sinclair C Ferencz
Ashley W Ferencz
Darci O Wieser
Ivar T Kolmetz
Mayumi U Oldroyd
Stacey H Briddick
Jefferson L Gillian
Juan M Whobrey
Arvin I Flosi
Mayumi C Glick
Jones T Morasca
Mayumi F Chui
Juan J Flosi
Juan T Sergi
Alejandro C Darakjy
Wickens X Malet
Tony D Morasca
Mujtaba Q Royster
Emily V Ostrosky
Claire O Bowley
Greenwood S Tollner
IdCountryDate
1000Germany2024-04-05
1001France2024-04-05
1002United Kingdom2024-03-30
1003Russia2024-04-12
1004Brazil2024-03-31
1005Russia2024-04-15
1006Japan2024-04-04
1007Italy2024-04-07
1008Argentina2024-04-08
1009India2024-04-02
1010Australia2024-04-26
1011Brazil2024-04-12
1012India2024-04-16
1013Spain2024-04-01
1014India2024-04-04
1015Germany2024-04-18
1016France2024-03-29
1017United Kingdom2024-04-15
1018Germany2024-04-16
1019Germany2024-04-19
1020United Kingdom2024-04-22
1021United Kingdom2024-04-14
1022Brazil2024-04-24
1023France2024-04-18
1024Germany2024-04-23
1025Italy2024-04-09
1026United Kingdom2024-04-09
1027Spain2024-04-16
1028Australia2024-04-17
1029France2024-04-06
1030United Kingdom2024-04-01
1031Brazil2024-04-02
1032United Kingdom2024-04-26
1033United Kingdom2024-04-22
1034Australia2024-03-31
1035Brazil2024-03-30
1036Germany2024-04-18
1037Italy2024-04-15
1038France2024-04-18
1039Argentina2024-04-21
1040Spain2024-04-02
1041Argentina2024-03-29
1042United Kingdom2024-04-20
1043Canada2024-03-30
1044Japan2024-03-29
1045Brazil2024-04-03
1046Spain2024-04-05
1047Spain2024-04-23
1048Spain2024-04-06
1049Italy2024-04-01

On-Demand Data

NameIdCountryDate
Morrow V Butt1000India2024-04-24
James C Nestle1001Argentina2024-04-14
Mayumi I Chui1002Canada2024-04-01
Salvatore T Bowley1003Spain2024-04-17
Smith X Shinko1004Japan2024-04-23
Ricardo W Kusko1005Brazil2024-03-29
Mujtaba S Gillian1006Canada2024-04-22
Adams H Malet1007Argentina2024-04-15
Kaitlin Z Iturbide1008Australia2024-04-18
Leja E Tollner1009Japan2024-04-16
Maria W Amigon1010Australia2024-04-21
Faith U Paprocki1011Japan2024-04-25
Isabel Q Campain1012Italy2024-04-05
James G Rim1013Australia2024-04-08
Arvin O Stenseth1014Argentina2024-04-10
Salvatore F Darakjy1015India2024-03-29
Jennifer N Kusko1016India2024-04-13
Isabel S Ruta1017Brazil2024-04-25
Ricardo M Foller1018Germany2024-04-09
Julie S Oldroyd1019Spain2024-04-08
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Claire G InouyeSpainIvan Magalhaes RENEWAL
Francesco R MarrierArgentinaElwin Sharvill PROPOSAL
Emily T GlickSpainAsiya Javayant NEW
Antonio Y WieserRussiaAnna Fali NEW
Costa S BologniaBrazilOnyama Limba RENEWAL
Arvin G BologniaSpainXuxue Feng NEGOTIATION
Munro G WaycottSpainIvan Magalhaes RENEWAL
Claire W StockhamCanadaStephen Shaw NEGOTIATION
Isabel Y KolmetzRussiaIvan Magalhaes RENEWAL
Kaitlin F PerinArgentinaXuxue Feng NEW
Adams G WieserJapanIoni Bowcher NEW
Wickens Z ShinkoCanadaAsiya Javayant NEGOTIATION
Emily C RutaSpainIoni Bowcher NEGOTIATION
Leja P MacleadArgentinaAmy Elsner UNQUALIFIED
Darci E IturbideAustraliaIvan Magalhaes NEGOTIATION
Silvio F FollerUnited KingdomAsiya Javayant UNQUALIFIED
Misaki H BologniaAustraliaXuxue Feng UNQUALIFIED
Jennifer R MorascaUnited KingdomXuxue Feng UNQUALIFIED
Johnson P ShinkoCanadaAsiya Javayant QUALIFIED
Greenwood I WieserJapanBernardo Dominic PROPOSAL
Cody G DoeJapanIoni Bowcher RENEWAL
Arvin M CaudyFranceOnyama Limba UNQUALIFIED
Mayumi E ButtRussiaAsiya Javayant RENEWAL
Smith V OstroskyFranceAsiya Javayant NEW
Mujtaba A KolmetzIndiaElwin Sharvill QUALIFIED
Ricardo E FigeroaJapanIvan Magalhaes NEW
Isabel J RimCanadaElwin Sharvill QUALIFIED
Smith P MorascaGermanyIoni Bowcher RENEWAL
Jeanfrancois R IturbideArgentinaAnna Fali UNQUALIFIED
Juan N DarakjyJapanAmy Elsner NEGOTIATION
Isabel W RoysterGermanyStephen Shaw NEGOTIATION
David D MorascaJapanStephen Shaw QUALIFIED
Deepesh P DilliardUnited KingdomAmy Elsner UNQUALIFIED
Clifford Y CaudyIndiaAsiya Javayant QUALIFIED
Jennifer M SergiSpainAmy Elsner UNQUALIFIED
Juan S WaycottArgentinaIvan Magalhaes NEW
Francesco S KuskoUnited KingdomXuxue Feng QUALIFIED
Antonio S ShinkoAustraliaStephen Shaw NEGOTIATION
David O SchemmerArgentinaIvan Magalhaes QUALIFIED
Sinclair Y CaudyBrazilOnyama Limba 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>