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
Costa G StensethCanadaAmy Elsner QUALIFIED
Johnson A VenereBrazilOnyama Limba PROPOSAL
Izzy B GillianIndiaStephen Shaw NEGOTIATION
Izzy Q BologniaJapanOnyama Limba UNQUALIFIED
Cody E MaletArgentinaBernardo Dominic QUALIFIED
Isabel M VocelkaArgentinaAmy Elsner UNQUALIFIED
Nicolas V SergiGermanyBernardo Dominic QUALIFIED
Rodrigues U FlosiUnited KingdomAnna Fali QUALIFIED
Emily E OstroskySpainAsiya Javayant RENEWAL
Jones I FerenczBrazilAsiya Javayant RENEWAL
Nicolas Y MaletGermanyStephen Shaw UNQUALIFIED
Silvio U PerinRussiaAmy Elsner RENEWAL
Julie Q BologniaGermanyBernardo Dominic UNQUALIFIED
Aika D StensethArgentinaBernardo Dominic PROPOSAL
Cody T WhobreyFranceElwin Sharvill RENEWAL
Jefferson B MorascaGermanyIoni Bowcher QUALIFIED
Salvatore U TollnerIndiaXuxue Feng PROPOSAL
Mujtaba P NestleBrazilElwin Sharvill NEGOTIATION
Kaitlin J RimSpainStephen Shaw NEGOTIATION
Aditya J FlosiSpainBernardo Dominic QUALIFIED
Francesco C BriddickFranceAmy Elsner NEW
Jennifer F CampainSpainIoni Bowcher UNQUALIFIED
Arvin H CaudySpainOnyama Limba QUALIFIED
Stacey C DoeGermanyStephen Shaw QUALIFIED
Clifford U RutaCanadaAmy Elsner RENEWAL
Aika M SergiJapanAmy Elsner PROPOSAL
Faith K RimBrazilAmy Elsner RENEWAL
Ivar P FlosiIndiaXuxue Feng NEW
Darci B DilliardCanadaXuxue Feng PROPOSAL
Julie Q NestleCanadaAsiya Javayant NEW
Izzy R SergiJapanBernardo Dominic QUALIFIED
Antonio D ChuiAustraliaAsiya Javayant NEW
Leon J TollnerSpainIvan Magalhaes NEGOTIATION
Deepesh Z WhobreyFranceIoni Bowcher RENEWAL
Maria U GlickArgentinaBernardo Dominic UNQUALIFIED
Jeanfrancois X RulapaughGermanyAsiya Javayant RENEWAL
Jones R IturbideUnited KingdomIoni Bowcher QUALIFIED
Jennifer X DilliardItalyIvan Magalhaes NEW
Maisha K VocelkaBrazilAnna Fali RENEWAL
Izzy V AlbaresSpainOnyama Limba PROPOSAL
Jennifer O MorascaItalyAnna Fali NEW
Kadeem F StensethCanadaAmy Elsner RENEWAL
Jennifer Q RimJapanXuxue Feng PROPOSAL
Isabel H DoeAustraliaAsiya Javayant RENEWAL
Jefferson S BowleyUnited KingdomIoni Bowcher NEW
Nicolas M BriddickCanadaOnyama Limba NEGOTIATION
Tony Y NickaArgentinaElwin Sharvill UNQUALIFIED
Jennifer E ChuiFranceXuxue Feng PROPOSAL
Jefferson W StockhamBrazilStephen Shaw NEGOTIATION
Clifford S WhobreySpainIoni Bowcher UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Julie X BologniaArgentinaBernardo Dominic NEW
David K RimSpainBernardo Dominic PROPOSAL
Sinclair O ChuiBrazilXuxue Feng NEGOTIATION
Ashley N OstroskyIndiaStephen Shaw PROPOSAL
Morrow G DoeJapanIoni Bowcher NEGOTIATION
Leja X RulapaughArgentinaAsiya Javayant QUALIFIED
Misaki J SchemmerFranceElwin Sharvill PROPOSAL
Tony I WieserBrazilAsiya Javayant QUALIFIED
Faith A DilliardArgentinaXuxue Feng RENEWAL
Murillo E SchemmerItalyOnyama Limba QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Mayumi H PoquetteSpain2024-04-28Truhlar And Truhlar Attys PROPOSAL29Amy Elsner
1001Wickens N CaldareraCanada2024-04-12Truhlar And Truhlar Attys NEW24Elwin Sharvill
1002Claire C VenereSpain2024-04-04Printing Dimensions PROPOSAL84Ivan Magalhaes
1003Morrow J GlickSpain2024-04-04Rangoni Of Florence PROPOSAL11Stephen Shaw
1004Arvin G VocelkaGermany2024-04-06Chapman, Ross E Esq RENEWAL21Onyama Limba
1005Jefferson U BriddickGermany2024-04-27Rangoni Of Florence RENEWAL50Xuxue Feng
1006James I FigeroaCanada2024-04-27Morlong Associates NEGOTIATION51Amy Elsner
1007Clifford A ButtIndia2024-04-19Buckley Miller Wright UNQUALIFIED83Bernardo Dominic
1008Darci F StockhamArgentina2024-04-16Feltz Printing Service UNQUALIFIED72Elwin Sharvill
1009Aruna F TollnerRussia2024-04-23Chapman, Ross E Esq PROPOSAL56Bernardo Dominic
1010Octavia J NestleIndia2024-04-27Rangoni Of Florence NEGOTIATION9Xuxue Feng
1011Aruna Z MacleadItaly2024-04-07Rangoni Of Florence NEW47Xuxue Feng
1012Leja T CaudySpain2024-04-12King, Christopher A Esq PROPOSAL41Asiya Javayant
1013Aika N WhobreyItaly2024-04-10Chemel, James L Cpa NEGOTIATION48Ioni Bowcher
1014Salvatore U WhobreyIndia2024-04-06Chapman, Ross E Esq QUALIFIED68Ioni Bowcher
1015Arvin N RutaUnited Kingdom2024-04-05Rousseaux, Michael Esq NEGOTIATION11Xuxue Feng
1016Stacey L AlbaresUnited Kingdom2024-04-12Rangoni Of Florence QUALIFIED11Bernardo Dominic
1017Deepesh U CaudyBrazil2024-04-16Chapman, Ross E Esq UNQUALIFIED30Bernardo Dominic
1018Juan T OstroskyGermany2024-04-10Chemel, James L Cpa NEGOTIATION84Bernardo Dominic
1019Francesco O KolmetzBrazil2024-04-20King, Christopher A Esq RENEWAL36Anna Fali
1020Morrow S DilliardUnited Kingdom2024-04-21Commercial Press PROPOSAL52Onyama Limba
1021Chavez J RulapaughAustralia2024-04-04Feltz Printing Service NEGOTIATION27Amy Elsner
1022Clifford L CampainAustralia2024-04-25Benton, John B Jr PROPOSAL76Amy Elsner
1023Murillo J RulapaughCanada2024-04-09King, Christopher A Esq UNQUALIFIED26Xuxue Feng
1024Clifford Q DarakjyArgentina2024-04-02Rousseaux, Michael Esq RENEWAL86Stephen Shaw
1025Mayumi Z OstroskyCanada2024-04-16King, Christopher A Esq UNQUALIFIED41Amy Elsner
1026Mayumi E BriddickSpain2024-04-23Buckley Miller Wright RENEWAL25Ivan Magalhaes
1027Jennifer Z NickaIndia2024-04-20Feiner Bros PROPOSAL75Anna Fali
1028Rodrigues I RimBrazil2024-04-18Rousseaux, Michael Esq UNQUALIFIED60Ivan Magalhaes
1029Clifford I GlickItaly2024-04-28Printing Dimensions PROPOSAL99Stephen Shaw
1030Adams J CaldareraSpain2024-04-19Chanay, Jeffrey A Esq NEGOTIATION46Xuxue Feng
1031Murillo K RulapaughGermany2024-04-18King, Christopher A Esq QUALIFIED67Amy Elsner
1032Jefferson R WieserArgentina2024-04-04Rangoni Of Florence QUALIFIED74Ivan Magalhaes
1033Maisha K BowleyJapan2024-04-24Feltz Printing Service NEGOTIATION56Ioni Bowcher
1034Chavez C IturbideSpain2024-04-16Rangoni Of Florence RENEWAL67Ivan Magalhaes
1035Aika H VenereUnited Kingdom2024-04-07Dorl, James J Esq NEW5Onyama Limba
1036Greenwood Z TollnerUnited Kingdom2024-04-13Feltz Printing Service UNQUALIFIED39Asiya Javayant
1037Clifford X FerenczCanada2024-04-23Feltz Printing Service RENEWAL50Ioni Bowcher
1038Aika E FerenczJapan2024-04-26Printing Dimensions UNQUALIFIED95Xuxue Feng
1039Clifford V BriddickItaly2024-04-16Feltz Printing Service QUALIFIED40Stephen Shaw
1040Chavez U RimCanada2024-04-07Chanay, Jeffrey A Esq RENEWAL34Anna Fali
1041Ashley J VocelkaAustralia2024-04-11Morlong Associates NEGOTIATION15Anna Fali
1042Mujtaba V OstroskyItaly2024-04-13Chemel, James L Cpa RENEWAL57Ioni Bowcher
1043Jefferson D StensethIndia2024-04-23Truhlar And Truhlar Attys UNQUALIFIED37Asiya Javayant
1044Smith S IturbideGermany2024-04-12Chanay, Jeffrey A Esq NEW84Amy Elsner
1045Adams M RimIndia2024-04-12Commercial Press UNQUALIFIED80Ivan Magalhaes
1046Tony Z SergiIndia2024-04-23Benton, John B Jr RENEWAL96Bernardo Dominic
1047Aruna E BowleyGermany2024-04-24Dorl, James J Esq UNQUALIFIED38Bernardo Dominic
1048Cody D VenereFrance2024-04-04Commercial Press NEGOTIATION51Asiya Javayant
1049Aruna P MaletGermany2024-04-08King, Christopher A Esq RENEWAL58Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Ashley U RoysterGermanyAnna Fali PROPOSAL
Chavez W CampainCanadaElwin Sharvill QUALIFIED
Silvio J GillianJapanOnyama Limba NEGOTIATION
Claire P KolmetzSpainBernardo Dominic NEW
Antonio H MaletArgentinaIoni Bowcher NEGOTIATION
Chavez T MaletUnited KingdomElwin Sharvill QUALIFIED
Greenwood G MacleadSpainAsiya Javayant UNQUALIFIED
Darci G MaletFranceOnyama Limba QUALIFIED
James L VenereArgentinaElwin Sharvill NEW
Darci D GlickIndiaBernardo Dominic NEW
Tony H FerenczIndiaElwin Sharvill QUALIFIED
Sinclair O MorascaUnited KingdomXuxue Feng NEW
Stacey Q CaudyIndiaBernardo Dominic QUALIFIED
Claire L IturbideIndiaAnna Fali QUALIFIED
Maria C NestleRussiaIoni Bowcher RENEWAL
Arvin G RimBrazilIoni Bowcher RENEWAL
Jeanfrancois E SergiBrazilStephen Shaw NEW
Aika F ButtGermanyBernardo Dominic NEGOTIATION
Adams J BologniaCanadaOnyama Limba QUALIFIED
Ivar A FerenczSpainXuxue Feng RENEWAL
Ashley S VocelkaCanadaAsiya Javayant QUALIFIED
Kadeem J SlusarskiUnited KingdomElwin Sharvill PROPOSAL
Darci F BologniaBrazilElwin Sharvill QUALIFIED
Leon H WieserSpainIvan Magalhaes PROPOSAL
Mujtaba K OstroskyArgentinaBernardo Dominic UNQUALIFIED
Ricardo Z InouyeArgentinaStephen Shaw UNQUALIFIED
Octavia O KuskoIndiaBernardo Dominic UNQUALIFIED
Jones W StensethCanadaAnna Fali NEGOTIATION
Kaitlin V VenereGermanyIvan Magalhaes NEGOTIATION
Claire S OstroskyUnited KingdomAsiya Javayant NEGOTIATION
Francesco Q GillianUnited KingdomIvan Magalhaes NEW
Izzy Q PaprockiAustraliaBernardo Dominic NEGOTIATION
Faith R IturbideFranceElwin Sharvill NEGOTIATION
Aditya Z FollerAustraliaOnyama Limba RENEWAL
Chavez C CaudyRussiaAmy Elsner RENEWAL
Wickens G NestleSpainIvan Magalhaes NEW
Darci H GlickBrazilAmy Elsner QUALIFIED
Rodrigues Y SlusarskiCanadaAmy Elsner RENEWAL
Arvin R RutaRussiaAmy Elsner NEW
Deepesh E StensethFranceIvan Magalhaes NEGOTIATION
Mujtaba J ChuiSpainAnna Fali PROPOSAL
Arvin N RutaCanadaXuxue Feng UNQUALIFIED
Adams P FollerArgentinaIoni Bowcher QUALIFIED
Nicolas H ChuiIndiaStephen Shaw UNQUALIFIED
Aika O NestleFranceBernardo Dominic PROPOSAL
Mayumi Y BologniaCanadaAmy Elsner RENEWAL
Claire E NickaBrazilAsiya Javayant UNQUALIFIED
Cody K RulapaughCanadaAmy Elsner QUALIFIED
Munro R CaldareraItalyAmy Elsner QUALIFIED
Greenwood T SchemmerBrazilBernardo Dominic UNQUALIFIED
Frozen Columns
Name
Antonio U Amigon
Deepesh M Stenseth
Alejandro J Bolognia
Francesco C Vocelka
Ivar V Glick
Sinclair N Morasca
Adams Z Darakjy
Ivar H Kolmetz
Izzy I Vocelka
Rodrigues X Nestle
David G Gillian
Darci J Vocelka
Morrow E Vocelka
Emily W Albares
Sinclair E Saylors
Deepesh U Nestle
Smith K Kolmetz
Clifford J Dilliard
James N Malet
Francesco M Nestle
Kadeem K Foller
Kaitlin L Paprocki
Aika L Malet
Emily U Rulapaugh
Julie C Ostrosky
Leja Q Briddick
Stacey J Stenseth
Darci H Morasca
Maria C Vocelka
Leja Q Schemmer
Greenwood K Perin
Darci S Briddick
Wickens L Marrier
Faith Y Malet
Mayumi L Poquette
Juan M Kolmetz
Smith R Gaucho
Isabel J Dilliard
Cody F Ostrosky
Johnson B Ruta
James H Doe
Johnson T Bowley
Chavez O Iturbide
Maisha D Malet
Francesco R Marrier
Julie O Butt
Murillo X Ferencz
Alejandro R Butt
Deepesh H Flosi
Morrow O Slusarski
IdCountryDate
1000Australia2024-04-23
1001France2024-03-31
1002Japan2024-04-05
1003Spain2024-04-14
1004Italy2024-04-03
1005Canada2024-04-17
1006Russia2024-03-31
1007Spain2024-04-13
1008Argentina2024-04-14
1009Spain2024-04-03
1010Germany2024-04-15
1011Australia2024-04-22
1012India2024-04-18
1013Russia2024-04-14
1014Brazil2024-04-12
1015Russia2024-04-17
1016Brazil2024-04-02
1017Japan2024-04-14
1018Australia2024-04-01
1019Japan2024-03-30
1020Australia2024-04-16
1021Italy2024-04-18
1022Italy2024-04-15
1023France2024-04-06
1024Japan2024-04-23
1025Russia2024-04-10
1026Italy2024-04-18
1027Spain2024-04-25
1028France2024-04-08
1029Japan2024-04-20
1030France2024-03-30
1031United Kingdom2024-04-18
1032Russia2024-04-17
1033United Kingdom2024-04-28
1034India2024-04-23
1035Germany2024-04-02
1036Japan2024-04-21
1037Germany2024-04-14
1038Brazil2024-04-11
1039Canada2024-04-11
1040Italy2024-04-13
1041France2024-04-24
1042Australia2024-04-22
1043France2024-04-06
1044Brazil2024-04-12
1045Germany2024-04-03
1046Australia2024-04-21
1047United Kingdom2024-04-19
1048France2024-04-27
1049Spain2024-04-05

