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
Juan W SaylorsFranceIvan Magalhaes QUALIFIED
James I TollnerJapanBernardo Dominic PROPOSAL
Francesco X SlusarskiRussiaElwin Sharvill QUALIFIED
Antonio Z PoquetteBrazilIoni Bowcher QUALIFIED
Kaitlin Z CampainCanadaAsiya Javayant QUALIFIED
Darci Z ChuiAustraliaAnna Fali RENEWAL
Greenwood E FollerRussiaXuxue Feng NEW
James E CampainArgentinaIoni Bowcher UNQUALIFIED
Chavez H MaletCanadaAnna Fali QUALIFIED
Darci B SchemmerUnited KingdomElwin Sharvill UNQUALIFIED
Faith C OstroskyItalyIoni Bowcher RENEWAL
Nicolas R DoeArgentinaAmy Elsner UNQUALIFIED
Clifford W BowleySpainAnna Fali PROPOSAL
Antonio D StensethCanadaXuxue Feng QUALIFIED
Ivar T ChuiGermanyOnyama Limba NEW
Morrow Z GauchoArgentinaAnna Fali QUALIFIED
Wickens Z GillianJapanXuxue Feng UNQUALIFIED
Adams Y ChuiIndiaAsiya Javayant RENEWAL
Maisha P PaprockiRussiaXuxue Feng NEW
Costa C SlusarskiCanadaAsiya Javayant PROPOSAL
Izzy B KolmetzGermanyBernardo Dominic RENEWAL
Faith Q WieserCanadaBernardo Dominic NEW
Ivar S RulapaughSpainOnyama Limba QUALIFIED
Tony E GarufiCanadaIvan Magalhaes NEW
Salvatore M OstroskyItalyAsiya Javayant NEW
Jones W ShinkoJapanAsiya Javayant PROPOSAL
Kadeem A KolmetzIndiaAmy Elsner NEW
Arvin U KolmetzSpainBernardo Dominic NEW
Ivar E TollnerIndiaXuxue Feng UNQUALIFIED
Alejandro M InouyeAustraliaAnna Fali PROPOSAL
Murillo N SchemmerItalyIvan Magalhaes UNQUALIFIED
Costa Y WhobreyFranceIvan Magalhaes NEW
Misaki H MarrierBrazilBernardo Dominic RENEWAL
Morrow Z MarrierRussiaAsiya Javayant QUALIFIED
Johnson C BriddickJapanIoni Bowcher NEW
Aditya M SergiUnited KingdomOnyama Limba NEGOTIATION
Octavia R FlosiGermanyXuxue Feng PROPOSAL
Jefferson U GillianBrazilOnyama Limba NEGOTIATION
Silvio K SlusarskiCanadaStephen Shaw UNQUALIFIED
Ricardo G BowleyFranceAsiya Javayant PROPOSAL
Isabel L WhobreyGermanyXuxue Feng NEW
Cody Y FlosiArgentinaElwin Sharvill RENEWAL
Deepesh O SlusarskiAustraliaAmy Elsner NEGOTIATION
Arvin Z MorascaCanadaXuxue Feng UNQUALIFIED
Tony E BologniaFranceXuxue Feng PROPOSAL
Claire S GlickAustraliaAnna Fali UNQUALIFIED
Antonio P TollnerArgentinaAnna Fali NEW
James Q BriddickBrazilIoni Bowcher PROPOSAL
Chavez A BologniaFranceElwin Sharvill NEW
Jefferson A PaprockiJapanStephen Shaw NEW
Horizontal
NameCountryRepresentativeStatus
Leon G OstroskyIndiaOnyama Limba NEW
Jefferson A MacleadBrazilElwin Sharvill RENEWAL
Alejandro P KolmetzSpainIoni Bowcher QUALIFIED
Tony Y RimArgentinaElwin Sharvill UNQUALIFIED
Sinclair X ShinkoAustraliaAnna Fali RENEWAL
James U MaletIndiaIoni Bowcher PROPOSAL
Mayumi Y WaycottGermanyAnna Fali QUALIFIED
Rodrigues D MorascaJapanAsiya Javayant QUALIFIED
Aruna X OldroydJapanAnna Fali PROPOSAL
Wickens I GauchoBrazilStephen Shaw NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Faith N SchemmerItaly2024-04-23King, Christopher A Esq PROPOSAL29Amy Elsner
1001Mayumi B OstroskyItaly2024-04-03Feiner Bros RENEWAL9Anna Fali
1002Murillo M SaylorsUnited Kingdom2024-04-18Feiner Bros UNQUALIFIED36Stephen Shaw
1003Faith B MarrierAustralia2024-04-12Dorl, James J Esq NEW13Stephen Shaw
1004Octavia C TollnerIndia2024-04-18Chapman, Ross E Esq RENEWAL60Anna Fali
1005Sinclair A BologniaJapan2024-04-02Feiner Bros PROPOSAL71Amy Elsner
1006David E TollnerAustralia2024-04-16Commercial Press PROPOSAL90Bernardo Dominic
1007Rodrigues Q MaletJapan2024-03-28Feltz Printing Service NEW41Anna Fali
1008Murillo J GauchoJapan2024-04-02Feiner Bros RENEWAL68Elwin Sharvill
1009Silvio Z CaldareraCanada2024-04-07Truhlar And Truhlar Attys NEGOTIATION29Ivan Magalhaes
1010Aditya R WieserItaly2024-04-12Morlong Associates UNQUALIFIED90Stephen Shaw
1011Smith I GarufiBrazil2024-04-11Printing Dimensions NEW49Onyama Limba
1012Misaki U OstroskyArgentina2024-04-14Commercial Press PROPOSAL7Elwin Sharvill
1013Jones G PerinUnited Kingdom2024-04-23King, Christopher A Esq NEW57Onyama Limba
1014Darci U IturbideItaly2024-04-24Printing Dimensions RENEWAL68Bernardo Dominic
1015Ricardo I CaldareraFrance2024-04-19Chapman, Ross E Esq NEW27Onyama Limba
1016Jefferson Z MaletItaly2024-04-08Rousseaux, Michael Esq QUALIFIED28Xuxue Feng
1017Adams L MacleadArgentina2024-04-05Benton, John B Jr RENEWAL47Stephen Shaw
1018Leon I TollnerCanada2024-04-20Truhlar And Truhlar Attys NEGOTIATION23Stephen Shaw
1019Kadeem N NestleSpain2024-04-05Chemel, James L Cpa NEW41Elwin Sharvill
1020Francesco W IturbideItaly2024-04-11Chemel, James L Cpa NEGOTIATION83Elwin Sharvill
1021Antonio A InouyeGermany2024-04-06Feiner Bros NEGOTIATION29Onyama Limba
1022Greenwood F GauchoRussia2024-04-05Feiner Bros RENEWAL43Elwin Sharvill
1023Jefferson R OstroskyFrance2024-04-22Chapman, Ross E Esq NEW21Anna Fali
1024Misaki P FollerGermany2024-04-24Benton, John B Jr QUALIFIED92Ivan Magalhaes
1025Mujtaba H DarakjySpain2024-04-21Commercial Press NEGOTIATION70Stephen Shaw
1026Mujtaba H StockhamArgentina2024-04-20Chapman, Ross E Esq QUALIFIED98Onyama Limba
1027Isabel F GauchoIndia2024-03-28Commercial Press NEGOTIATION31Amy Elsner
1028Maisha B AlbaresCanada2024-04-16King, Christopher A Esq QUALIFIED94Anna Fali
1029Aika W ShinkoItaly2024-04-16Rangoni Of Florence NEGOTIATION63Bernardo Dominic
1030Leja V OldroydAustralia2024-04-18Morlong Associates RENEWAL31Anna Fali
1031Faith Y DoeCanada2024-04-25Buckley Miller Wright PROPOSAL43Ivan Magalhaes
1032Francesco A TollnerBrazil2024-04-07Rangoni Of Florence UNQUALIFIED87Bernardo Dominic
1033Antonio N RimJapan2024-04-08Feiner Bros UNQUALIFIED33Amy Elsner
1034Faith Y RoysterRussia2024-04-03King, Christopher A Esq NEGOTIATION12Stephen Shaw
1035Mujtaba P RutaSpain2024-04-03Morlong Associates PROPOSAL86Bernardo Dominic
1036Antonio T VocelkaBrazil2024-04-02Benton, John B Jr RENEWAL38Stephen Shaw
1037Nicolas D RoysterFrance2024-04-22Rangoni Of Florence NEW44Ioni Bowcher
1038Kaitlin L CaudyGermany2024-04-17Morlong Associates PROPOSAL62Elwin Sharvill
1039Jennifer R CaldareraGermany2024-04-12Morlong Associates NEW44Bernardo Dominic
1040Emily E RimBrazil2024-04-21Truhlar And Truhlar Attys QUALIFIED79Ioni Bowcher
1041Sinclair N KolmetzGermany2024-04-10Truhlar And Truhlar Attys NEW51Stephen Shaw
1042David L CaudyItaly2024-04-22Truhlar And Truhlar Attys PROPOSAL10Amy Elsner
1043Smith T ChuiBrazil2024-04-05Feiner Bros NEGOTIATION46Anna Fali
1044Jefferson C GarufiArgentina2024-04-16Chapman, Ross E Esq NEGOTIATION36Onyama Limba
1045Aika Z IturbideIndia2024-04-13Rousseaux, Michael Esq UNQUALIFIED20Ioni Bowcher
1046Costa Z StensethArgentina2024-04-24Truhlar And Truhlar Attys UNQUALIFIED78Stephen Shaw
1047Leon Q GlickBrazil2024-04-19Commercial Press NEW55Ivan Magalhaes
1048Emily F GillianAustralia2024-04-14Dorl, James J Esq QUALIFIED92Elwin Sharvill
1049Ashley P StensethItaly2024-03-27Chanay, Jeffrey A Esq UNQUALIFIED78Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Deepesh V NestleFranceIvan Magalhaes PROPOSAL
David S BologniaAustraliaElwin Sharvill RENEWAL
Smith K KolmetzArgentinaAsiya Javayant UNQUALIFIED
Munro Y MaletUnited KingdomIoni Bowcher QUALIFIED
Stacey H WhobreyItalyAnna Fali UNQUALIFIED
Leon Y VenereItalyIvan Magalhaes NEGOTIATION
Nicolas E ChuiBrazilIoni Bowcher QUALIFIED
Aruna P SchemmerSpainBernardo Dominic PROPOSAL
Aditya B KuskoRussiaAsiya Javayant UNQUALIFIED
Jennifer B TollnerRussiaXuxue Feng NEW
Stacey Q FollerBrazilBernardo Dominic PROPOSAL
James C GauchoBrazilAmy Elsner RENEWAL
Ricardo N KolmetzGermanyXuxue Feng NEGOTIATION
Deepesh E DilliardJapanAnna Fali NEGOTIATION
Jones C DoeGermanyIoni Bowcher RENEWAL
Mayumi J BowleyCanadaAsiya Javayant NEGOTIATION
Rodrigues E FigeroaFranceIvan Magalhaes QUALIFIED
Maisha U CampainArgentinaIoni Bowcher UNQUALIFIED
Greenwood I InouyeGermanyIoni Bowcher QUALIFIED
Mujtaba X RimJapanAsiya Javayant RENEWAL
Emily W PoquetteRussiaIoni Bowcher UNQUALIFIED
Stacey H StensethJapanIvan Magalhaes NEGOTIATION
Octavia G ChuiAustraliaAmy Elsner PROPOSAL
Alejandro F GauchoAustraliaIvan Magalhaes NEGOTIATION
Mayumi I AmigonFranceXuxue Feng PROPOSAL
Mujtaba T KuskoFranceXuxue Feng NEGOTIATION
Smith M OldroydFranceElwin Sharvill QUALIFIED
Maisha W MarrierRussiaBernardo Dominic NEGOTIATION
Misaki N PerinIndiaOnyama Limba NEW
Aditya M SaylorsRussiaIvan Magalhaes PROPOSAL
Ricardo D InouyeFranceIoni Bowcher NEW
Cody H SchemmerJapanAnna Fali NEGOTIATION
Costa X SergiJapanXuxue Feng NEGOTIATION
Silvio S FerenczArgentinaAmy Elsner PROPOSAL
Johnson A AlbaresSpainOnyama Limba NEGOTIATION
Aditya X StockhamJapanElwin Sharvill UNQUALIFIED
Greenwood U PerinUnited KingdomOnyama Limba QUALIFIED
Claire O GillianGermanyStephen Shaw RENEWAL
Antonio L ChuiFranceAnna Fali RENEWAL
James Z SchemmerCanadaAmy Elsner UNQUALIFIED
Costa O KuskoItalyXuxue Feng QUALIFIED
Mayumi Z MacleadBrazilAmy Elsner NEGOTIATION
James S RulapaughIndiaAsiya Javayant PROPOSAL
Stacey T FollerCanadaIoni Bowcher PROPOSAL
Leja Y GlickUnited KingdomAsiya Javayant UNQUALIFIED
Greenwood K ButtFranceStephen Shaw UNQUALIFIED
Ashley S RoysterIndiaBernardo Dominic NEW
Sinclair K GarufiBrazilElwin Sharvill QUALIFIED
Stacey F GlickCanadaBernardo Dominic QUALIFIED
Faith H MorascaArgentinaAmy Elsner PROPOSAL
Frozen Columns
Name
Aditya C Tollner
Emily V Morasca
Tony N Paprocki
Aditya F Whobrey
Mayumi D Nicka
Chavez S Malet
Aditya N Vocelka
Jones D Ruta
Jefferson D Caldarera
Aditya Z Albares
James V Marrier
Isabel U Gaucho
Rodrigues S Shinko
Jefferson B Inouye
Kadeem O Ostrosky
Silvio O Whobrey
Stacey O Kolmetz
Rodrigues J Shinko
Tony X Butt
Aruna Z Paprocki
Aditya H Darakjy
Cody M Albares
Morrow V Gaucho
Darci L Albares
Francesco W Schemmer
Nicolas I Bowley
Kaitlin C Vocelka
Francesco F Sergi
Alejandro K Darakjy
Stacey W Bowley
Nicolas U Inouye
Faith J Nicka
James G Kusko
Cody N Ferencz
Nicolas M Rulapaugh
Sinclair J Vocelka
Jones W Marrier
Julie K Garufi
Tony I Nestle
Morrow V Malet
Chavez V Inouye
Darci Y Ostrosky
Smith T Darakjy
Jones L Kolmetz
Claire T Malet
Wickens Q Royster
Emily J Figeroa
Silvio M Vocelka
Silvio A Poquette
Morrow V Glick
IdCountryDate
1000Japan2024-04-03
1001France2024-04-23
1002Russia2024-04-03
1003Brazil2024-03-28
1004Argentina2024-04-10
1005Argentina2024-04-02
1006Argentina2024-04-02
1007Canada2024-04-14
1008Russia2024-04-09
1009Germany2024-04-05
1010Argentina2024-04-15
1011Brazil2024-04-16
1012United Kingdom2024-04-10
1013Russia2024-04-11
1014Japan2024-04-13
1015Russia2024-04-07
1016Canada2024-04-19
1017United Kingdom2024-04-04
1018Australia2024-04-03
1019Russia2024-04-14
1020Argentina2024-04-21
1021Brazil2024-04-20
1022Argentina2024-04-15
1023Argentina2024-04-19
1024Germany2024-04-15
1025Spain2024-04-08
1026United Kingdom2024-03-29
1027Brazil2024-04-18
1028Germany2024-04-22
1029Germany2024-04-02
1030United Kingdom2024-03-28
1031Italy2024-04-15
1032Australia2024-03-27
1033France2024-03-29
1034Spain2024-04-03
1035United Kingdom2024-04-12
1036Australia2024-04-19
1037United Kingdom2024-04-02
1038Argentina2024-03-27
1039Brazil2024-04-09
1040Brazil2024-04-16
1041Argentina2024-04-04
1042Germany2024-03-29
1043Italy2024-04-24
1044Argentina2024-04-18
1045Germany2024-04-03
1046France2024-04-16
1047Australia2024-04-01
1048France2024-03-30
1049Russia2024-03-27

