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
Greenwood F RimUnited KingdomAsiya Javayant NEGOTIATION
Julie S CaudyGermanyIoni Bowcher UNQUALIFIED
Arvin N RulapaughSpainAnna Fali NEGOTIATION
Chavez Q AlbaresAustraliaIvan Magalhaes QUALIFIED
Tony U BriddickUnited KingdomStephen Shaw UNQUALIFIED
Izzy L AlbaresIndiaAnna Fali RENEWAL
Antonio A VenereCanadaBernardo Dominic UNQUALIFIED
Aruna Z BriddickGermanyIoni Bowcher UNQUALIFIED
Clifford Z FerenczBrazilAmy Elsner NEGOTIATION
Jefferson B DilliardSpainAnna Fali NEGOTIATION
Silvio V MaletCanadaIvan Magalhaes NEW
Adams U SergiFranceAnna Fali RENEWAL
Maisha R PaprockiIndiaBernardo Dominic PROPOSAL
Kaitlin T SlusarskiUnited KingdomBernardo Dominic NEW
Ashley J StockhamItalyIvan Magalhaes PROPOSAL
Kadeem U RulapaughSpainStephen Shaw QUALIFIED
Adams L OstroskyJapanBernardo Dominic PROPOSAL
Chavez T NickaGermanyIoni Bowcher PROPOSAL
Emily B DoeArgentinaAmy Elsner RENEWAL
Jones T WhobreyUnited KingdomStephen Shaw NEGOTIATION
Darci I NickaCanadaOnyama Limba NEW
Rodrigues M WieserRussiaAmy Elsner NEGOTIATION
Costa V OldroydItalyAmy Elsner UNQUALIFIED
Cody S AlbaresGermanyAmy Elsner PROPOSAL
Misaki V SaylorsJapanAsiya Javayant NEGOTIATION
Kadeem Y CaldareraAustraliaIvan Magalhaes QUALIFIED
Jefferson S MaletRussiaAsiya Javayant NEGOTIATION
Kadeem D MorascaArgentinaElwin Sharvill RENEWAL
Arvin L VenereCanadaElwin Sharvill QUALIFIED
Leja B SaylorsArgentinaElwin Sharvill NEGOTIATION
Aruna B ButtFranceAnna Fali QUALIFIED
Deepesh V ShinkoGermanyAnna Fali UNQUALIFIED
Murillo Q PaprockiUnited KingdomElwin Sharvill UNQUALIFIED
Rodrigues L InouyeRussiaAsiya Javayant NEW
Juan U OldroydArgentinaAmy Elsner NEW
Rodrigues B PerinAustraliaBernardo Dominic QUALIFIED
Faith F ButtArgentinaBernardo Dominic PROPOSAL
Mujtaba D MorascaSpainXuxue Feng RENEWAL
Munro N SchemmerAustraliaBernardo Dominic PROPOSAL
Silvio O DilliardAustraliaStephen Shaw NEW
Deepesh Z FerenczSpainXuxue Feng QUALIFIED
Jefferson C DarakjyGermanyIvan Magalhaes UNQUALIFIED
Claire W GauchoAustraliaXuxue Feng RENEWAL
Silvio I RimBrazilBernardo Dominic RENEWAL
Jeanfrancois I PaprockiSpainAsiya Javayant PROPOSAL
Mayumi U MaletAustraliaAsiya Javayant RENEWAL
Cody U KuskoJapanAsiya Javayant NEW
Kadeem C TollnerRussiaStephen Shaw UNQUALIFIED
Antonio O GlickIndiaElwin Sharvill QUALIFIED
Antonio U FollerUnited KingdomAmy Elsner NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Johnson W ShinkoIndiaAnna Fali UNQUALIFIED
Deepesh S MaletItalyOnyama Limba RENEWAL
Aika F NickaAustraliaAnna Fali UNQUALIFIED
Kaitlin Y TollnerSpainIvan Magalhaes RENEWAL
Johnson N GillianGermanyIvan Magalhaes RENEWAL
Isabel F OstroskyItalyAsiya Javayant NEW
Munro S BologniaUnited KingdomElwin Sharvill NEW
Adams F PoquetteGermanyStephen Shaw NEGOTIATION
Leja D TollnerGermanyIoni Bowcher UNQUALIFIED
Darci B PaprockiCanadaIvan Magalhaes NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio U SergiFrance2024-04-25Printing Dimensions PROPOSAL35Xuxue Feng
1001Adams L StensethIndia2024-04-29Printing Dimensions RENEWAL79Anna Fali
1002Jones G RulapaughFrance2024-04-04Feiner Bros NEGOTIATION38Asiya Javayant
1003Tony M VocelkaRussia2024-04-23Feltz Printing Service PROPOSAL85Bernardo Dominic
1004Kadeem T VenereArgentina2024-04-05Printing Dimensions RENEWAL63Ioni Bowcher
1005Smith R TollnerArgentina2024-04-26Chemel, James L Cpa QUALIFIED37Asiya Javayant
1006Clifford N MaletIndia2024-04-26Chapman, Ross E Esq UNQUALIFIED7Bernardo Dominic
1007Maria H ButtFrance2024-04-30Feltz Printing Service RENEWAL24Elwin Sharvill
1008Izzy L BologniaJapan2024-04-18Morlong Associates NEGOTIATION84Stephen Shaw
1009Octavia I AmigonBrazil2024-04-28Feiner Bros PROPOSAL35Bernardo Dominic
1010Emily Y GauchoGermany2024-04-07Chemel, James L Cpa UNQUALIFIED42Onyama Limba
1011Mayumi I NestleFrance2024-04-16King, Christopher A Esq QUALIFIED39Stephen Shaw
1012Julie R MaletBrazil2024-04-20Commercial Press QUALIFIED39Anna Fali
1013Costa C ShinkoGermany2024-04-05Rangoni Of Florence RENEWAL95Onyama Limba
1014Maisha U ShinkoIndia2024-04-04Dorl, James J Esq RENEWAL19Ioni Bowcher
1015Kaitlin T FollerArgentina2024-04-09Dorl, James J Esq PROPOSAL82Stephen Shaw
1016Aruna D BologniaJapan2024-04-12Benton, John B Jr NEGOTIATION80Anna Fali
1017Costa L GarufiSpain2024-04-22Feltz Printing Service NEGOTIATION50Ioni Bowcher
1018Rodrigues J PaprockiIndia2024-04-03King, Christopher A Esq PROPOSAL39Bernardo Dominic
1019Jeanfrancois A RoysterSpain2024-04-08King, Christopher A Esq UNQUALIFIED9Amy Elsner
1020Francesco C PoquetteAustralia2024-04-18Chemel, James L Cpa NEGOTIATION43Bernardo Dominic
1021Morrow M DilliardSpain2024-04-16Chemel, James L Cpa UNQUALIFIED72Amy Elsner
1022Cody L CaldareraSpain2024-04-28Truhlar And Truhlar Attys PROPOSAL83Stephen Shaw
1023Munro L StockhamBrazil2024-04-26Chanay, Jeffrey A Esq RENEWAL54Ivan Magalhaes
1024Jeanfrancois D MaletFrance2024-04-03Chanay, Jeffrey A Esq RENEWAL62Stephen Shaw
1025Octavia A OstroskyIndia2024-04-04Benton, John B Jr NEW84Onyama Limba
1026Mujtaba K NickaUnited Kingdom2024-04-12Truhlar And Truhlar Attys UNQUALIFIED7Xuxue Feng
1027Octavia B MaletAustralia2024-05-01Truhlar And Truhlar Attys QUALIFIED38Onyama Limba
1028Leja C CaldareraRussia2024-04-24Buckley Miller Wright RENEWAL87Amy Elsner
1029Ricardo Z PerinUnited Kingdom2024-04-29Truhlar And Truhlar Attys UNQUALIFIED38Onyama Limba
1030Adams V InouyeItaly2024-04-19Feltz Printing Service UNQUALIFIED28Xuxue Feng
1031Claire Z TollnerArgentina2024-04-17Truhlar And Truhlar Attys QUALIFIED37Anna Fali
1032Sinclair K MaletAustralia2024-04-23Dorl, James J Esq NEGOTIATION26Ivan Magalhaes
1033Costa X MacleadAustralia2024-04-19Chapman, Ross E Esq NEW67Xuxue Feng
1034Tony M ButtIndia2024-04-29Truhlar And Truhlar Attys NEGOTIATION58Xuxue Feng
1035Juan V ButtJapan2024-04-19Feltz Printing Service NEGOTIATION6Bernardo Dominic
1036Murillo D FigeroaAustralia2024-04-29Feiner Bros NEGOTIATION30Asiya Javayant
1037Deepesh W VenereGermany2024-04-02King, Christopher A Esq UNQUALIFIED91Stephen Shaw
1038Aika N TollnerSpain2024-04-10Printing Dimensions RENEWAL49Bernardo Dominic
1039Leja C OstroskyItaly2024-04-15Chanay, Jeffrey A Esq NEW28Amy Elsner
1040James I BowleyUnited Kingdom2024-04-23Chapman, Ross E Esq QUALIFIED85Ioni Bowcher
1041Costa C WieserCanada2024-04-18Chapman, Ross E Esq NEGOTIATION12Bernardo Dominic
1042Jennifer D SchemmerCanada2024-04-27Chanay, Jeffrey A Esq RENEWAL20Ioni Bowcher
1043Greenwood Z BologniaJapan2024-04-05Chemel, James L Cpa PROPOSAL48Ioni Bowcher
1044Deepesh H MacleadRussia2024-04-26Truhlar And Truhlar Attys QUALIFIED25Ivan Magalhaes
1045Claire D MacleadJapan2024-04-22Chemel, James L Cpa NEGOTIATION59Xuxue Feng
1046Aika L CaldareraBrazil2024-04-03Feltz Printing Service UNQUALIFIED77Elwin Sharvill
1047Morrow O WhobreyUnited Kingdom2024-04-18Commercial Press NEW51Onyama Limba
1048Izzy Z WaycottRussia2024-04-02Morlong Associates NEGOTIATION89Stephen Shaw
1049Claire L RutaGermany2024-04-26Chemel, James L Cpa NEW15Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Faith J RoysterItalyXuxue Feng PROPOSAL
Antonio Y InouyeCanadaStephen Shaw RENEWAL
Arvin V MacleadItalyAnna Fali PROPOSAL
Octavia E MaletJapanAmy Elsner UNQUALIFIED
Chavez K CampainCanadaBernardo Dominic PROPOSAL
Adams M MaletUnited KingdomStephen Shaw NEW
Jones B IturbideJapanXuxue Feng NEW
Faith H ShinkoItalyXuxue Feng QUALIFIED
Kadeem G VenereAustraliaAmy Elsner UNQUALIFIED
Jeanfrancois T DilliardFranceIvan Magalhaes PROPOSAL
Wickens W PerinArgentinaBernardo Dominic RENEWAL
Munro N ButtArgentinaElwin Sharvill UNQUALIFIED
Leon I FollerAustraliaStephen Shaw NEW
Faith M MaletSpainAnna Fali UNQUALIFIED
Salvatore A AmigonBrazilIvan Magalhaes PROPOSAL
Johnson H SchemmerCanadaOnyama Limba NEGOTIATION
Isabel M ButtSpainElwin Sharvill PROPOSAL
Morrow L VocelkaItalyAsiya Javayant NEW
Izzy T DoeGermanyAsiya Javayant NEGOTIATION
Wickens C FerenczSpainBernardo Dominic NEW
Cody C VenereGermanyIoni Bowcher RENEWAL
Stacey X FerenczSpainXuxue Feng UNQUALIFIED
Costa U GauchoGermanyAmy Elsner PROPOSAL
Kaitlin Q PaprockiSpainStephen Shaw UNQUALIFIED
Smith O MarrierAustraliaOnyama Limba QUALIFIED
Izzy W StensethCanadaAsiya Javayant QUALIFIED
Izzy D WieserGermanyBernardo Dominic NEGOTIATION
Mayumi F BologniaBrazilOnyama Limba RENEWAL
Antonio V ButtIndiaAmy Elsner UNQUALIFIED
Ivar D FlosiArgentinaElwin Sharvill PROPOSAL
Deepesh P FerenczJapanElwin Sharvill RENEWAL
Rodrigues U IturbideFranceAmy Elsner RENEWAL
Morrow Y VocelkaUnited KingdomIoni Bowcher UNQUALIFIED
Misaki M SchemmerItalyIoni Bowcher PROPOSAL
Salvatore Y DarakjyRussiaIoni Bowcher NEGOTIATION
Faith X FollerFranceAnna Fali QUALIFIED
Maria R RutaArgentinaIvan Magalhaes QUALIFIED
Aditya T GlickFranceAmy Elsner RENEWAL
Clifford D ChuiAustraliaOnyama Limba NEGOTIATION
Octavia G FerenczSpainXuxue Feng QUALIFIED
Izzy T MaletRussiaStephen Shaw UNQUALIFIED
Tony R PerinBrazilBernardo Dominic PROPOSAL
Clifford J WaycottFranceElwin Sharvill UNQUALIFIED
Maria I WieserFranceBernardo Dominic NEGOTIATION
Claire V CaudyCanadaOnyama Limba RENEWAL
Jennifer A FerenczJapanIvan Magalhaes RENEWAL
Claire K FlosiSpainAnna Fali UNQUALIFIED
Aruna G NestleIndiaElwin Sharvill RENEWAL
Darci X KuskoItalyOnyama Limba PROPOSAL
Tony K MarrierJapanAmy Elsner NEW
Frozen Columns
Name
Maisha T Waycott
Aditya S Foller
Jennifer P Paprocki
Kadeem P Flosi
Stacey J Albares
Misaki O Briddick
Aruna M Nestle
Aruna W Malet
Juan H Waycott
Costa Y Albares
Jones Z Bowley
Leon H Darakjy
Maisha Y Tollner
David G Rim
Murillo E Saylors
Maisha N Waycott
Jeanfrancois N Stenseth
Leja R Wieser
Deepesh G Bowley
Johnson T Dilliard
Emily O Gaucho
Juan W Garufi
Juan T Amigon
Salvatore H Ostrosky
Octavia A Royster
Faith A Malet
Mujtaba R Nicka
Misaki K Foller
Wickens G Foller
Munro I Venere
Aditya K Campain
Morrow P Vocelka
Adams E Malet
Sinclair H Malet
Kadeem U Albares
Tony N Nicka
Silvio M Poquette
Kadeem F Briddick
Tony B Iturbide
Munro U Inouye
Isabel I Kolmetz
Leon O Rulapaugh
Faith D Perin
Sinclair Z Tollner
David A Oldroyd
Izzy Q Waycott
Aika Z Rim
Johnson H Bowley
Rodrigues Y Ostrosky
Stacey C Rim
IdCountryDate
1000Canada2024-04-09
1001Russia2024-04-22
1002Japan2024-04-14
1003Spain2024-04-07
1004Russia2024-04-24
1005India2024-04-22
1006Canada2024-04-14
1007Canada2024-04-14
1008Germany2024-04-03
1009Japan2024-04-08
1010Japan2024-04-18
1011Japan2024-04-21
1012Argentina2024-04-20
1013India2024-04-06
1014India2024-04-18
1015Canada2024-04-02
1016Spain2024-04-07
1017United Kingdom2024-04-12
1018India2024-04-16
1019Spain2024-04-27
1020Germany2024-04-13
1021Argentina2024-04-15
1022Russia2024-04-21
1023Japan2024-04-17
1024Argentina2024-04-13
1025Germany2024-04-27
1026Canada2024-04-28
1027Russia2024-04-19
1028Canada2024-04-19
1029Argentina2024-04-15
1030Brazil2024-04-05
1031Japan2024-04-02
1032Italy2024-04-09
1033Argentina2024-04-26
1034Australia2024-04-14
1035Italy2024-04-03
1036Brazil2024-04-04
1037Canada2024-04-10
1038Brazil2024-04-17
1039India2024-04-26
1040Spain2024-04-22
1041Australia2024-04-17
1042Spain2024-04-22
1043Italy2024-04-23
1044Australia2024-04-27
1045Russia2024-04-11
1046Australia2024-04-30
1047Canada2024-04-02
1048Russia2024-04-22
1049Brazil2024-04-10

