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
Faith O MaletFranceAnna Fali PROPOSAL
James Z AmigonSpainAmy Elsner NEW
Claire C RoysterCanadaIoni Bowcher PROPOSAL
Leja F PerinGermanyBernardo Dominic UNQUALIFIED
Jeanfrancois P MaletFranceIoni Bowcher NEW
Julie X AlbaresBrazilAmy Elsner NEW
Juan K BriddickRussiaAmy Elsner PROPOSAL
Munro T TollnerItalyElwin Sharvill QUALIFIED
Costa E FerenczAustraliaElwin Sharvill NEGOTIATION
Aruna D DoeSpainBernardo Dominic QUALIFIED
Claire T FigeroaIndiaXuxue Feng UNQUALIFIED
Antonio O GauchoGermanyBernardo Dominic UNQUALIFIED
Misaki E CaldareraArgentinaStephen Shaw UNQUALIFIED
Jones C ButtGermanyElwin Sharvill RENEWAL
Octavia V FlosiCanadaXuxue Feng NEW
Francesco F PerinAustraliaElwin Sharvill RENEWAL
Maria X NickaBrazilAmy Elsner NEW
Nicolas V OstroskyBrazilStephen Shaw RENEWAL
Emily W ChuiBrazilXuxue Feng RENEWAL
Maisha X InouyeJapanIvan Magalhaes UNQUALIFIED
James W WaycottGermanyElwin Sharvill UNQUALIFIED
David C InouyeJapanStephen Shaw PROPOSAL
Darci X AlbaresAustraliaBernardo Dominic NEW
Munro G FollerRussiaBernardo Dominic RENEWAL
David S FigeroaGermanyStephen Shaw UNQUALIFIED
Deepesh X BologniaJapanIvan Magalhaes UNQUALIFIED
Mujtaba C NestleArgentinaAsiya Javayant NEGOTIATION
Murillo A PoquetteRussiaAnna Fali PROPOSAL
Jeanfrancois I MaletBrazilXuxue Feng UNQUALIFIED
David O PoquetteGermanyXuxue Feng UNQUALIFIED
Emily D TollnerItalyBernardo Dominic QUALIFIED
Morrow X AlbaresRussiaIoni Bowcher UNQUALIFIED
Jefferson L KolmetzUnited KingdomOnyama Limba NEGOTIATION
Mayumi C SlusarskiArgentinaIvan Magalhaes NEW
Isabel J SaylorsItalyBernardo Dominic NEW
Aruna M NestleBrazilBernardo Dominic QUALIFIED
Clifford A CaldareraIndiaElwin Sharvill NEGOTIATION
Morrow I FerenczJapanAsiya Javayant UNQUALIFIED
Leon V SlusarskiItalyAnna Fali UNQUALIFIED
Silvio V GarufiAustraliaAmy Elsner NEW
Aditya C BowleySpainOnyama Limba NEW
Arvin C RutaFranceStephen Shaw NEW
Jennifer N CampainItalyIvan Magalhaes PROPOSAL
Jennifer U PoquetteRussiaAsiya Javayant NEGOTIATION
Stacey F OldroydRussiaAsiya Javayant NEGOTIATION
Costa W RulapaughGermanyOnyama Limba RENEWAL
Isabel I KuskoAustraliaStephen Shaw NEGOTIATION
Kadeem K TollnerGermanyStephen Shaw RENEWAL
Arvin Y BologniaUnited KingdomAmy Elsner NEGOTIATION
Claire C MaletAustraliaBernardo Dominic NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Deepesh E TollnerAustraliaIoni Bowcher UNQUALIFIED
David W BowleyArgentinaXuxue Feng PROPOSAL
Costa Q AmigonArgentinaXuxue Feng PROPOSAL
Darci I SlusarskiRussiaXuxue Feng RENEWAL
Alejandro T StensethGermanyBernardo Dominic NEGOTIATION
Cody M MaletJapanAmy Elsner QUALIFIED
Costa P KuskoSpainElwin Sharvill NEW
Mayumi X SlusarskiJapanStephen Shaw NEW
Adams X ChuiItalyAnna Fali PROPOSAL
David Y ButtBrazilOnyama Limba RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ashley Q MorascaJapan2024-04-28Printing Dimensions NEGOTIATION87Onyama Limba
1001Mujtaba A DilliardJapan2024-04-16Rangoni Of Florence QUALIFIED4Stephen Shaw
1002Alejandro L ButtFrance2024-04-19King, Christopher A Esq UNQUALIFIED93Ivan Magalhaes
1003Faith B RulapaughIndia2024-05-11Rousseaux, Michael Esq NEGOTIATION42Asiya Javayant
1004Aruna D CampainAustralia2024-04-18Printing Dimensions RENEWAL36Anna Fali
1005Mayumi Y MorascaRussia2024-04-25Chanay, Jeffrey A Esq QUALIFIED45Bernardo Dominic
1006Deepesh H GillianArgentina2024-05-03Benton, John B Jr UNQUALIFIED30Elwin Sharvill
1007Greenwood U SaylorsGermany2024-04-14Chapman, Ross E Esq PROPOSAL25Bernardo Dominic
1008Clifford D GauchoSpain2024-04-28Rangoni Of Florence PROPOSAL7Ivan Magalhaes
1009Clifford E ShinkoJapan2024-04-19Feiner Bros UNQUALIFIED25Stephen Shaw
1010Maisha M InouyeIndia2024-05-09Feltz Printing Service PROPOSAL13Ioni Bowcher
1011Sinclair O MacleadJapan2024-05-02King, Christopher A Esq RENEWAL14Ioni Bowcher
1012Ashley H PoquetteFrance2024-04-25Chapman, Ross E Esq RENEWAL42Ioni Bowcher
1013Alejandro K InouyeCanada2024-04-24Feiner Bros PROPOSAL61Ioni Bowcher
1014Misaki I OldroydUnited Kingdom2024-04-15Rangoni Of Florence PROPOSAL35Ioni Bowcher
1015David J ChuiGermany2024-04-17Rousseaux, Michael Esq RENEWAL92Stephen Shaw
1016Silvio J ButtSpain2024-05-10Printing Dimensions QUALIFIED77Bernardo Dominic
1017Aika C GauchoArgentina2024-05-11King, Christopher A Esq QUALIFIED36Bernardo Dominic
1018Maria M GarufiCanada2024-04-14Dorl, James J Esq NEW15Onyama Limba
1019Ivar F MacleadItaly2024-05-01Chemel, James L Cpa NEGOTIATION22Xuxue Feng
1020Chavez O BowleyRussia2024-04-26Chanay, Jeffrey A Esq RENEWAL8Onyama Limba
1021Maria S PaprockiFrance2024-04-30Chapman, Ross E Esq RENEWAL6Xuxue Feng
1022Tony J KolmetzSpain2024-05-06Chanay, Jeffrey A Esq NEW57Elwin Sharvill
1023Maisha U MaletArgentina2024-04-21Chemel, James L Cpa RENEWAL82Stephen Shaw
1024Tony J MarrierCanada2024-04-21Feiner Bros QUALIFIED62Bernardo Dominic
1025Greenwood Z GarufiItaly2024-04-24Commercial Press NEGOTIATION11Amy Elsner
1026Juan S DarakjyCanada2024-04-19Commercial Press NEW43Stephen Shaw
1027Faith J FollerArgentina2024-04-17Truhlar And Truhlar Attys QUALIFIED47Ivan Magalhaes
1028Adams S SchemmerRussia2024-04-17Chapman, Ross E Esq PROPOSAL61Onyama Limba
1029Francesco R SlusarskiIndia2024-05-12Commercial Press QUALIFIED4Bernardo Dominic
1030Jones B KolmetzItaly2024-04-27Printing Dimensions NEW97Xuxue Feng
1031Nicolas C CaldareraRussia2024-04-18Feltz Printing Service UNQUALIFIED82Xuxue Feng
1032Jones E MacleadIndia2024-05-02Benton, John B Jr NEW35Elwin Sharvill
1033Emily X SaylorsJapan2024-05-10Rangoni Of Florence UNQUALIFIED35Xuxue Feng
1034Jeanfrancois Y RimArgentina2024-05-10Commercial Press QUALIFIED97Stephen Shaw
1035Morrow H GlickAustralia2024-05-01Morlong Associates QUALIFIED33Elwin Sharvill
1036Cody Y BriddickAustralia2024-04-13Chemel, James L Cpa QUALIFIED86Anna Fali
1037Julie Y GillianUnited Kingdom2024-05-04Truhlar And Truhlar Attys RENEWAL23Amy Elsner
1038Octavia L DarakjyAustralia2024-05-06Printing Dimensions NEGOTIATION57Amy Elsner
1039Jones I WieserSpain2024-04-15Benton, John B Jr NEW18Stephen Shaw
1040Morrow F WieserItaly2024-05-11Benton, John B Jr UNQUALIFIED36Asiya Javayant
1041Sinclair W NickaCanada2024-04-17Benton, John B Jr NEGOTIATION23Ioni Bowcher
1042Kadeem C GauchoAustralia2024-04-13Chanay, Jeffrey A Esq RENEWAL10Elwin Sharvill
1043Tony R NickaIndia2024-05-07Commercial Press RENEWAL97Xuxue Feng
1044Alejandro B OstroskyItaly2024-04-23Feltz Printing Service NEW48Ivan Magalhaes
1045Leja E WaycottUnited Kingdom2024-05-12Feltz Printing Service PROPOSAL39Stephen Shaw
1046Mayumi R CaldareraBrazil2024-04-26Chapman, Ross E Esq NEGOTIATION47Ioni Bowcher
1047Murillo C BologniaSpain2024-04-21Feiner Bros UNQUALIFIED0Xuxue Feng
1048Deepesh V SergiFrance2024-04-15Rangoni Of Florence PROPOSAL18Anna Fali
1049Jennifer G CaldareraIndia2024-04-24Benton, John B Jr UNQUALIFIED38Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Kaitlin M PaprockiJapanOnyama Limba NEGOTIATION
Julie V TollnerUnited KingdomBernardo Dominic NEW
Stacey A FerenczJapanXuxue Feng UNQUALIFIED
Smith T VocelkaGermanyAmy Elsner RENEWAL
Wickens D MarrierSpainIvan Magalhaes PROPOSAL
Ivar O MaletGermanyXuxue Feng RENEWAL
Stacey P KolmetzRussiaStephen Shaw QUALIFIED
Maisha K PoquetteBrazilOnyama Limba UNQUALIFIED
Faith J KolmetzJapanStephen Shaw UNQUALIFIED
Clifford K FerenczAustraliaXuxue Feng QUALIFIED
Mayumi K PerinBrazilBernardo Dominic NEGOTIATION
Aika D AlbaresBrazilElwin Sharvill QUALIFIED
Adams S InouyeIndiaOnyama Limba QUALIFIED
Cody Z BowleyGermanyOnyama Limba NEGOTIATION
Izzy S MaletGermanyAnna Fali NEW
Ricardo W ButtBrazilElwin Sharvill NEGOTIATION
Mujtaba E PoquetteIndiaBernardo Dominic UNQUALIFIED
Kaitlin Y StensethCanadaAmy Elsner NEGOTIATION
Stacey S MarrierRussiaAsiya Javayant NEW
Morrow D DoeItalyElwin Sharvill UNQUALIFIED
Maria R BowleyUnited KingdomAsiya Javayant RENEWAL
Morrow A GillianSpainBernardo Dominic NEGOTIATION
Leja J OstroskyGermanyBernardo Dominic UNQUALIFIED
Sinclair V StockhamBrazilAsiya Javayant QUALIFIED
Wickens T PoquetteIndiaIvan Magalhaes RENEWAL
Alejandro W GarufiIndiaIvan Magalhaes NEW
Kadeem Q WaycottRussiaIoni Bowcher NEW
Greenwood H DarakjySpainAnna Fali RENEWAL
Julie I SchemmerBrazilStephen Shaw QUALIFIED
Leon U MaletGermanyBernardo Dominic RENEWAL
Kadeem B StockhamGermanyStephen Shaw NEGOTIATION
Julie S FlosiAustraliaIoni Bowcher QUALIFIED
Murillo E IturbideGermanyBernardo Dominic NEW
Julie D WhobreyItalyOnyama Limba QUALIFIED
Darci A DilliardSpainAsiya Javayant UNQUALIFIED
Wickens I StockhamUnited KingdomAnna Fali RENEWAL
Faith Q RutaBrazilStephen Shaw NEW
Tony L WieserJapanOnyama Limba QUALIFIED
Izzy U PerinAustraliaXuxue Feng PROPOSAL
Nicolas Y ShinkoFranceElwin Sharvill QUALIFIED
Ricardo A StensethBrazilElwin Sharvill PROPOSAL
Octavia X RutaSpainAmy Elsner QUALIFIED
Salvatore Z PoquetteUnited KingdomBernardo Dominic QUALIFIED
Deepesh P StockhamRussiaXuxue Feng UNQUALIFIED
Julie I SergiRussiaAnna Fali UNQUALIFIED
Smith W OldroydIndiaAnna Fali NEW
Munro Q OstroskyItalyOnyama Limba QUALIFIED
Ricardo E NestleIndiaXuxue Feng QUALIFIED
Johnson I AmigonGermanyStephen Shaw NEGOTIATION
Morrow B FigeroaJapanElwin Sharvill NEW
Frozen Columns
Name
Alejandro U Ruta
Francesco X Stenseth
Jeanfrancois I Gaucho
Jones F Garufi
Francesco O Bowley
Jones H Rim
Murillo H Shinko
Costa W Garufi
Mayumi H Shinko
Arvin X Perin
Julie L Ruta
Mayumi T Stenseth
Jefferson Q Venere
Ricardo A Waycott
Maisha F Morasca
Francesco S Albares
Jefferson K Briddick
Aika M Waycott
Izzy X Ruta
Ricardo O Sergi
Ashley A Paprocki
Smith U Paprocki
Silvio Q Nestle
Ivar I Royster
Jennifer A Bowley
Juan S Kolmetz
Johnson I Maclead
Julie G Sergi
Maria J Paprocki
Ashley D Glick
Jeanfrancois Z Dilliard
Aruna Z Slusarski
Clifford F Butt
Adams P Rim
Ashley E Iturbide
Stacey L Doe
Francesco T Nicka
David P Kolmetz
Mayumi Y Bolognia
Clifford A Morasca
Salvatore S Garufi
Morrow N Rim
Stacey L Venere
Jefferson F Perin
Sinclair C Foller
Rodrigues U Wieser
Chavez L Briddick
Adams J Garufi
Misaki B Royster
Octavia R Kusko
IdCountryDate
1000India2024-05-07
1001Italy2024-04-28
1002United Kingdom2024-05-11
1003Russia2024-04-13
1004Italy2024-04-29
1005Italy2024-04-14
1006Canada2024-04-27
1007France2024-04-27
1008France2024-04-14
1009Canada2024-05-11
1010Australia2024-04-20
1011Japan2024-04-27
1012Argentina2024-04-30
1013Russia2024-04-13
1014India2024-04-30
1015Brazil2024-05-09
1016Spain2024-04-24
1017Australia2024-04-25
1018United Kingdom2024-04-27
1019India2024-04-23
1020Germany2024-04-29
1021Brazil2024-04-30
1022Argentina2024-04-26
1023United Kingdom2024-04-13
1024Spain2024-04-15
1025France2024-04-13
1026United Kingdom2024-04-16
1027Japan2024-05-02
1028Japan2024-05-05
1029Russia2024-04-27
1030Italy2024-04-13
1031Russia2024-04-25
1032Argentina2024-05-10
1033India2024-04-15
1034Canada2024-04-21
1035Japan2024-05-06
1036India2024-05-09
1037Australia2024-04-14
1038Canada2024-05-10
1039India2024-04-20
1040Argentina2024-05-08
1041Australia2024-05-11
1042Argentina2024-04-25
1043Australia2024-05-08
1044Germany2024-04-18
1045Brazil2024-04-18
1046Brazil2024-04-13
1047France2024-04-13
1048Japan2024-05-12
1049Spain2024-04-26

