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
Leja A PaprockiArgentinaBernardo Dominic PROPOSAL
Greenwood P MarrierUnited KingdomStephen Shaw UNQUALIFIED
Kaitlin C KolmetzArgentinaIoni Bowcher RENEWAL
Mujtaba V RutaJapanElwin Sharvill RENEWAL
Chavez H AlbaresRussiaAmy Elsner RENEWAL
Clifford X AmigonRussiaStephen Shaw UNQUALIFIED
Octavia G AmigonArgentinaBernardo Dominic NEW
Ricardo V SergiIndiaAnna Fali UNQUALIFIED
Misaki M BowleyUnited KingdomAnna Fali NEW
Maria H CampainAustraliaXuxue Feng UNQUALIFIED
Greenwood F GarufiIndiaAnna Fali NEGOTIATION
Rodrigues L StockhamIndiaIoni Bowcher NEW
Murillo G MaletArgentinaIvan Magalhaes RENEWAL
Maisha F MacleadArgentinaElwin Sharvill NEW
Mujtaba N CampainItalyOnyama Limba PROPOSAL
Costa Q OstroskyGermanyAsiya Javayant PROPOSAL
Kadeem G FlosiItalyIvan Magalhaes RENEWAL
Sinclair O KolmetzAustraliaElwin Sharvill NEGOTIATION
Adams N GlickIndiaIvan Magalhaes RENEWAL
Darci U SchemmerGermanyStephen Shaw RENEWAL
Misaki M DoeItalyOnyama Limba RENEWAL
Johnson S SchemmerItalyAnna Fali UNQUALIFIED
Cody E ButtItalyOnyama Limba NEW
Emily U ChuiCanadaAnna Fali UNQUALIFIED
James J FerenczItalyStephen Shaw PROPOSAL
Aika V MaletGermanyAmy Elsner UNQUALIFIED
Mujtaba Y GlickArgentinaBernardo Dominic UNQUALIFIED
James C DilliardGermanyAnna Fali RENEWAL
Leja R PerinGermanyOnyama Limba UNQUALIFIED
Octavia J StensethAustraliaStephen Shaw PROPOSAL
Kadeem X MarrierJapanBernardo Dominic QUALIFIED
Salvatore W CaldareraSpainOnyama Limba UNQUALIFIED
Antonio Z SlusarskiIndiaOnyama Limba UNQUALIFIED
Johnson D ChuiBrazilIvan Magalhaes PROPOSAL
Octavia Q MacleadArgentinaXuxue Feng NEW
Adams O DoeSpainXuxue Feng QUALIFIED
Maria O MaletArgentinaOnyama Limba PROPOSAL
Octavia H MacleadFranceBernardo Dominic RENEWAL
Antonio T DoeUnited KingdomAnna Fali PROPOSAL
Greenwood G WhobreyJapanAmy Elsner RENEWAL
Smith I WieserRussiaBernardo Dominic RENEWAL
Morrow D RoysterJapanIvan Magalhaes UNQUALIFIED
Nicolas B VocelkaFranceElwin Sharvill RENEWAL
Salvatore S StockhamAustraliaIvan Magalhaes RENEWAL
Ivar I MacleadBrazilAnna Fali QUALIFIED
Darci X MaletJapanAsiya Javayant NEW
Aditya R OstroskyRussiaIoni Bowcher RENEWAL
Ivar P CaldareraCanadaAsiya Javayant QUALIFIED
Costa G OldroydItalyIoni Bowcher PROPOSAL
Izzy V SergiSpainIoni Bowcher QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Kadeem A OstroskyUnited KingdomAnna Fali UNQUALIFIED
Deepesh C CaldareraArgentinaBernardo Dominic NEGOTIATION
Tony F MaletJapanStephen Shaw PROPOSAL
Maisha Z ChuiArgentinaStephen Shaw NEGOTIATION
Jones Q GillianCanadaElwin Sharvill PROPOSAL
Misaki I DarakjyCanadaAmy Elsner UNQUALIFIED
Ricardo C OstroskyIndiaIoni Bowcher NEW
Murillo B BologniaSpainElwin Sharvill RENEWAL
Deepesh J MaletFranceOnyama Limba NEW
Kaitlin Z CaudyGermanyElwin Sharvill NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Cody E TollnerFrance2024-04-02Commercial Press NEGOTIATION58Elwin Sharvill
1001Greenwood F SlusarskiFrance2024-04-13Printing Dimensions UNQUALIFIED45Ivan Magalhaes
1002Aruna U StensethGermany2024-04-25King, Christopher A Esq QUALIFIED34Onyama Limba
1003Jones U KuskoSpain2024-04-10Truhlar And Truhlar Attys RENEWAL40Stephen Shaw
1004Juan H AmigonJapan2024-04-10Truhlar And Truhlar Attys QUALIFIED78Ivan Magalhaes
1005Salvatore M NestleCanada2024-04-21Printing Dimensions QUALIFIED12Ioni Bowcher
1006Chavez F OstroskyRussia2024-04-11Printing Dimensions RENEWAL31Amy Elsner
1007Leon Z GarufiArgentina2024-04-18Feltz Printing Service RENEWAL86Ioni Bowcher
1008David Q WhobreyCanada2024-04-15Rangoni Of Florence PROPOSAL75Stephen Shaw
1009Tony J PerinGermany2024-04-12Chemel, James L Cpa RENEWAL69Bernardo Dominic
1010Faith A GauchoCanada2024-04-18Chapman, Ross E Esq RENEWAL89Amy Elsner
1011Nicolas C WieserFrance2024-04-27King, Christopher A Esq QUALIFIED9Stephen Shaw
1012Tony W TollnerUnited Kingdom2024-04-04Feiner Bros NEGOTIATION93Amy Elsner
1013Aika Y VocelkaCanada2024-04-14Buckley Miller Wright UNQUALIFIED38Onyama Limba
1014Ashley P FerenczGermany2024-04-11Chapman, Ross E Esq RENEWAL70Amy Elsner
1015Salvatore P RimCanada2024-04-12Truhlar And Truhlar Attys PROPOSAL10Ivan Magalhaes
1016Juan K BowleyAustralia2024-04-23Chemel, James L Cpa QUALIFIED14Onyama Limba
1017Julie Q ButtCanada2024-05-01Rangoni Of Florence QUALIFIED23Elwin Sharvill
1018Jones Y GillianRussia2024-04-02Chanay, Jeffrey A Esq NEW67Amy Elsner
1019Clifford C NestleGermany2024-04-16Rangoni Of Florence UNQUALIFIED46Amy Elsner
1020Murillo J ButtSpain2024-04-25Buckley Miller Wright UNQUALIFIED15Anna Fali
1021Maisha P OstroskyFrance2024-04-17Chemel, James L Cpa RENEWAL37Bernardo Dominic
1022Octavia T SlusarskiAustralia2024-04-13Benton, John B Jr UNQUALIFIED49Onyama Limba
1023Misaki W SchemmerFrance2024-04-24Benton, John B Jr QUALIFIED68Ivan Magalhaes
1024James Q BowleyAustralia2024-04-21Buckley Miller Wright QUALIFIED82Ivan Magalhaes
1025James X TollnerBrazil2024-04-16Truhlar And Truhlar Attys QUALIFIED10Onyama Limba
1026Misaki Z SaylorsGermany2024-04-02Chemel, James L Cpa QUALIFIED11Anna Fali
1027Munro P FlosiFrance2024-04-23Dorl, James J Esq NEGOTIATION54Elwin Sharvill
1028Kaitlin D BologniaUnited Kingdom2024-04-30Feltz Printing Service RENEWAL1Xuxue Feng
1029Juan I NickaUnited Kingdom2024-04-20Buckley Miller Wright NEGOTIATION72Anna Fali
1030Johnson V WieserItaly2024-04-07Buckley Miller Wright NEW89Ivan Magalhaes
1031Maria X StensethUnited Kingdom2024-04-19Buckley Miller Wright NEW8Onyama Limba
1032James S PerinAustralia2024-04-07Chanay, Jeffrey A Esq NEW65Elwin Sharvill
1033Antonio X InouyeSpain2024-04-21Benton, John B Jr UNQUALIFIED20Anna Fali
1034Jennifer P RutaUnited Kingdom2024-04-06Commercial Press UNQUALIFIED98Anna Fali
1035Ivar U ButtGermany2024-04-12Rangoni Of Florence UNQUALIFIED86Asiya Javayant
1036Clifford O IturbideUnited Kingdom2024-04-14Feiner Bros RENEWAL46Stephen Shaw
1037Aditya B NestleGermany2024-04-11Rousseaux, Michael Esq NEGOTIATION6Xuxue Feng
1038Morrow O DoeUnited Kingdom2024-04-05King, Christopher A Esq NEGOTIATION13Asiya Javayant
1039Clifford A IturbideUnited Kingdom2024-04-25King, Christopher A Esq NEGOTIATION80Asiya Javayant
1040Emily M KuskoGermany2024-04-23Chanay, Jeffrey A Esq RENEWAL50Elwin Sharvill
1041Francesco Y GillianItaly2024-04-30Chapman, Ross E Esq QUALIFIED48Ivan Magalhaes
1042Isabel L FollerRussia2024-04-08King, Christopher A Esq NEW63Stephen Shaw
1043Leon H MorascaFrance2024-04-21Rousseaux, Michael Esq UNQUALIFIED99Xuxue Feng
1044Costa K ShinkoBrazil2024-04-05Benton, John B Jr RENEWAL52Amy Elsner
1045Antonio X MaletAustralia2024-04-30King, Christopher A Esq NEGOTIATION88Ivan Magalhaes
1046James R GauchoIndia2024-04-30Feiner Bros PROPOSAL14Asiya Javayant
1047Antonio O RoysterSpain2024-04-03King, Christopher A Esq RENEWAL90Anna Fali
1048Maria E MacleadArgentina2024-04-30Feltz Printing Service PROPOSAL40Amy Elsner
1049Ivar V WieserBrazil2024-04-12Rousseaux, Michael Esq RENEWAL54Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Claire E IturbideArgentinaAsiya Javayant QUALIFIED
Juan L CaudyFranceXuxue Feng UNQUALIFIED
Clifford D BologniaBrazilIvan Magalhaes NEW
Jefferson M WieserItalyBernardo Dominic UNQUALIFIED
Rodrigues Y RimSpainBernardo Dominic UNQUALIFIED
Stacey B PerinUnited KingdomAnna Fali PROPOSAL
Adams B TollnerAustraliaAsiya Javayant PROPOSAL
Wickens Y PerinCanadaElwin Sharvill PROPOSAL
Jefferson P FlosiUnited KingdomIoni Bowcher QUALIFIED
Jennifer L SaylorsSpainAsiya Javayant NEGOTIATION
Emily E WhobreyGermanyStephen Shaw PROPOSAL
Rodrigues G FlosiIndiaXuxue Feng RENEWAL
Mujtaba U OldroydUnited KingdomIoni Bowcher PROPOSAL
Ashley V RutaRussiaAnna Fali NEGOTIATION
Antonio R RimArgentinaAsiya Javayant PROPOSAL
Johnson J VocelkaRussiaOnyama Limba UNQUALIFIED
Ivar W MaletBrazilOnyama Limba PROPOSAL
Nicolas G PerinCanadaIoni Bowcher NEW
Cody J MaletItalyAnna Fali NEW
Ashley S TollnerGermanyAmy Elsner NEGOTIATION
Leja D ChuiRussiaIvan Magalhaes NEW
Jefferson N MarrierBrazilOnyama Limba PROPOSAL
Jennifer Q KolmetzAustraliaIvan Magalhaes NEW
Greenwood S PoquetteGermanyOnyama Limba NEGOTIATION
Antonio R BologniaRussiaBernardo Dominic NEW
Kadeem O PoquetteGermanyBernardo Dominic PROPOSAL
Ricardo T GarufiJapanAmy Elsner NEW
Leon A GlickUnited KingdomXuxue Feng UNQUALIFIED
Tony K FerenczSpainStephen Shaw UNQUALIFIED
Emily T SlusarskiRussiaElwin Sharvill PROPOSAL
Mayumi P IturbideBrazilElwin Sharvill NEW
Kadeem L KuskoGermanyBernardo Dominic QUALIFIED
Morrow P GillianArgentinaIoni Bowcher NEGOTIATION
Francesco Y GauchoAustraliaIvan Magalhaes PROPOSAL
Wickens H FigeroaArgentinaAnna Fali UNQUALIFIED
David M CaudyGermanyAmy Elsner QUALIFIED
Aruna X StockhamCanadaIoni Bowcher UNQUALIFIED
Clifford O FerenczCanadaElwin Sharvill NEW
Greenwood F VenereArgentinaAsiya Javayant RENEWAL
Faith Q StensethCanadaStephen Shaw PROPOSAL
Jones U VenereSpainAmy Elsner UNQUALIFIED
Darci Q BriddickFranceAmy Elsner UNQUALIFIED
Salvatore R GillianSpainAmy Elsner PROPOSAL
Adams X AmigonFranceAnna Fali RENEWAL
Jefferson I SaylorsGermanyElwin Sharvill NEGOTIATION
Sinclair K MacleadAustraliaBernardo Dominic UNQUALIFIED
Sinclair O ButtIndiaAmy Elsner QUALIFIED
Darci S GillianBrazilStephen Shaw UNQUALIFIED
Alejandro E VenereJapanIvan Magalhaes NEGOTIATION
Mujtaba K NickaFranceAsiya Javayant NEGOTIATION
Frozen Columns
Name
Faith D Doe
Julie F Rulapaugh
Jeanfrancois B Marrier
Silvio P Ruta
Leon E Caudy
Maria R Garufi
Adams B Morasca
Munro S Caudy
Johnson E Maclead
Kadeem E Dilliard
Clifford W Malet
Ashley P Ruta
Murillo G Caudy
Arvin F Morasca
Sinclair S Marrier
Munro C Malet
Francesco K Tollner
Leja W Venere
Maisha W Figeroa
Jones T Slusarski
Maisha N Waycott
Greenwood E Kusko
Alejandro K Tollner
Ashley L Nestle
Mujtaba O Maclead
Costa J Briddick
Deepesh T Garufi
Juan P Albares
Deepesh D Amigon
Adams C Briddick
David U Tollner
Leja N Kusko
Ivar M Maclead
Leja S Wieser
Izzy P Royster
Nicolas J Kusko
Julie A Ostrosky
Faith W Perin
Leon I Paprocki
Murillo N Schemmer
Murillo D Kolmetz
Rodrigues N Butt
Rodrigues V Briddick
Wickens G Flosi
Leon G Bowley
Emily T Vocelka
Ricardo F Stockham
Mayumi F Vocelka
Maisha R Kusko
Salvatore R Glick
IdCountryDate
1000Russia2024-04-05
1001Australia2024-04-12
1002Spain2024-04-04
1003Australia2024-04-26
1004United Kingdom2024-04-14
1005Spain2024-04-17
1006Australia2024-04-18
1007Japan2024-04-25
1008India2024-04-12
1009India2024-04-21
1010United Kingdom2024-04-25
1011Italy2024-04-27
1012Russia2024-04-12
1013Argentina2024-04-22
1014United Kingdom2024-04-22
1015Brazil2024-04-25
1016Brazil2024-04-24
1017United Kingdom2024-04-19
1018Germany2024-04-10
1019France2024-04-17
1020Argentina2024-04-27
1021Argentina2024-04-07
1022Brazil2024-04-07
1023India2024-04-11
1024Spain2024-04-23
1025France2024-04-04
1026Argentina2024-04-16
1027France2024-04-23
1028Spain2024-04-22
1029Japan2024-04-11
1030Brazil2024-04-15
1031United Kingdom2024-04-18
1032Italy2024-04-10
1033Germany2024-04-30
1034Argentina2024-04-26
1035Argentina2024-04-15
1036Russia2024-04-14
1037Spain2024-04-30
1038Australia2024-05-01
1039Italy2024-04-22
1040Japan2024-04-26
1041Canada2024-04-18
1042Germany2024-04-07
1043Argentina2024-04-07
1044Germany2024-04-30
1045France2024-04-05
1046United Kingdom2024-04-25
1047Argentina2024-05-01
1048India2024-04-22
1049Argentina2024-04-05

