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
Munro A SaylorsSpainElwin Sharvill UNQUALIFIED
Aika N NickaUnited KingdomIvan Magalhaes RENEWAL
Antonio A FerenczBrazilIvan Magalhaes NEW
Kaitlin S FlosiSpainAnna Fali RENEWAL
Rodrigues Z WaycottRussiaElwin Sharvill UNQUALIFIED
Faith D VenereGermanyAnna Fali NEW
Julie N PoquetteFranceAsiya Javayant RENEWAL
Isabel W VocelkaUnited KingdomXuxue Feng RENEWAL
Alejandro O ButtCanadaIvan Magalhaes QUALIFIED
Julie Z FerenczBrazilStephen Shaw UNQUALIFIED
Aditya H NickaBrazilXuxue Feng QUALIFIED
Murillo Y StensethIndiaAsiya Javayant NEW
Ivar I PoquetteRussiaStephen Shaw NEW
Jennifer B CaldareraBrazilAmy Elsner RENEWAL
Morrow Z StockhamAustraliaAnna Fali NEGOTIATION
Emily P VocelkaCanadaBernardo Dominic PROPOSAL
Arvin F WaycottFranceIvan Magalhaes UNQUALIFIED
Mujtaba D NickaRussiaAsiya Javayant QUALIFIED
Claire F SergiJapanBernardo Dominic UNQUALIFIED
Alejandro I DarakjyBrazilBernardo Dominic RENEWAL
Ivar J BowleyAustraliaIvan Magalhaes NEGOTIATION
Wickens A MorascaItalyIvan Magalhaes UNQUALIFIED
Greenwood O RoysterIndiaOnyama Limba NEW
Munro N SchemmerJapanElwin Sharvill RENEWAL
Munro V DarakjyBrazilAnna Fali RENEWAL
Aika I PerinRussiaBernardo Dominic PROPOSAL
Leja X FigeroaBrazilXuxue Feng PROPOSAL
Nicolas F MaletAustraliaAmy Elsner NEW
Izzy G ChuiAustraliaIoni Bowcher NEGOTIATION
Leon T TollnerBrazilElwin Sharvill RENEWAL
Alejandro L FigeroaBrazilIoni Bowcher RENEWAL
Cody N PoquetteBrazilAnna Fali NEW
Ivar Y GlickArgentinaAsiya Javayant UNQUALIFIED
Darci U GauchoBrazilAmy Elsner NEW
Leon U CaudyBrazilBernardo Dominic NEW
Ricardo B OldroydBrazilAmy Elsner UNQUALIFIED
Tony W IturbideIndiaOnyama Limba PROPOSAL
Arvin I StensethCanadaAnna Fali NEW
Morrow F RoysterItalyAnna Fali RENEWAL
Murillo U SergiBrazilStephen Shaw QUALIFIED
Francesco G PerinItalyAsiya Javayant UNQUALIFIED
Jones Z ShinkoUnited KingdomAsiya Javayant NEW
Leon G PaprockiUnited KingdomOnyama Limba NEGOTIATION
Chavez R RutaUnited KingdomElwin Sharvill QUALIFIED
Alejandro V SchemmerRussiaStephen Shaw NEW
Aruna C SlusarskiAustraliaIoni Bowcher NEGOTIATION
Murillo C VenereItalyBernardo Dominic NEW
Johnson F FerenczBrazilOnyama Limba NEW
James Y KolmetzItalyAsiya Javayant NEGOTIATION
Kaitlin E CampainFranceBernardo Dominic UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Maisha Q PaprockiSpainXuxue Feng NEGOTIATION
Kadeem Y OldroydBrazilIvan Magalhaes PROPOSAL
Stacey A IturbideArgentinaStephen Shaw NEW
Wickens U InouyeIndiaAsiya Javayant NEGOTIATION
Adams R RimGermanyOnyama Limba PROPOSAL
Jefferson M BowleyAustraliaElwin Sharvill QUALIFIED
Munro Z NestleAustraliaStephen Shaw QUALIFIED
Alejandro X IturbideGermanyIvan Magalhaes NEW
Darci O PaprockiIndiaAnna Fali RENEWAL
Wickens S ButtGermanyOnyama Limba UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Mujtaba G FollerIndia2024-04-20Buckley Miller Wright UNQUALIFIED41Stephen Shaw
1001Costa H FollerIndia2024-04-11Commercial Press RENEWAL52Stephen Shaw
1002Wickens M StockhamAustralia2024-03-27Feiner Bros NEW49Xuxue Feng
1003Johnson I GauchoIndia2024-03-26Feltz Printing Service PROPOSAL45Anna Fali
1004Stacey N RoysterUnited Kingdom2024-04-20Chanay, Jeffrey A Esq QUALIFIED63Ioni Bowcher
1005Arvin A StockhamCanada2024-04-16Buckley Miller Wright QUALIFIED77Anna Fali
1006Deepesh Q PoquetteGermany2024-03-30King, Christopher A Esq PROPOSAL77Onyama Limba
1007Nicolas D OstroskyRussia2024-04-18Chapman, Ross E Esq RENEWAL31Xuxue Feng
1008Tony K KuskoIndia2024-04-01Feiner Bros RENEWAL27Elwin Sharvill
1009Claire J StensethBrazil2024-04-16Benton, John B Jr QUALIFIED55Anna Fali
1010Tony N AlbaresJapan2024-04-19Feltz Printing Service PROPOSAL8Ivan Magalhaes
1011Leon W WaycottAustralia2024-04-11Benton, John B Jr PROPOSAL88Elwin Sharvill
1012Adams A ButtArgentina2024-03-30Chapman, Ross E Esq PROPOSAL54Elwin Sharvill
1013Ricardo P IturbideAustralia2024-04-02Commercial Press QUALIFIED65Ivan Magalhaes
1014Murillo U WieserSpain2024-03-24Chemel, James L Cpa UNQUALIFIED9Amy Elsner
1015Izzy Q BowleyRussia2024-03-25Chapman, Ross E Esq UNQUALIFIED47Ioni Bowcher
1016Ivar I WaycottArgentina2024-03-24Chanay, Jeffrey A Esq NEGOTIATION92Ivan Magalhaes
1017Jeanfrancois S StensethGermany2024-04-02Dorl, James J Esq QUALIFIED62Anna Fali
1018Morrow T ButtCanada2024-04-16Rangoni Of Florence NEW62Stephen Shaw
1019Mujtaba B AmigonCanada2024-03-30Chapman, Ross E Esq UNQUALIFIED50Amy Elsner
1020Maisha Z VenereArgentina2024-04-02Rangoni Of Florence UNQUALIFIED9Bernardo Dominic
1021Mujtaba T BologniaSpain2024-04-05Feltz Printing Service RENEWAL39Onyama Limba
1022Julie L DoeUnited Kingdom2024-03-29Rousseaux, Michael Esq NEW4Ivan Magalhaes
1023Francesco V GarufiRussia2024-04-07King, Christopher A Esq NEGOTIATION34Onyama Limba
1024Tony Q MaletIndia2024-04-06Rousseaux, Michael Esq PROPOSAL15Anna Fali
1025David V KolmetzIndia2024-04-06Printing Dimensions QUALIFIED41Asiya Javayant
1026Alejandro V WieserUnited Kingdom2024-04-10Morlong Associates NEW50Asiya Javayant
1027Clifford O ShinkoAustralia2024-04-21Dorl, James J Esq RENEWAL35Stephen Shaw
1028Faith M CaudyArgentina2024-04-01Chemel, James L Cpa PROPOSAL27Xuxue Feng
1029Chavez J PoquetteIndia2024-03-30Dorl, James J Esq QUALIFIED22Asiya Javayant
1030Sinclair J TollnerItaly2024-04-21King, Christopher A Esq QUALIFIED21Amy Elsner
1031Ricardo X GlickAustralia2024-04-03Morlong Associates PROPOSAL8Xuxue Feng
1032Wickens V SaylorsItaly2024-04-09Printing Dimensions UNQUALIFIED58Anna Fali
1033Kadeem O SaylorsJapan2024-04-05Chapman, Ross E Esq NEGOTIATION40Anna Fali
1034Tony Y GlickArgentina2024-04-14King, Christopher A Esq NEW46Amy Elsner
1035Smith N MaletBrazil2024-04-02Chapman, Ross E Esq QUALIFIED14Xuxue Feng
1036Greenwood N NickaBrazil2024-04-15Morlong Associates RENEWAL53Asiya Javayant
1037Sinclair C SchemmerUnited Kingdom2024-03-26Chemel, James L Cpa NEW36Bernardo Dominic
1038Jefferson F GlickGermany2024-04-22Chemel, James L Cpa UNQUALIFIED47Bernardo Dominic
1039Aika X PaprockiCanada2024-04-07Rousseaux, Michael Esq UNQUALIFIED87Xuxue Feng
1040Chavez Y StockhamArgentina2024-04-09Buckley Miller Wright NEW12Ivan Magalhaes
1041Nicolas K OstroskyFrance2024-04-12Printing Dimensions NEGOTIATION57Bernardo Dominic
1042Murillo T ShinkoBrazil2024-04-14Chemel, James L Cpa NEW17Ioni Bowcher
1043Cody Y StensethUnited Kingdom2024-03-28Commercial Press QUALIFIED52Ivan Magalhaes
1044Mujtaba Y SlusarskiItaly2024-04-12Truhlar And Truhlar Attys UNQUALIFIED70Elwin Sharvill
1045Aruna T SlusarskiAustralia2024-04-11Feiner Bros PROPOSAL0Ivan Magalhaes
1046Chavez Y DarakjyRussia2024-04-16Dorl, James J Esq NEGOTIATION10Ivan Magalhaes
1047Sinclair H PoquetteItaly2024-04-06Chanay, Jeffrey A Esq NEGOTIATION4Xuxue Feng
1048Julie H PerinUnited Kingdom2024-04-01King, Christopher A Esq QUALIFIED94Amy Elsner
1049Stacey Q ButtUnited Kingdom2024-03-30Rangoni Of Florence QUALIFIED52Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Aika C SlusarskiRussiaXuxue Feng NEW
Faith Z PerinSpainOnyama Limba NEW
Isabel O GillianIndiaAsiya Javayant PROPOSAL
Darci T KolmetzSpainAsiya Javayant NEW
Tony E AlbaresSpainAnna Fali NEGOTIATION
Jeanfrancois A GarufiFranceAnna Fali UNQUALIFIED
Wickens R KuskoCanadaStephen Shaw NEGOTIATION
Sinclair U CaudyFranceAsiya Javayant RENEWAL
Munro S WieserFranceAsiya Javayant NEGOTIATION
Isabel T ChuiAustraliaXuxue Feng NEGOTIATION
Claire C NestleItalyXuxue Feng PROPOSAL
Wickens I OldroydIndiaIoni Bowcher QUALIFIED
Mujtaba J DoeFranceElwin Sharvill RENEWAL
Izzy A KolmetzIndiaAnna Fali QUALIFIED
Deepesh X MorascaIndiaElwin Sharvill NEW
Stacey O TollnerBrazilStephen Shaw NEGOTIATION
Salvatore Y BowleyFranceBernardo Dominic UNQUALIFIED
Leon W MaletFranceOnyama Limba RENEWAL
Leja A RutaIndiaAmy Elsner RENEWAL
Adams S DilliardCanadaAsiya Javayant NEGOTIATION
Munro M GillianJapanXuxue Feng UNQUALIFIED
Adams U SergiAustraliaStephen Shaw UNQUALIFIED
Murillo U CampainItalyIvan Magalhaes NEGOTIATION
Octavia P DarakjyBrazilStephen Shaw PROPOSAL
Octavia X GauchoIndiaXuxue Feng UNQUALIFIED
Munro B AlbaresUnited KingdomAmy Elsner NEW
Izzy L VocelkaBrazilStephen Shaw PROPOSAL
Arvin B AmigonCanadaXuxue Feng PROPOSAL
Jones V GillianArgentinaXuxue Feng UNQUALIFIED
Morrow Z CaudySpainElwin Sharvill QUALIFIED
Wickens Z StockhamFranceXuxue Feng QUALIFIED
Clifford U RimBrazilIvan Magalhaes RENEWAL
James I SaylorsIndiaOnyama Limba NEW
Maria Q WieserItalyStephen Shaw NEW
Adams L OldroydAustraliaStephen Shaw NEGOTIATION
Ivar R VenereIndiaAmy Elsner PROPOSAL
Jefferson G PaprockiArgentinaStephen Shaw UNQUALIFIED
Clifford K MarrierSpainAmy Elsner PROPOSAL
Julie O VenereUnited KingdomBernardo Dominic PROPOSAL
Jennifer J InouyeRussiaIvan Magalhaes RENEWAL
Arvin V KolmetzCanadaAnna Fali QUALIFIED
Leja K CaudySpainAmy Elsner PROPOSAL
Murillo X CampainUnited KingdomAmy Elsner UNQUALIFIED
Murillo K GarufiSpainIvan Magalhaes UNQUALIFIED
Murillo C NestleIndiaXuxue Feng RENEWAL
Mayumi R FigeroaAustraliaIoni Bowcher NEW
Leja B MarrierSpainStephen Shaw PROPOSAL
Mujtaba C ChuiSpainAmy Elsner NEW
Kaitlin O BowleyFranceBernardo Dominic RENEWAL
Wickens E FollerBrazilStephen Shaw PROPOSAL
Frozen Columns
Name
Smith D Stenseth
Murillo F Shinko
Juan B Gaucho
Costa S Gaucho
Alejandro H Stenseth
Mayumi E Iturbide
Antonio T Figeroa
Ivar K Kusko
Mujtaba L Caldarera
Mujtaba H Albares
Tony F Chui
Darci K Garufi
Cody Q Nicka
David R Inouye
Murillo D Kolmetz
Smith W Rim
Johnson U Royster
Leja V Caudy
Emily P Vocelka
James V Figeroa
Greenwood Z Nestle
Murillo I Nicka
Stacey Y Nestle
David A Kolmetz
Maria K Venere
Darci S Butt
Francesco D Rim
Stacey Y Marrier
Leja G Marrier
Jones V Butt
Aika X Inouye
Mujtaba O Gaucho
Chavez H Stenseth
Emily Z Stockham
Juan Y Ostrosky
Antonio Q Glick
Wickens T Briddick
Johnson Q Bolognia
Nicolas Q Marrier
Salvatore E Gillian
Costa F Darakjy
Adams R Marrier
Silvio T Dilliard
Greenwood Y Shinko
Munro D Malet
Octavia F Royster
Deepesh Y Caldarera
Morrow E Perin
Julie C Dilliard
Murillo O Perin
IdCountryDate
1000Brazil2024-04-11
1001Japan2024-04-16
1002Germany2024-04-21
1003United Kingdom2024-04-22
1004Japan2024-04-09
1005Brazil2024-03-28
1006Japan2024-04-18
1007France2024-04-15
1008Russia2024-04-09
1009Argentina2024-04-14
1010Canada2024-03-25
1011Italy2024-04-12
1012Germany2024-04-22
1013Germany2024-03-24
1014Australia2024-04-05
1015Germany2024-04-08
1016Japan2024-04-13
1017Italy2024-04-19
1018France2024-04-05
1019Italy2024-03-28
1020Italy2024-03-26
1021Canada2024-04-02
1022Australia2024-04-17
1023India2024-04-22
1024Canada2024-03-26
1025Canada2024-03-30
1026Germany2024-04-14
1027Canada2024-03-24
1028Russia2024-03-30
1029Brazil2024-03-30
1030Italy2024-04-11
1031Italy2024-03-24
1032Italy2024-04-18
1033Canada2024-04-06
1034United Kingdom2024-04-04
1035Brazil2024-04-03
1036Spain2024-04-22
1037Argentina2024-03-24
1038Spain2024-03-30
1039Brazil2024-04-13
1040Japan2024-04-10
1041Australia2024-04-09
1042France2024-04-22
1043Italy2024-04-21
1044United Kingdom2024-04-09
1045Russia2024-04-03
1046Russia2024-04-07
1047Brazil2024-03-30
1048Canada2024-03-31
1049Japan2024-04-20