On-Demand Data

NameIdCountryDate
Greenwood X Amigon1000Canada2024-04-04
Aruna B Oldroyd1001Spain2024-04-12
Deepesh Y Dilliard1002Germany2024-04-25
Aditya W Glick1003Japan2024-03-28
Stacey J Perin1004Spain2024-04-11
Alejandro K Caldarera1005India2024-04-07
Ricardo A Foller1006United Kingdom2024-04-08
Jefferson S Royster1007India2024-04-05
Morrow O Vocelka1008Italy2024-04-22
Leja D Wieser1009Brazil2024-04-16
Chavez E Schemmer1010Germany2024-04-09
David P Wieser1011Japan2024-04-12
Morrow D Amigon1012Italy2024-04-23
Silvio I Shinko1013Russia2024-04-09
Antonio M Royster1014Australia2024-04-11
Greenwood Z Chui1015Russia2024-04-05
Jeanfrancois O Wieser1016Russia2024-03-28
Tony C Caudy1017Canada2024-03-27
Mayumi N Flosi1018Russia2024-04-09
Maisha L Campain1019Germany2024-04-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Francesco P RutaRussiaStephen Shaw PROPOSAL
Sinclair B KolmetzItalyAsiya Javayant PROPOSAL
Leon W CampainJapanStephen Shaw NEGOTIATION
Stacey U FigeroaSpainAnna Fali UNQUALIFIED
Munro W MaletSpainAnna Fali NEW
Silvio A GauchoUnited KingdomElwin Sharvill QUALIFIED
Emily T MaletArgentinaStephen Shaw PROPOSAL
Izzy M NestleAustraliaStephen Shaw PROPOSAL
Stacey R DarakjyFranceIoni Bowcher NEGOTIATION
Sinclair X VocelkaIndiaAmy Elsner NEGOTIATION
Maisha C RimBrazilXuxue Feng QUALIFIED
Chavez W AlbaresFranceAnna Fali UNQUALIFIED
Leon O StockhamRussiaIvan Magalhaes PROPOSAL
Alejandro M FlosiItalyAnna Fali RENEWAL
Darci F FigeroaAustraliaIvan Magalhaes QUALIFIED
Munro S StensethCanadaIoni Bowcher NEGOTIATION
Kaitlin E KolmetzGermanyStephen Shaw UNQUALIFIED
Isabel T BowleyBrazilBernardo Dominic UNQUALIFIED
Izzy Z NestleSpainIoni Bowcher UNQUALIFIED
Mayumi U MaletJapanStephen Shaw RENEWAL
Juan E FollerCanadaIoni Bowcher NEW
Juan G ButtGermanyAmy Elsner NEGOTIATION
Kaitlin O WhobreyCanadaAsiya Javayant RENEWAL
James F KolmetzIndiaOnyama Limba QUALIFIED
Aika P CaudyIndiaElwin Sharvill NEW
Tony I WaycottArgentinaAnna Fali RENEWAL
Darci S KuskoSpainXuxue Feng NEGOTIATION
Julie J KolmetzAustraliaAmy Elsner RENEWAL
Maisha D GauchoCanadaOnyama Limba PROPOSAL
Jones V IturbideCanadaBernardo Dominic NEW
Adams V MaletFranceAsiya Javayant QUALIFIED
Ricardo W CampainGermanyAnna Fali PROPOSAL
James N MaletSpainAsiya Javayant NEW
Silvio W IturbideGermanyBernardo Dominic QUALIFIED
Chavez L WieserGermanyStephen Shaw PROPOSAL
Maisha Z OstroskyBrazilXuxue Feng PROPOSAL
Murillo H VenereBrazilAnna Fali UNQUALIFIED
Maria U MorascaFranceAsiya Javayant QUALIFIED
Wickens L OstroskyUnited KingdomBernardo Dominic UNQUALIFIED
Salvatore D RoysterItalyAmy Elsner NEGOTIATION

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