On-Demand Data

NameIdCountryDate
Stacey B Doe1000France2024-05-09
Leja Q Glick1001Argentina2024-05-04
Wickens M Vocelka1002Brazil2024-05-08
Murillo F Figeroa1003Spain2024-04-24
Francesco V Dilliard1004Germany2024-04-29
Sinclair J Saylors1005Russia2024-04-23
Jefferson G Inouye1006Canada2024-04-25
Leja F Perin1007India2024-05-09
Chavez H Nicka1008France2024-04-18
Smith K Dilliard1009Brazil2024-04-28
Antonio K Bowley1010Japan2024-04-21
James D Waycott1011Argentina2024-04-15
Nicolas X Nicka1012India2024-04-14
Izzy U Caudy1013Australia2024-04-18
Sinclair Y Perin1014Brazil2024-04-24
Wickens A Chui1015Russia2024-05-09
Adams D Ruta1016Japan2024-04-19
Jefferson Q Waycott1017Italy2024-05-01
Octavia R Poquette1018Russia2024-05-01
Juan G Nicka1019Japan2024-04-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maria M PoquetteFranceElwin Sharvill RENEWAL
Arvin X ChuiBrazilXuxue Feng QUALIFIED
Jeanfrancois H InouyeBrazilAmy Elsner NEW
Aruna V MaletItalyAsiya Javayant UNQUALIFIED
Misaki V WaycottJapanStephen Shaw RENEWAL
Deepesh Y NestleItalyAnna Fali UNQUALIFIED
Mujtaba R PaprockiGermanyAnna Fali RENEWAL
Adams F IturbideSpainElwin Sharvill UNQUALIFIED
Aika Q RutaSpainAmy Elsner NEGOTIATION
Johnson D DarakjyArgentinaIvan Magalhaes NEW
Johnson S SaylorsArgentinaAnna Fali QUALIFIED
Kadeem K PoquetteFranceIoni Bowcher QUALIFIED
Sinclair W KuskoIndiaOnyama Limba UNQUALIFIED
Smith J StensethIndiaBernardo Dominic UNQUALIFIED
Jones N WieserCanadaAmy Elsner QUALIFIED
Maisha E PaprockiAustraliaAnna Fali PROPOSAL
David D RulapaughGermanyIoni Bowcher PROPOSAL
Ivar T BologniaSpainAsiya Javayant UNQUALIFIED
Faith N MacleadItalyElwin Sharvill RENEWAL
Jeanfrancois I CampainItalyAmy Elsner NEW
Adams W AlbaresAustraliaOnyama Limba PROPOSAL
Claire W ShinkoCanadaXuxue Feng UNQUALIFIED
Silvio M CaudyItalyIoni Bowcher UNQUALIFIED
Chavez T FlosiCanadaStephen Shaw PROPOSAL
Maisha Z FerenczItalyAsiya Javayant NEW
Leon P GauchoFranceAsiya Javayant UNQUALIFIED
Aika Y DoeFranceAsiya Javayant UNQUALIFIED
Munro I GillianSpainStephen Shaw NEW
Juan Y CampainSpainElwin Sharvill RENEWAL
Aruna F StensethSpainAmy Elsner NEW
James D PerinJapanIvan Magalhaes QUALIFIED
Silvio Y MarrierAustraliaBernardo Dominic NEGOTIATION
Julie M FollerUnited KingdomElwin Sharvill NEGOTIATION
Deepesh I FlosiRussiaIvan Magalhaes NEGOTIATION
Jones A MacleadArgentinaOnyama Limba NEGOTIATION
Rodrigues A KolmetzItalyAnna Fali NEGOTIATION
Sinclair M SlusarskiGermanyXuxue Feng QUALIFIED
Francesco D DoeCanadaAsiya Javayant QUALIFIED
Munro W CaldareraIndiaIoni Bowcher QUALIFIED
Munro H SlusarskiItalyBernardo Dominic 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>