On-Demand Data

NameIdCountryDate
Francesco E Waycott1000Russia2024-04-04
Faith P Ruta1001United Kingdom2024-04-22
Ashley G Nicka1002Spain2024-04-10
Costa C Morasca1003Japan2024-04-15
Adams S Ferencz1004Italy2024-04-05
Kaitlin R Malet1005Germany2024-04-16
Ricardo T Schemmer1006United Kingdom2024-03-30
Aika R Figeroa1007United Kingdom2024-03-28
Adams D Kolmetz1008Canada2024-03-31
Johnson A Kusko1009France2024-04-08
Jeanfrancois O Gillian1010Brazil2024-04-22
Juan X Stenseth1011Japan2024-04-21
Alejandro N Nicka1012Canada2024-04-10
Nicolas V Rim1013Japan2024-04-03
Mayumi S Rulapaugh1014India2024-04-02
Ivar N Nestle1015Canada2024-04-17
Rodrigues G Morasca1016France2024-03-26
Juan K Stenseth1017Brazil2024-04-03
Salvatore Z Malet1018Australia2024-04-07
Mujtaba P Ostrosky1019Italy2024-04-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jones L DarakjyItalyXuxue Feng QUALIFIED
Jennifer Q StensethItalyElwin Sharvill PROPOSAL
Mujtaba W StockhamFranceElwin Sharvill RENEWAL
Julie S PaprockiBrazilAmy Elsner UNQUALIFIED
Cody N StockhamCanadaIoni Bowcher PROPOSAL
Johnson E BologniaGermanyOnyama Limba QUALIFIED
Costa C PoquetteAustraliaAmy Elsner RENEWAL
Rodrigues J WieserArgentinaAnna Fali RENEWAL
Octavia Y SchemmerSpainIvan Magalhaes QUALIFIED
Johnson B MacleadRussiaAmy Elsner QUALIFIED
Jefferson M FlosiSpainIoni Bowcher PROPOSAL
Deepesh J VenereCanadaBernardo Dominic NEW
Nicolas Y WhobreyCanadaStephen Shaw RENEWAL
Johnson F PoquetteCanadaIvan Magalhaes QUALIFIED
Aika F NestleJapanElwin Sharvill UNQUALIFIED
Emily R NestleAustraliaIoni Bowcher QUALIFIED
Emily F StensethAustraliaAnna Fali RENEWAL
Octavia Y PoquetteAustraliaBernardo Dominic NEW
Antonio O DilliardIndiaStephen Shaw RENEWAL
Maria K RutaIndiaAnna Fali QUALIFIED
Sinclair B GlickSpainStephen Shaw QUALIFIED
Munro U StensethGermanyBernardo Dominic NEGOTIATION
Maria Z FlosiBrazilAsiya Javayant NEGOTIATION
Rodrigues Z NestleRussiaElwin Sharvill NEW
Morrow I PerinCanadaAnna Fali QUALIFIED
Misaki J GlickGermanyOnyama Limba NEW
Leja V SergiRussiaIoni Bowcher RENEWAL
Julie D AmigonItalyXuxue Feng UNQUALIFIED
Cody Z WieserAustraliaStephen Shaw NEGOTIATION
Ivar F ButtSpainBernardo Dominic QUALIFIED
Claire K VocelkaSpainIoni Bowcher PROPOSAL
Murillo C DarakjyIndiaIoni Bowcher NEW
David R NestleItalyAsiya Javayant UNQUALIFIED
Kaitlin X VenereUnited KingdomIoni Bowcher QUALIFIED
Costa B CampainArgentinaStephen Shaw NEGOTIATION
Darci Q NickaCanadaOnyama Limba RENEWAL
Jeanfrancois H IturbideArgentinaElwin Sharvill NEGOTIATION
Francesco G FollerSpainXuxue Feng RENEWAL
Claire B VocelkaBrazilAsiya Javayant PROPOSAL
Aika N ChuiRussiaBernardo Dominic QUALIFIED

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