On-Demand Data

NameIdCountryDate
Cody G Ferencz1000Spain2024-04-13
Jeanfrancois F Ruta1001United Kingdom2024-04-01
Aika U Stockham1002United Kingdom2024-04-14
Alejandro F Caudy1003Canada2024-04-14
Jennifer L Waycott1004Spain2024-04-16
Ricardo R Dilliard1005Australia2024-04-28
Morrow Z Kolmetz1006Japan2024-04-01
Johnson D Briddick1007Russia2024-04-28
James H Oldroyd1008India2024-04-11
Ashley R Briddick1009Argentina2024-04-04
Julie A Campain1010Italy2024-04-08
Arvin G Gaucho1011Spain2024-04-07
Wickens K Nicka1012Argentina2024-04-10
Johnson N Wieser1013Brazil2024-04-25
Salvatore K Bolognia1014India2024-04-06
Faith C Kusko1015Japan2024-03-31
James D Ruta1016Spain2024-04-08
Sinclair C Stockham1017Australia2024-04-05
Misaki X Ruta1018France2024-04-03
Antonio S Sergi1019Japan2024-03-31
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Silvio K WaycottUnited KingdomBernardo Dominic QUALIFIED
Alejandro E NickaJapanAnna Fali PROPOSAL
Isabel V SergiCanadaXuxue Feng NEGOTIATION
Tony F ButtCanadaAmy Elsner RENEWAL
Costa X TollnerJapanXuxue Feng PROPOSAL
Deepesh K StensethCanadaAmy Elsner RENEWAL
Mayumi U GlickArgentinaBernardo Dominic NEGOTIATION
Cody F KolmetzArgentinaOnyama Limba RENEWAL
David R FerenczArgentinaBernardo Dominic NEW
Maria V GauchoBrazilXuxue Feng UNQUALIFIED
Leja K NickaBrazilIvan Magalhaes QUALIFIED
Leon W BriddickIndiaAnna Fali RENEWAL
Adams H PaprockiItalyBernardo Dominic NEGOTIATION
Faith L StockhamIndiaIoni Bowcher NEW
Silvio U RoysterIndiaXuxue Feng RENEWAL
Deepesh S BologniaAustraliaIvan Magalhaes NEGOTIATION
Octavia Z SlusarskiBrazilElwin Sharvill UNQUALIFIED
Munro J NickaSpainAsiya Javayant UNQUALIFIED
Mujtaba G BologniaUnited KingdomAnna Fali UNQUALIFIED
Mujtaba G PaprockiFranceBernardo Dominic RENEWAL
Juan W RoysterRussiaElwin Sharvill PROPOSAL
James X SergiIndiaElwin Sharvill RENEWAL
David I WhobreyIndiaAmy Elsner QUALIFIED
Greenwood Z KolmetzArgentinaXuxue Feng RENEWAL
Adams L VocelkaRussiaOnyama Limba NEGOTIATION
Arvin T CaudyUnited KingdomAsiya Javayant UNQUALIFIED
Jeanfrancois V RulapaughRussiaAmy Elsner NEGOTIATION
Juan F PaprockiBrazilBernardo Dominic NEW
Mujtaba P MacleadRussiaXuxue Feng QUALIFIED
Jones D FigeroaIndiaIoni Bowcher PROPOSAL
Octavia L InouyeBrazilAmy Elsner NEW
Greenwood Q SchemmerCanadaAsiya Javayant PROPOSAL
Rodrigues X SchemmerAustraliaAsiya Javayant NEW
Munro A ShinkoIndiaElwin Sharvill RENEWAL
Francesco Y SlusarskiAustraliaBernardo Dominic NEGOTIATION
Alejandro Y AlbaresCanadaStephen Shaw NEGOTIATION
Octavia C ButtCanadaOnyama Limba NEW
Isabel C GauchoFranceAnna Fali NEW
Chavez J MacleadBrazilStephen Shaw NEW
Salvatore J KuskoCanadaIoni Bowcher 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>