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
Arvin M ShinkoGermanyAsiya Javayant NEW
Johnson A CaudyUnited KingdomIoni Bowcher NEGOTIATION
Deepesh D WieserRussiaAsiya Javayant NEW
Deepesh U SlusarskiGermanyStephen Shaw UNQUALIFIED
Izzy O CampainItalyIvan Magalhaes UNQUALIFIED
Chavez H OldroydItalyBernardo Dominic UNQUALIFIED
Maisha Y BriddickSpainAnna Fali NEW
Juan Q AlbaresBrazilOnyama Limba RENEWAL
Kaitlin S InouyeUnited KingdomAnna Fali RENEWAL
Tony J ChuiBrazilIvan Magalhaes PROPOSAL
Claire M SlusarskiIndiaAmy Elsner UNQUALIFIED
Misaki Q GarufiSpainAsiya Javayant UNQUALIFIED
Octavia Q IturbideFranceBernardo Dominic QUALIFIED
Stacey G GauchoGermanyStephen Shaw PROPOSAL
Kaitlin E RimRussiaAmy Elsner PROPOSAL
Stacey B GauchoJapanAsiya Javayant NEGOTIATION
Stacey T AmigonIndiaOnyama Limba QUALIFIED
Kaitlin A MorascaGermanyXuxue Feng PROPOSAL
Julie P BologniaJapanBernardo Dominic UNQUALIFIED
Maria C MorascaAustraliaBernardo Dominic RENEWAL
Jennifer U RulapaughArgentinaStephen Shaw UNQUALIFIED
Clifford A DarakjyUnited KingdomElwin Sharvill QUALIFIED
Sinclair I MaletArgentinaAsiya Javayant QUALIFIED
Clifford C MaletUnited KingdomAmy Elsner NEGOTIATION
Isabel G DarakjyJapanElwin Sharvill QUALIFIED
Maisha N NestleCanadaOnyama Limba RENEWAL
Aruna Z StockhamCanadaAmy Elsner QUALIFIED
Francesco V KuskoGermanyAmy Elsner NEW
Antonio X SchemmerSpainXuxue Feng RENEWAL
Arvin I FigeroaSpainStephen Shaw RENEWAL
Francesco B NestleBrazilAnna Fali RENEWAL
Costa R BriddickAustraliaXuxue Feng UNQUALIFIED
Misaki A MorascaJapanAmy Elsner QUALIFIED
Salvatore B TollnerJapanOnyama Limba QUALIFIED
Smith O VocelkaItalyBernardo Dominic UNQUALIFIED
Jeanfrancois L MorascaFranceAsiya Javayant RENEWAL
Silvio N KolmetzSpainAsiya Javayant PROPOSAL
Jeanfrancois D RoysterJapanAsiya Javayant NEW
Ashley W MorascaCanadaAnna Fali QUALIFIED
Misaki B StensethFranceIoni Bowcher PROPOSAL
David M PoquetteIndiaElwin Sharvill NEGOTIATION
Aika U VenereSpainAmy Elsner UNQUALIFIED
Kaitlin O MaletJapanOnyama Limba NEW
Greenwood N VenereJapanAnna Fali QUALIFIED
Jones E RulapaughUnited KingdomBernardo Dominic UNQUALIFIED
Leja A AmigonIndiaAnna Fali NEGOTIATION
Murillo Y BriddickIndiaIvan Magalhaes UNQUALIFIED
Faith O SchemmerSpainXuxue Feng PROPOSAL
Smith I RutaSpainIvan Magalhaes QUALIFIED
Maria G GillianJapanStephen Shaw UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Nicolas W CaudySpainAsiya Javayant UNQUALIFIED
Maisha C VocelkaRussiaElwin Sharvill NEGOTIATION
Leja N RimArgentinaAnna Fali PROPOSAL
Juan O GlickJapanStephen Shaw QUALIFIED
Alejandro M CaldareraArgentinaXuxue Feng QUALIFIED
Deepesh Y TollnerRussiaElwin Sharvill PROPOSAL
Greenwood M BologniaItalyXuxue Feng NEGOTIATION
James J DilliardBrazilAmy Elsner QUALIFIED
Munro E BowleyFranceBernardo Dominic PROPOSAL
David K DoeFranceAsiya Javayant NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Octavia R TollnerAustralia2024-04-14Truhlar And Truhlar Attys UNQUALIFIED29Anna Fali
1001Silvio B IturbideGermany2024-04-16Feiner Bros PROPOSAL5Bernardo Dominic
1002Smith R BowleyIndia2024-04-25Printing Dimensions PROPOSAL80Asiya Javayant
1003Rodrigues K TollnerSpain2024-04-26Chapman, Ross E Esq UNQUALIFIED7Anna Fali
1004Alejandro X ButtUnited Kingdom2024-04-18Rangoni Of Florence NEGOTIATION24Elwin Sharvill
1005Jefferson Y StockhamFrance2024-04-16Chanay, Jeffrey A Esq QUALIFIED89Stephen Shaw
1006Smith O AlbaresItaly2024-04-26Rangoni Of Florence NEW80Ioni Bowcher
1007Maisha R RutaIndia2024-04-11Benton, John B Jr NEW21Stephen Shaw
1008Nicolas Q RimJapan2024-05-02Dorl, James J Esq QUALIFIED16Ioni Bowcher
1009Adams I StensethIndia2024-04-18Commercial Press NEW31Ivan Magalhaes
1010Misaki S PaprockiAustralia2024-04-09Morlong Associates UNQUALIFIED7Bernardo Dominic
1011Ivar Q SchemmerArgentina2024-04-04Rousseaux, Michael Esq UNQUALIFIED53Amy Elsner
1012Smith V BologniaItaly2024-04-07Rousseaux, Michael Esq UNQUALIFIED10Elwin Sharvill
1013Faith P MaletItaly2024-04-21Chemel, James L Cpa UNQUALIFIED80Bernardo Dominic
1014Rodrigues I ChuiArgentina2024-04-04Buckley Miller Wright NEGOTIATION20Amy Elsner
1015Mujtaba D GillianAustralia2024-04-12Truhlar And Truhlar Attys QUALIFIED10Ivan Magalhaes
1016Maria T MorascaFrance2024-04-13Truhlar And Truhlar Attys NEGOTIATION22Anna Fali
1017Costa X CaudyGermany2024-04-13Commercial Press NEGOTIATION24Amy Elsner
1018Morrow D SlusarskiBrazil2024-04-12Buckley Miller Wright QUALIFIED92Bernardo Dominic
1019Jeanfrancois R PoquetteCanada2024-04-07Rousseaux, Michael Esq NEW14Asiya Javayant
1020Deepesh H TollnerFrance2024-04-28Chemel, James L Cpa PROPOSAL95Anna Fali
1021Johnson W RoysterUnited Kingdom2024-04-22Dorl, James J Esq QUALIFIED3Ivan Magalhaes
1022Clifford I AmigonSpain2024-04-05Chapman, Ross E Esq UNQUALIFIED26Stephen Shaw
1023Deepesh F MaletFrance2024-04-22Buckley Miller Wright QUALIFIED43Onyama Limba
1024Mayumi V PerinUnited Kingdom2024-05-02Morlong Associates PROPOSAL1Ioni Bowcher
1025Salvatore Y GlickSpain2024-04-09Dorl, James J Esq PROPOSAL59Bernardo Dominic
1026Julie I MacleadSpain2024-04-25Printing Dimensions UNQUALIFIED98Anna Fali
1027Kaitlin U FollerSpain2024-04-28King, Christopher A Esq QUALIFIED81Elwin Sharvill
1028Chavez G VenereBrazil2024-04-12Rangoni Of Florence QUALIFIED72Xuxue Feng
1029Misaki E SlusarskiArgentina2024-04-29Rousseaux, Michael Esq NEGOTIATION66Stephen Shaw
1030Aditya S VocelkaArgentina2024-04-20Dorl, James J Esq QUALIFIED35Xuxue Feng
1031Munro F AlbaresBrazil2024-04-23Printing Dimensions PROPOSAL88Elwin Sharvill
1032Darci O RimUnited Kingdom2024-04-19Printing Dimensions RENEWAL48Ioni Bowcher
1033Deepesh U FigeroaFrance2024-05-02King, Christopher A Esq PROPOSAL89Xuxue Feng
1034Smith B NickaGermany2024-04-20Buckley Miller Wright NEW39Elwin Sharvill
1035Sinclair N CaldareraBrazil2024-04-21Chanay, Jeffrey A Esq NEW38Asiya Javayant
1036Jennifer U KuskoCanada2024-04-10Commercial Press RENEWAL31Amy Elsner
1037Misaki L SaylorsGermany2024-04-08Feltz Printing Service NEW6Bernardo Dominic
1038Kadeem H GauchoCanada2024-04-13Printing Dimensions RENEWAL73Bernardo Dominic
1039Francesco G MaletCanada2024-04-03Chapman, Ross E Esq QUALIFIED45Stephen Shaw
1040Silvio W StensethItaly2024-04-14Benton, John B Jr RENEWAL51Elwin Sharvill
1041Jefferson Y GlickFrance2024-05-01Feiner Bros RENEWAL36Elwin Sharvill
1042Misaki O ChuiItaly2024-04-15Feiner Bros UNQUALIFIED87Anna Fali
1043Maria I SlusarskiFrance2024-04-14Truhlar And Truhlar Attys QUALIFIED83Ivan Magalhaes
1044Antonio H IturbideUnited Kingdom2024-04-03Dorl, James J Esq RENEWAL79Bernardo Dominic
1045Cody X FigeroaUnited Kingdom2024-04-28Rangoni Of Florence NEGOTIATION16Elwin Sharvill
1046Maisha R PerinBrazil2024-04-16Commercial Press RENEWAL3Ioni Bowcher
1047Murillo Y GauchoRussia2024-04-26Chemel, James L Cpa NEW4Ivan Magalhaes
1048Aruna W KuskoIndia2024-04-29Rousseaux, Michael Esq RENEWAL10Xuxue Feng
1049Ricardo X KuskoRussia2024-04-23Buckley Miller Wright PROPOSAL64Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Costa A StensethCanadaOnyama Limba QUALIFIED
Francesco L StockhamCanadaAnna Fali NEGOTIATION
Ashley W FlosiSpainIvan Magalhaes NEGOTIATION
Isabel E AlbaresAustraliaStephen Shaw RENEWAL
Octavia Z OstroskyJapanAsiya Javayant NEW
James C StensethGermanyIoni Bowcher RENEWAL
Octavia O DoeGermanyIoni Bowcher PROPOSAL
Octavia A OstroskyArgentinaElwin Sharvill QUALIFIED
Izzy M BriddickBrazilIoni Bowcher UNQUALIFIED
Nicolas N CaldareraGermanyIvan Magalhaes NEGOTIATION
Johnson L NickaFranceAmy Elsner UNQUALIFIED
Aditya G RutaAustraliaIvan Magalhaes NEW
Costa Q RoysterCanadaOnyama Limba NEGOTIATION
Isabel M AlbaresCanadaAmy Elsner RENEWAL
Emily H DilliardUnited KingdomOnyama Limba QUALIFIED
Costa U BowleyBrazilBernardo Dominic NEGOTIATION
Johnson M GarufiJapanIvan Magalhaes PROPOSAL
Faith G BriddickCanadaStephen Shaw QUALIFIED
Misaki S NestleBrazilAmy Elsner QUALIFIED
Adams H RutaFranceElwin Sharvill UNQUALIFIED
Deepesh Z WhobreyAustraliaStephen Shaw UNQUALIFIED
Jennifer B BowleyFranceAmy Elsner UNQUALIFIED
Jennifer K WieserRussiaBernardo Dominic QUALIFIED
Jones M MorascaAustraliaElwin Sharvill NEGOTIATION
Nicolas C DilliardIndiaOnyama Limba QUALIFIED
Greenwood H PerinCanadaBernardo Dominic UNQUALIFIED
James D SaylorsSpainBernardo Dominic NEGOTIATION
Adams M StockhamArgentinaIvan Magalhaes UNQUALIFIED
Isabel V SchemmerIndiaIvan Magalhaes RENEWAL
Cody O AlbaresFranceBernardo Dominic RENEWAL
Izzy A DoeUnited KingdomXuxue Feng UNQUALIFIED
Arvin G MaletRussiaAnna Fali RENEWAL
Mujtaba G PerinBrazilIvan Magalhaes UNQUALIFIED
Isabel M MarrierFranceAmy Elsner PROPOSAL
Kaitlin S BowleyBrazilOnyama Limba NEW
Julie C SchemmerArgentinaIoni Bowcher PROPOSAL
Aika R RulapaughUnited KingdomBernardo Dominic NEGOTIATION
Arvin S NestleArgentinaAmy Elsner NEGOTIATION
Greenwood F MarrierIndiaElwin Sharvill PROPOSAL
Izzy R BriddickArgentinaBernardo Dominic NEW
Ashley R NestleGermanyAnna Fali PROPOSAL
Jefferson C GlickFranceAsiya Javayant NEGOTIATION
Leja A SaylorsSpainAnna Fali PROPOSAL
Isabel G NickaItalyIoni Bowcher QUALIFIED
Stacey Q NickaIndiaAsiya Javayant NEGOTIATION
Aika W MacleadSpainBernardo Dominic RENEWAL
Jennifer D BriddickAustraliaOnyama Limba PROPOSAL
Mayumi A ChuiAustraliaAnna Fali NEGOTIATION
Stacey U MacleadBrazilAsiya Javayant NEW
Francesco E InouyeAustraliaAsiya Javayant RENEWAL
Frozen Columns
Name
Aruna G Chui
Faith H Darakjy
Aruna W Slusarski
Adams T Tollner
Salvatore P Ostrosky
Leja G Stockham
Faith D Ruta
Aditya Z Butt
Nicolas R Caldarera
Maria T Darakjy
Kaitlin Z Garufi
Leon T Amigon
Misaki A Butt
Johnson F Poquette
Salvatore V Butt
Adams K Venere
Isabel J Venere
Izzy D Albares
Francesco I Schemmer
Darci C Malet
Rodrigues G Slusarski
Isabel L Royster
James I Bolognia
Francesco S Gaucho
Leja S Whobrey
Chavez M Perin
Salvatore N Ostrosky
Emily S Saylors
Faith S Malet
Ivar F Dilliard
Ricardo I Kusko
Murillo H Dilliard
Sinclair S Maclead
Darci C Saylors
Aruna X Kolmetz
Faith Y Royster
David U Butt
Stacey Y Sergi
Izzy R Kusko
Mayumi Y Saylors
Smith Y Marrier
Silvio Q Butt
Jeanfrancois G Figeroa
Cody U Gillian
Clifford S Tollner
Isabel W Perin
Tony I Butt
Kaitlin L Gaucho
Francesco V Inouye
Isabel B Oldroyd
IdCountryDate
1000Spain2024-05-02
1001Australia2024-04-27
1002Canada2024-04-08
1003Argentina2024-04-03
1004Canada2024-04-27
1005Italy2024-04-20
1006France2024-04-03
1007Germany2024-05-02
1008United Kingdom2024-04-29
1009Brazil2024-04-19
1010Spain2024-04-26
1011Australia2024-04-05
1012United Kingdom2024-04-25
1013France2024-04-16
1014United Kingdom2024-05-02
1015Germany2024-04-27
1016France2024-04-23
1017Germany2024-04-27
1018Spain2024-04-11
1019France2024-04-14
1020Germany2024-04-23
1021Germany2024-04-09
1022Argentina2024-04-27
1023Germany2024-04-07
1024Argentina2024-04-22
1025Germany2024-04-07
1026Canada2024-04-26
1027Japan2024-04-09
1028Spain2024-04-26
1029Germany2024-04-08
1030Australia2024-04-25
1031Argentina2024-05-02
1032Brazil2024-04-21
1033Spain2024-04-20
1034Spain2024-04-29
1035Italy2024-04-16
1036Japan2024-04-24
1037Brazil2024-04-15
1038United Kingdom2024-04-25
1039United Kingdom2024-04-14
1040Italy2024-04-27
1041Russia2024-04-07
1042Brazil2024-05-01
1043Italy2024-04-28
1044Japan2024-04-14
1045Italy2024-04-07
1046Australia2024-04-16
1047Spain2024-04-08
1048France2024-04-11
1049Canada2024-04-07

