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
Aika R DilliardBrazilIvan Magalhaes QUALIFIED
Emily V CampainFranceElwin Sharvill PROPOSAL
Misaki G GillianIndiaAsiya Javayant NEGOTIATION
Aika E BologniaJapanStephen Shaw PROPOSAL
Leja B BologniaItalyAsiya Javayant UNQUALIFIED
Munro O TollnerRussiaAnna Fali PROPOSAL
Jefferson S PoquetteRussiaStephen Shaw NEW
Jefferson H DilliardRussiaIoni Bowcher NEGOTIATION
Jennifer L NestleItalyAsiya Javayant NEW
Ivar E WieserItalyAnna Fali RENEWAL
Murillo U BologniaAustraliaIoni Bowcher NEGOTIATION
Kaitlin V OldroydUnited KingdomAsiya Javayant QUALIFIED
Costa U GarufiRussiaStephen Shaw QUALIFIED
Juan H ChuiBrazilAmy Elsner NEGOTIATION
Aika I SergiUnited KingdomIoni Bowcher NEGOTIATION
Smith E KolmetzGermanyIvan Magalhaes UNQUALIFIED
Jones X NestleSpainIvan Magalhaes RENEWAL
Nicolas U PaprockiRussiaAsiya Javayant RENEWAL
James Y FlosiIndiaElwin Sharvill NEW
Tony H RutaSpainIoni Bowcher NEW
Deepesh M WaycottItalyAnna Fali UNQUALIFIED
James W GillianRussiaIoni Bowcher NEW
Izzy H DoeArgentinaAnna Fali PROPOSAL
Ivar F TollnerCanadaOnyama Limba RENEWAL
Maisha G NickaItalyBernardo Dominic NEGOTIATION
Ricardo L NickaArgentinaBernardo Dominic NEGOTIATION
Arvin Z GauchoArgentinaIvan Magalhaes QUALIFIED
Emily D IturbideJapanIvan Magalhaes NEGOTIATION
Clifford S NestleItalyAnna Fali UNQUALIFIED
Murillo N PoquetteIndiaAmy Elsner NEW
Morrow P RimBrazilAsiya Javayant PROPOSAL
Jones Y BowleyItalyOnyama Limba UNQUALIFIED
Aditya H MarrierIndiaElwin Sharvill PROPOSAL
Clifford P FigeroaRussiaBernardo Dominic PROPOSAL
Jennifer T OstroskyUnited KingdomElwin Sharvill NEGOTIATION
Antonio D SlusarskiArgentinaIoni Bowcher RENEWAL
Jeanfrancois V MorascaSpainAmy Elsner PROPOSAL
Jennifer A DoeUnited KingdomAmy Elsner NEGOTIATION
Munro W MaletSpainAnna Fali QUALIFIED
Leon N MorascaAustraliaIvan Magalhaes NEGOTIATION
Kaitlin G ShinkoFranceStephen Shaw PROPOSAL
Clifford J BologniaUnited KingdomBernardo Dominic NEGOTIATION
Greenwood C WaycottUnited KingdomXuxue Feng NEW
Alejandro K StockhamArgentinaAsiya Javayant PROPOSAL
Ricardo Q TollnerFranceOnyama Limba PROPOSAL
Ivar I MaletGermanyAmy Elsner QUALIFIED
Ashley D RutaGermanyAsiya Javayant QUALIFIED
Maisha W DoeRussiaStephen Shaw NEGOTIATION
Chavez D WhobreyUnited KingdomXuxue Feng QUALIFIED
Tony Y MaletGermanyXuxue Feng UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Nicolas W GauchoSpainAsiya Javayant NEGOTIATION
Ashley U MacleadGermanyAnna Fali RENEWAL
Izzy V IturbideIndiaIoni Bowcher PROPOSAL
Aruna S PerinArgentinaAsiya Javayant NEW
Silvio C MaletAustraliaXuxue Feng QUALIFIED
David I GarufiJapanAmy Elsner QUALIFIED
Antonio Q SergiUnited KingdomAsiya Javayant PROPOSAL
Mujtaba Y ButtArgentinaOnyama Limba UNQUALIFIED
Aika X MaletBrazilAmy Elsner UNQUALIFIED
Morrow D RutaGermanyStephen Shaw NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000James U RutaCanada2024-04-14Commercial Press NEW57Elwin Sharvill
1001Jefferson F KuskoFrance2024-04-27Dorl, James J Esq QUALIFIED89Asiya Javayant
1002Kadeem A TollnerIndia2024-04-09Buckley Miller Wright RENEWAL50Elwin Sharvill
1003Aruna H DilliardBrazil2024-04-05King, Christopher A Esq QUALIFIED92Ivan Magalhaes
1004James O MacleadArgentina2024-04-04Feltz Printing Service UNQUALIFIED74Elwin Sharvill
1005Isabel C GarufiAustralia2024-04-26Commercial Press NEW71Onyama Limba
1006Misaki P SaylorsFrance2024-04-04Feltz Printing Service RENEWAL19Asiya Javayant
1007Misaki K MorascaItaly2024-04-20Chemel, James L Cpa NEGOTIATION30Elwin Sharvill
1008Costa F IturbideUnited Kingdom2024-04-18Rousseaux, Michael Esq PROPOSAL56Onyama Limba
1009Isabel C RoysterSpain2024-04-25Printing Dimensions RENEWAL46Elwin Sharvill
1010Chavez X FlosiFrance2024-04-14Benton, John B Jr UNQUALIFIED36Bernardo Dominic
1011Leon M DoeItaly2024-04-19Feiner Bros NEW43Stephen Shaw
1012Jennifer R CaldareraBrazil2024-04-05Feltz Printing Service NEW58Asiya Javayant
1013Stacey K FlosiArgentina2024-04-16Chanay, Jeffrey A Esq RENEWAL83Ivan Magalhaes
1014Nicolas L GarufiAustralia2024-04-23Rousseaux, Michael Esq NEW23Elwin Sharvill
1015Kaitlin A FollerGermany2024-04-18Printing Dimensions QUALIFIED4Anna Fali
1016Jeanfrancois N GauchoJapan2024-04-13King, Christopher A Esq PROPOSAL65Anna Fali
1017Leja P ButtArgentina2024-04-21Buckley Miller Wright UNQUALIFIED29Xuxue Feng
1018Mujtaba X DoeGermany2024-04-17King, Christopher A Esq NEW95Ioni Bowcher
1019Jennifer N VocelkaGermany2024-04-14King, Christopher A Esq UNQUALIFIED2Elwin Sharvill
1020Greenwood V AmigonIndia2024-04-21Buckley Miller Wright RENEWAL22Xuxue Feng
1021Deepesh W AmigonAustralia2024-04-16Commercial Press NEGOTIATION11Asiya Javayant
1022Julie M VenereCanada2024-04-09Rangoni Of Florence RENEWAL20Ioni Bowcher
1023Nicolas L FerenczSpain2024-04-17Buckley Miller Wright QUALIFIED88Elwin Sharvill
1024Faith N GlickAustralia2024-04-21Printing Dimensions UNQUALIFIED22Elwin Sharvill
1025Cody D NestleUnited Kingdom2024-04-17Buckley Miller Wright RENEWAL24Stephen Shaw
1026Wickens N ButtBrazil2024-04-17Morlong Associates UNQUALIFIED84Bernardo Dominic
1027Silvio I CaudyIndia2024-04-09Feiner Bros QUALIFIED29Ivan Magalhaes
1028Maria A RutaItaly2024-04-06Buckley Miller Wright QUALIFIED20Stephen Shaw
1029Ashley R ShinkoGermany2024-04-05Feiner Bros PROPOSAL75Amy Elsner
1030Chavez E FlosiBrazil2024-04-26Dorl, James J Esq NEGOTIATION71Stephen Shaw
1031Claire J MacleadGermany2024-04-28Dorl, James J Esq UNQUALIFIED87Amy Elsner
1032Wickens I PerinRussia2024-04-19Truhlar And Truhlar Attys RENEWAL32Ioni Bowcher
1033Jones K OldroydGermany2024-04-12King, Christopher A Esq UNQUALIFIED3Onyama Limba
1034Ricardo V MaletSpain2024-04-15Chanay, Jeffrey A Esq NEW96Asiya Javayant
1035Munro J VocelkaIndia2024-04-17Commercial Press NEW3Amy Elsner
1036Isabel E KuskoCanada2024-04-19Dorl, James J Esq RENEWAL57Ioni Bowcher
1037Aika R SergiBrazil2024-04-18Commercial Press PROPOSAL59Onyama Limba
1038Ashley W WaycottItaly2024-04-10Commercial Press QUALIFIED68Onyama Limba
1039Mayumi M OldroydUnited Kingdom2024-04-30Rangoni Of Florence RENEWAL76Elwin Sharvill
1040Francesco N PoquetteJapan2024-04-18King, Christopher A Esq PROPOSAL66Bernardo Dominic
1041Julie W TollnerIndia2024-04-07Buckley Miller Wright PROPOSAL51Elwin Sharvill
1042Ashley T SlusarskiUnited Kingdom2024-04-29Benton, John B Jr RENEWAL24Stephen Shaw
1043Deepesh R ButtSpain2024-04-26Benton, John B Jr QUALIFIED81Ivan Magalhaes
1044Clifford U FollerRussia2024-04-07Chemel, James L Cpa PROPOSAL11Stephen Shaw
1045Nicolas P ChuiArgentina2024-04-16Commercial Press RENEWAL97Elwin Sharvill
1046Salvatore N StockhamSpain2024-04-04Feltz Printing Service PROPOSAL92Ivan Magalhaes
1047Wickens N TollnerAustralia2024-04-04Chapman, Ross E Esq QUALIFIED59Ioni Bowcher
1048Jones O DarakjyArgentina2024-04-16Printing Dimensions NEGOTIATION42Xuxue Feng
1049Misaki Z PaprockiItaly2024-04-03Morlong Associates NEGOTIATION24Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Leon Y OstroskyFranceOnyama Limba NEW
Jeanfrancois S InouyeAustraliaAmy Elsner UNQUALIFIED
Jefferson W OstroskyBrazilAsiya Javayant NEW
Mujtaba M MarrierRussiaStephen Shaw NEGOTIATION
Costa I FlosiSpainStephen Shaw RENEWAL
Leja A ShinkoBrazilAnna Fali QUALIFIED
Smith Q RulapaughIndiaIoni Bowcher PROPOSAL
Mayumi S NickaCanadaIoni Bowcher NEW
Clifford H RutaBrazilAnna Fali QUALIFIED
Wickens T BowleyGermanyOnyama Limba UNQUALIFIED
Greenwood C ChuiJapanAnna Fali NEGOTIATION
Salvatore C OstroskyRussiaAsiya Javayant QUALIFIED
Octavia B FigeroaAustraliaIoni Bowcher QUALIFIED
Isabel W FigeroaAustraliaAnna Fali RENEWAL
Wickens T WieserSpainElwin Sharvill QUALIFIED
Rodrigues N ShinkoRussiaAsiya Javayant QUALIFIED
Jeanfrancois Y SergiCanadaElwin Sharvill UNQUALIFIED
Cody L PaprockiRussiaOnyama Limba PROPOSAL
Izzy E FigeroaItalyAnna Fali NEW
Costa B ShinkoSpainBernardo Dominic NEGOTIATION
Kadeem B AlbaresGermanyAnna Fali QUALIFIED
Mayumi W FlosiRussiaElwin Sharvill PROPOSAL
Darci I WaycottJapanElwin Sharvill RENEWAL
Emily E WaycottSpainIoni Bowcher UNQUALIFIED
Jeanfrancois G ChuiGermanyAmy Elsner UNQUALIFIED
James T IturbideCanadaAnna Fali NEW
Jefferson D WhobreyGermanyIvan Magalhaes RENEWAL
Kadeem C PerinSpainStephen Shaw RENEWAL
Misaki W SchemmerFranceElwin Sharvill RENEWAL
Emily G StockhamAustraliaAmy Elsner NEW
Greenwood X GlickCanadaIoni Bowcher NEGOTIATION
Kadeem R InouyeIndiaAsiya Javayant QUALIFIED
Tony Z BriddickIndiaIoni Bowcher QUALIFIED
Francesco U FigeroaRussiaAnna Fali RENEWAL
Mayumi J GauchoBrazilAnna Fali QUALIFIED
Alejandro X NestleIndiaElwin Sharvill NEW
Emily W TollnerGermanyBernardo Dominic PROPOSAL
Ashley T RimItalyOnyama Limba PROPOSAL
Rodrigues H RimCanadaAmy Elsner QUALIFIED
Kaitlin T DoeBrazilElwin Sharvill NEW
Antonio E OstroskyFranceAnna Fali NEGOTIATION
Smith T SergiCanadaIoni Bowcher NEGOTIATION
Julie F GillianJapanAsiya Javayant UNQUALIFIED
Rodrigues A GauchoSpainAmy Elsner PROPOSAL
Aditya A GlickGermanyAmy Elsner RENEWAL
Murillo L WieserCanadaElwin Sharvill UNQUALIFIED
Morrow W BriddickUnited KingdomIoni Bowcher RENEWAL
Emily S NickaSpainStephen Shaw UNQUALIFIED
Darci Z RulapaughFranceAsiya Javayant PROPOSAL
Adams E MorascaGermanyIvan Magalhaes UNQUALIFIED
Frozen Columns
Name
Mujtaba G Caudy
Costa Q Rim
Aditya N Whobrey
Adams Z Tollner
Jefferson R Maclead
Deepesh E Ruta
Mayumi G Iturbide
Faith W Perin
Jones W Iturbide
Aditya Q Gaucho
Darci Q Rulapaugh
Murillo Q Tollner
Ivar S Iturbide
Ricardo N Whobrey
Maria X Maclead
Maria Q Vocelka
Maisha O Chui
Izzy Q Foller
Isabel X Iturbide
Ashley J Ruta
Misaki K Glick
Izzy E Inouye
Wickens F Albares
Octavia X Butt
Aruna I Briddick
Morrow W Doe
Alejandro U Briddick
Ashley L Royster
Cody P Butt
Misaki L Rulapaugh
Misaki Q Venere
Jones R Paprocki
Claire T Sergi
Kadeem B Royster
Costa J Rim
Emily E Butt
Murillo X Venere
Julie I Darakjy
Jones H Gaucho
Alejandro E Figeroa
Nicolas Y Ferencz
Mayumi U Figeroa
Smith G Malet
Arvin B Kolmetz
Emily B Schemmer
Chavez O Rulapaugh
Costa B Malet
Emily Y Caldarera
Darci R Malet
Isabel L Briddick
IdCountryDate
1000Brazil2024-05-02
1001Argentina2024-04-16
1002France2024-04-29
1003Spain2024-04-27
1004Canada2024-04-19
1005Russia2024-04-12
1006Japan2024-04-03
1007Australia2024-04-26
1008Russia2024-04-14
1009Canada2024-04-27
1010Brazil2024-04-10
1011France2024-04-09
1012United Kingdom2024-04-10
1013India2024-04-20
1014France2024-04-22
1015France2024-04-25
1016Japan2024-04-10
1017Brazil2024-04-13
1018Australia2024-04-22
1019Brazil2024-04-26
1020Spain2024-04-24
1021Japan2024-04-22
1022Argentina2024-04-18
1023Italy2024-04-23
1024Canada2024-04-17
1025Russia2024-04-14
1026Argentina2024-04-07
1027Japan2024-04-05
1028India2024-04-21
1029Italy2024-04-29
1030Canada2024-04-09
1031Italy2024-04-12
1032Australia2024-04-10
1033Italy2024-04-18
1034Spain2024-04-30
1035Japan2024-05-02
1036Australia2024-04-09
1037Canada2024-04-25
1038Russia2024-04-03
1039Russia2024-04-15
1040Australia2024-05-01
1041Brazil2024-04-20
1042Brazil2024-04-12
1043Australia2024-04-26
1044Japan2024-04-22
1045France2024-04-20
1046Japan2024-04-07
1047Argentina2024-04-10
1048Russia2024-04-03
1049France2024-05-01