On-Demand Data

NameIdCountryDate
Aditya B Schemmer1000Japan2024-04-07
Leja C Rim1001Germany2024-04-07
Julie W Rulapaugh1002Italy2024-04-02
Sinclair Q Butt1003Argentina2024-04-22
Chavez C Amigon1004Spain2024-04-13
Alejandro I Caldarera1005Russia2024-04-22
Aika E Darakjy1006Brazil2024-04-04
Ivar W Amigon1007Canada2024-04-25
Tony C Venere1008India2024-04-30
Claire A Gaucho1009India2024-04-04
Leon F Marrier1010Spain2024-04-29
Costa P Albares1011Canada2024-04-17
Morrow Z Flosi1012Brazil2024-04-13
Arvin A Gillian1013United Kingdom2024-04-25
Leja E Figeroa1014India2024-04-19
Sinclair H Shinko1015Japan2024-04-19
Chavez C Perin1016Australia2024-04-06
James E Inouye1017Canada2024-04-25
David O Saylors1018Italy2024-04-13
Kaitlin G Perin1019Spain2024-04-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Emily F IturbideCanadaAnna Fali RENEWAL
Alejandro Y WaycottIndiaAsiya Javayant QUALIFIED
Aruna X BowleyJapanIoni Bowcher NEGOTIATION
Rodrigues S MacleadArgentinaAsiya Javayant RENEWAL
Greenwood F PerinSpainIvan Magalhaes QUALIFIED
Aruna J StockhamJapanIoni Bowcher NEW
Arvin R WhobreyIndiaAnna Fali RENEWAL
Rodrigues E WhobreySpainElwin Sharvill QUALIFIED
Aditya V CaldareraSpainXuxue Feng QUALIFIED
Wickens W MacleadRussiaAmy Elsner PROPOSAL
Kaitlin C StockhamCanadaIvan Magalhaes QUALIFIED
Clifford S StensethUnited KingdomAmy Elsner PROPOSAL
Johnson L ChuiSpainOnyama Limba NEGOTIATION
Salvatore E RutaArgentinaStephen Shaw NEGOTIATION
Jefferson X GauchoIndiaAnna Fali RENEWAL
Leon M DoeRussiaIoni Bowcher RENEWAL
Johnson D CaudyAustraliaOnyama Limba RENEWAL
Smith F CaldareraArgentinaIoni Bowcher UNQUALIFIED
Deepesh H FlosiCanadaElwin Sharvill NEW
Cody Q MorascaCanadaAnna Fali RENEWAL
James K BologniaFranceAnna Fali RENEWAL
Chavez W CampainUnited KingdomIvan Magalhaes PROPOSAL
Claire G DarakjyFranceAnna Fali UNQUALIFIED
Mujtaba X GillianUnited KingdomStephen Shaw QUALIFIED
Jones W MorascaAustraliaStephen Shaw RENEWAL
Octavia H AmigonAustraliaIoni Bowcher RENEWAL
Clifford Q OldroydJapanAnna Fali NEW
Johnson Q ChuiGermanyOnyama Limba NEW
Stacey S FlosiRussiaStephen Shaw NEW
Aditya B WieserCanadaElwin Sharvill PROPOSAL
Francesco R RoysterUnited KingdomAnna Fali RENEWAL
Emily C StensethBrazilElwin Sharvill QUALIFIED
Adams Z AlbaresItalyIoni Bowcher RENEWAL
Tony E RutaGermanyAsiya Javayant RENEWAL
Morrow I KuskoAustraliaIvan Magalhaes NEW
Juan V GauchoIndiaAnna Fali NEGOTIATION
Greenwood E VocelkaArgentinaStephen Shaw RENEWAL
Munro L SlusarskiItalyAsiya Javayant QUALIFIED
Aruna D NestleBrazilAnna Fali RENEWAL
Salvatore R GlickItalyOnyama 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>