On-Demand Data

NameIdCountryDate
Octavia X Foller1000France2024-04-18
Salvatore K Royster1001Canada2024-04-14
Nicolas N Perin1002Argentina2024-04-27
Murillo Y Kusko1003Spain2024-05-02
Wickens X Figeroa1004Brazil2024-04-13
Claire T Nestle1005Italy2024-04-30
Ivar T Dilliard1006Russia2024-04-30
Kadeem B Inouye1007Canada2024-04-08
Stacey B Nestle1008Australia2024-05-01
Sinclair A Rim1009Brazil2024-04-03
Nicolas A Waycott1010Germany2024-04-06
Arvin Z Rim1011Russia2024-04-04
Antonio N Tollner1012Russia2024-04-29
Arvin D Glick1013Russia2024-04-14
Darci K Nicka1014Germany2024-05-01
Jones P Morasca1015Japan2024-05-02
Jennifer E Venere1016Brazil2024-04-21
Mayumi R Bolognia1017Japan2024-04-05
Chavez L Wieser1018France2024-04-28
James G Flosi1019Australia2024-04-09
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
David N TollnerCanadaAnna Fali NEGOTIATION
Aditya W GlickAustraliaAmy Elsner UNQUALIFIED
Alejandro B StockhamArgentinaIoni Bowcher QUALIFIED
Johnson Q TollnerJapanElwin Sharvill NEW
Aruna G GillianIndiaXuxue Feng QUALIFIED
Munro C RulapaughFranceBernardo Dominic RENEWAL
Darci G ButtUnited KingdomAmy Elsner PROPOSAL
Antonio D MaletCanadaStephen Shaw UNQUALIFIED
Octavia U WieserGermanyStephen Shaw NEW
Wickens B CaldareraIndiaOnyama Limba QUALIFIED
Stacey Q DarakjyIndiaXuxue Feng NEW
Ivar I StensethJapanIoni Bowcher PROPOSAL
Clifford K BriddickFranceAsiya Javayant NEW
Clifford L CaudyBrazilXuxue Feng UNQUALIFIED
Deepesh C GlickItalyXuxue Feng NEW
Claire Y DarakjyRussiaAmy Elsner NEGOTIATION
Aruna V MorascaAustraliaBernardo Dominic NEGOTIATION
Claire N FlosiFranceOnyama Limba UNQUALIFIED
Isabel L RutaIndiaAnna Fali PROPOSAL
Antonio T SaylorsJapanBernardo Dominic NEGOTIATION
Smith V InouyeFranceElwin Sharvill NEW
Chavez J InouyeRussiaStephen Shaw UNQUALIFIED
Nicolas H VocelkaJapanBernardo Dominic UNQUALIFIED
Izzy J SlusarskiIndiaAnna Fali NEGOTIATION
Kadeem J DilliardIndiaAmy Elsner QUALIFIED
Johnson V DarakjyFranceAnna Fali NEGOTIATION
Kadeem Q GillianRussiaAsiya Javayant NEW
Johnson S InouyeRussiaStephen Shaw QUALIFIED
Claire D GarufiArgentinaAsiya Javayant NEGOTIATION
Chavez K RoysterAustraliaBernardo Dominic UNQUALIFIED
Aika E DarakjyItalyIvan Magalhaes QUALIFIED
Murillo I MorascaFranceAsiya Javayant NEGOTIATION
Johnson F GauchoRussiaIvan Magalhaes QUALIFIED
Cody V SergiCanadaOnyama Limba QUALIFIED
Izzy L FigeroaGermanyElwin Sharvill NEGOTIATION
Greenwood W MorascaBrazilAnna Fali QUALIFIED
Silvio L WaycottUnited KingdomIvan Magalhaes UNQUALIFIED
Smith Q GarufiSpainIoni Bowcher PROPOSAL
Munro P ShinkoFranceAsiya Javayant QUALIFIED
Stacey J KuskoArgentinaAmy Elsner 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>