On-Demand Data

NameIdCountryDate
Alejandro O Ferencz1000Italy2024-04-26
Deepesh V Amigon1001Germany2024-04-08
Sinclair T Maclead1002Russia2024-05-01
Clifford O Chui1003United Kingdom2024-04-19
Tony U Sergi1004Russia2024-05-01
Kaitlin W Schemmer1005United Kingdom2024-04-15
Ashley P Inouye1006United Kingdom2024-04-28
Wickens D Ostrosky1007Italy2024-04-27
Jeanfrancois J Garufi1008Spain2024-05-02
Nicolas U Glick1009Canada2024-05-02
Wickens K Venere1010India2024-05-02
Aruna M Stockham1011Spain2024-04-05
Johnson X Stockham1012Brazil2024-04-13
Tony A Darakjy1013Canada2024-04-27
Mujtaba E Briddick1014Australia2024-04-09
Munro X Flosi1015Canada2024-04-21
Costa X Rulapaugh1016Italy2024-04-22
James D Amigon1017Argentina2024-05-01
Tony K Nicka1018India2024-04-05
Aika Z Rim1019Japan2024-05-01
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ashley K WhobreyJapanOnyama Limba QUALIFIED
Ivar P KuskoBrazilXuxue Feng RENEWAL
Juan V MaletCanadaStephen Shaw RENEWAL
Ivar R NestleUnited KingdomStephen Shaw NEGOTIATION
Misaki K WieserBrazilAsiya Javayant RENEWAL
Munro A BowleyArgentinaOnyama Limba NEGOTIATION
Alejandro Y StockhamIndiaOnyama Limba UNQUALIFIED
Stacey U GlickArgentinaIoni Bowcher RENEWAL
Francesco W SchemmerBrazilElwin Sharvill NEGOTIATION
Leon N WaycottBrazilAsiya Javayant RENEWAL
Leja T FerenczRussiaAmy Elsner NEGOTIATION
Faith R SlusarskiRussiaXuxue Feng NEGOTIATION
Ivar Z CampainGermanyIoni Bowcher PROPOSAL
Arvin R MacleadJapanXuxue Feng PROPOSAL
Isabel F PerinGermanyElwin Sharvill UNQUALIFIED
Chavez A RulapaughJapanStephen Shaw PROPOSAL
Maisha R OstroskyIndiaOnyama Limba QUALIFIED
Emily E FerenczAustraliaIvan Magalhaes NEW
Ivar E NestleFranceXuxue Feng QUALIFIED
Aika D WhobreyBrazilXuxue Feng NEW
Antonio O FlosiJapanElwin Sharvill PROPOSAL
Octavia Y CaudyRussiaIvan Magalhaes NEGOTIATION
Aruna C SaylorsCanadaIvan Magalhaes UNQUALIFIED
Jefferson C WieserRussiaStephen Shaw PROPOSAL
Greenwood K BowleyIndiaAmy Elsner NEGOTIATION
Leon Q MarrierAustraliaElwin Sharvill NEGOTIATION
Juan M GauchoBrazilIoni Bowcher NEGOTIATION
Jeanfrancois V SaylorsBrazilElwin Sharvill RENEWAL
Julie I KolmetzRussiaStephen Shaw NEGOTIATION
Ivar A StensethCanadaBernardo Dominic PROPOSAL
Kaitlin B WaycottItalyStephen Shaw NEGOTIATION
Tony B CaudyFranceElwin Sharvill RENEWAL
Murillo W FigeroaAustraliaAmy Elsner PROPOSAL
Jefferson J InouyeCanadaAmy Elsner NEGOTIATION
Adams J KuskoRussiaElwin Sharvill PROPOSAL
Ivar I SergiArgentinaElwin Sharvill QUALIFIED
Antonio G AmigonIndiaStephen Shaw NEGOTIATION
Darci L CaudyBrazilBernardo Dominic PROPOSAL
Claire Z IturbideJapanAsiya Javayant PROPOSAL
Isabel T TollnerUnited KingdomStephen Shaw RENEWAL

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