On-Demand Data

NameIdCountryDate
Maisha T Bowley1000United Kingdom2024-05-01
Rodrigues E Stockham1001Russia2024-04-12
Kaitlin S Saylors1002United Kingdom2024-04-17
Darci U Bolognia1003Italy2024-04-30
Mayumi Z Chui1004Australia2024-04-28
Munro F Perin1005Argentina2024-04-22
Julie R Saylors1006Japan2024-04-02
Costa B Saylors1007Spain2024-04-21
Greenwood J Paprocki1008Canada2024-04-19
Leon R Bolognia1009Japan2024-04-05
Maria K Caudy1010France2024-04-25
Francesco F Gillian1011Russia2024-04-07
Juan L Gillian1012Argentina2024-04-23
Greenwood S Paprocki1013Spain2024-04-26
Mujtaba X Saylors1014Russia2024-04-12
Francesco A Schemmer1015Spain2024-04-22
Smith E Gaucho1016Japan2024-04-28
Mujtaba C Kolmetz1017Japan2024-04-16
Octavia T Saylors1018Russia2024-04-24
Mayumi J Caudy1019Germany2024-04-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maria V MarrierGermanyAsiya Javayant NEGOTIATION
Murillo B MorascaUnited KingdomIoni Bowcher PROPOSAL
Tony T TollnerFranceAmy Elsner NEW
Octavia R NickaRussiaStephen Shaw UNQUALIFIED
Kaitlin E DilliardAustraliaAmy Elsner RENEWAL
Costa P AlbaresIndiaAsiya Javayant QUALIFIED
Darci E DilliardFranceElwin Sharvill NEGOTIATION
Octavia Z VenereRussiaXuxue Feng NEGOTIATION
Faith Z SlusarskiJapanIvan Magalhaes UNQUALIFIED
David A IturbideGermanyOnyama Limba QUALIFIED
Faith V AlbaresUnited KingdomElwin Sharvill NEGOTIATION
Sinclair E MorascaIndiaStephen Shaw PROPOSAL
Ricardo X DarakjyCanadaOnyama Limba NEGOTIATION
Antonio X WaycottIndiaAsiya Javayant UNQUALIFIED
Stacey P ShinkoBrazilIvan Magalhaes NEGOTIATION
Cody N DarakjyCanadaXuxue Feng QUALIFIED
Nicolas Y PerinRussiaAsiya Javayant QUALIFIED
Smith Z KuskoUnited KingdomAnna Fali NEW
Aditya C CaldareraCanadaAsiya Javayant PROPOSAL
Octavia X NestleRussiaStephen Shaw RENEWAL
David N InouyeArgentinaIvan Magalhaes PROPOSAL
Claire O KolmetzJapanBernardo Dominic UNQUALIFIED
Johnson I BologniaIndiaOnyama Limba NEW
Francesco U MarrierIndiaXuxue Feng QUALIFIED
David T GauchoBrazilAsiya Javayant RENEWAL
Cody W RutaAustraliaIvan Magalhaes PROPOSAL
Ricardo T AlbaresAustraliaIvan Magalhaes UNQUALIFIED
Kadeem X MorascaUnited KingdomElwin Sharvill NEGOTIATION
Silvio J MacleadAustraliaXuxue Feng RENEWAL
Ivar H SergiBrazilXuxue Feng PROPOSAL
Faith B BologniaBrazilAsiya Javayant PROPOSAL
Costa C PerinUnited KingdomIoni Bowcher QUALIFIED
Mujtaba M GarufiAustraliaAsiya Javayant QUALIFIED
David N StensethUnited KingdomAmy Elsner UNQUALIFIED
Jones V PoquetteFranceXuxue Feng UNQUALIFIED
Stacey E VocelkaArgentinaOnyama Limba NEGOTIATION
Jones R ButtFranceIoni Bowcher NEGOTIATION
Silvio X NickaJapanXuxue Feng NEW
Arvin Z MacleadSpainAsiya Javayant QUALIFIED
Alejandro B SaylorsFranceIvan Magalhaes 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>