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
Clifford R AlbaresCanadaAmy Elsner PROPOSAL
Murillo I InouyeAustraliaAmy Elsner PROPOSAL
Greenwood P GarufiAustraliaOnyama Limba RENEWAL
Stacey G WhobreyCanadaIvan Magalhaes UNQUALIFIED
Deepesh K SlusarskiJapanElwin Sharvill RENEWAL
Aruna U DarakjySpainStephen Shaw QUALIFIED
Stacey F RulapaughCanadaStephen Shaw UNQUALIFIED
Leja T OstroskyIndiaAsiya Javayant NEW
Jeanfrancois Q ChuiArgentinaElwin Sharvill UNQUALIFIED
Smith I WaycottCanadaStephen Shaw NEGOTIATION
Alejandro E GlickGermanyIoni Bowcher PROPOSAL
Juan T CaldareraArgentinaStephen Shaw NEGOTIATION
Jones S WaycottRussiaXuxue Feng NEGOTIATION
Arvin Q BowleyItalyBernardo Dominic PROPOSAL
Ashley I ShinkoArgentinaIvan Magalhaes RENEWAL
James P FigeroaRussiaAsiya Javayant UNQUALIFIED
Maisha R StensethItalyAnna Fali RENEWAL
Misaki N FigeroaJapanAsiya Javayant PROPOSAL
Munro K WhobreyItalyOnyama Limba NEGOTIATION
Francesco E DarakjyFranceAsiya Javayant QUALIFIED
Kaitlin H BologniaUnited KingdomXuxue Feng NEGOTIATION
Nicolas A ShinkoIndiaStephen Shaw RENEWAL
James G VocelkaUnited KingdomXuxue Feng UNQUALIFIED
Wickens N RoysterAustraliaBernardo Dominic QUALIFIED
Darci X FollerAustraliaAsiya Javayant PROPOSAL
Kaitlin N DilliardUnited KingdomIoni Bowcher RENEWAL
Munro O WieserCanadaAsiya Javayant NEW
Juan L GarufiUnited KingdomIvan Magalhaes PROPOSAL
Maisha G CaudyIndiaAnna Fali NEW
Cody W MaletItalyElwin Sharvill PROPOSAL
Ivar H ShinkoIndiaIoni Bowcher NEGOTIATION
Sinclair O WhobreyGermanyStephen Shaw RENEWAL
Juan H SaylorsItalyIvan Magalhaes PROPOSAL
Julie Z VenereAustraliaElwin Sharvill NEW
Julie F WaycottGermanyAsiya Javayant RENEWAL
Leja K FigeroaRussiaAsiya Javayant NEGOTIATION
Jennifer M RulapaughFranceIvan Magalhaes QUALIFIED
Kadeem B IturbideItalyStephen Shaw NEGOTIATION
Greenwood E FlosiCanadaXuxue Feng UNQUALIFIED
Clifford Y AlbaresJapanAnna Fali PROPOSAL
Darci K SaylorsJapanStephen Shaw QUALIFIED
Johnson E StensethFranceIvan Magalhaes QUALIFIED
Claire B MarrierUnited KingdomIvan Magalhaes UNQUALIFIED
Julie A SchemmerUnited KingdomXuxue Feng UNQUALIFIED
Claire Q KolmetzRussiaOnyama Limba UNQUALIFIED
Costa K FlosiJapanAmy Elsner QUALIFIED
Stacey I ChuiJapanAsiya Javayant NEGOTIATION
Adams U OldroydSpainIoni Bowcher NEGOTIATION
Jefferson B AlbaresFranceElwin Sharvill NEGOTIATION
Sinclair S IturbideUnited KingdomAnna Fali UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Jefferson O OldroydGermanyAsiya Javayant UNQUALIFIED
Smith V ChuiCanadaAsiya Javayant PROPOSAL
Johnson Z MaletIndiaStephen Shaw QUALIFIED
Jennifer L KuskoIndiaBernardo Dominic NEGOTIATION
Munro U FigeroaSpainAnna Fali QUALIFIED
Kadeem S DoeAustraliaBernardo Dominic PROPOSAL
Salvatore C FerenczAustraliaXuxue Feng NEGOTIATION
Antonio I PerinBrazilStephen Shaw NEGOTIATION
Julie Q VocelkaUnited KingdomElwin Sharvill NEGOTIATION
Maria S AlbaresJapanOnyama Limba RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Faith J FollerJapan2024-03-31Rangoni Of Florence NEGOTIATION87Amy Elsner
1001Faith U MaletSpain2024-03-26Rousseaux, Michael Esq PROPOSAL92Bernardo Dominic
1002Costa U PerinAustralia2024-03-27Truhlar And Truhlar Attys UNQUALIFIED95Stephen Shaw
1003Darci Q CaudyJapan2024-04-08King, Christopher A Esq QUALIFIED22Amy Elsner
1004Izzy E DilliardGermany2024-04-04Chapman, Ross E Esq NEGOTIATION72Stephen Shaw
1005Jennifer X SchemmerArgentina2024-04-17Chapman, Ross E Esq RENEWAL56Ioni Bowcher
1006Adams S RimIndia2024-03-31Benton, John B Jr RENEWAL80Ivan Magalhaes
1007David B TollnerItaly2024-04-03Printing Dimensions QUALIFIED43Amy Elsner
1008Darci P KolmetzFrance2024-04-21Buckley Miller Wright RENEWAL47Stephen Shaw
1009Aditya C DilliardAustralia2024-04-17Chanay, Jeffrey A Esq UNQUALIFIED93Bernardo Dominic
1010Salvatore D RulapaughSpain2024-03-25Rousseaux, Michael Esq QUALIFIED20Xuxue Feng
1011Greenwood A IturbideArgentina2024-04-03King, Christopher A Esq UNQUALIFIED91Anna Fali
1012Antonio S CaldareraBrazil2024-04-14Morlong Associates RENEWAL30Xuxue Feng
1013Alejandro B OstroskyFrance2024-04-10Feltz Printing Service RENEWAL33Ioni Bowcher
1014Mujtaba P FollerFrance2024-04-19King, Christopher A Esq QUALIFIED18Ioni Bowcher
1015Darci F FigeroaSpain2024-04-21Printing Dimensions RENEWAL15Asiya Javayant
1016Jones G InouyeSpain2024-03-30Feiner Bros RENEWAL15Onyama Limba
1017Stacey M MacleadGermany2024-04-01Truhlar And Truhlar Attys PROPOSAL35Anna Fali
1018Misaki G MarrierIndia2024-03-25Buckley Miller Wright NEW3Anna Fali
1019Clifford X ButtItaly2024-04-02Commercial Press RENEWAL81Asiya Javayant
1020Aruna I GillianArgentina2024-04-12Rousseaux, Michael Esq RENEWAL8Anna Fali
1021Rodrigues M RoysterUnited Kingdom2024-04-22King, Christopher A Esq QUALIFIED62Bernardo Dominic
1022Sinclair F SlusarskiFrance2024-04-17Dorl, James J Esq NEW43Elwin Sharvill
1023Murillo Y RulapaughRussia2024-04-06Dorl, James J Esq NEW46Stephen Shaw
1024Chavez Q StensethIndia2024-04-06Chemel, James L Cpa RENEWAL21Asiya Javayant
1025Mayumi U WhobreyRussia2024-03-29Chemel, James L Cpa QUALIFIED89Ivan Magalhaes
1026Chavez U GlickUnited Kingdom2024-04-12Printing Dimensions RENEWAL50Ioni Bowcher
1027Nicolas C DarakjyBrazil2024-04-04Dorl, James J Esq NEGOTIATION6Elwin Sharvill
1028Leja B CampainItaly2024-04-20Buckley Miller Wright PROPOSAL10Stephen Shaw
1029Leon W FigeroaFrance2024-04-09Truhlar And Truhlar Attys QUALIFIED46Onyama Limba
1030Faith D RutaItaly2024-04-17King, Christopher A Esq RENEWAL28Amy Elsner
1031Leja H FollerGermany2024-03-27Dorl, James J Esq UNQUALIFIED56Stephen Shaw
1032Morrow M NickaSpain2024-04-05Commercial Press QUALIFIED11Anna Fali
1033Kadeem Q TollnerFrance2024-04-23Chemel, James L Cpa NEGOTIATION27Ivan Magalhaes
1034Kadeem W TollnerAustralia2024-04-09Commercial Press PROPOSAL36Onyama Limba
1035Nicolas X MacleadArgentina2024-04-18Feiner Bros PROPOSAL11Amy Elsner
1036Leon C ButtItaly2024-04-06Chemel, James L Cpa NEGOTIATION62Stephen Shaw
1037Silvio I FerenczGermany2024-04-14Chapman, Ross E Esq UNQUALIFIED26Anna Fali
1038Jones R PerinArgentina2024-04-02Dorl, James J Esq QUALIFIED35Bernardo Dominic
1039Smith G SergiCanada2024-04-21Dorl, James J Esq NEGOTIATION79Stephen Shaw
1040Johnson V FollerRussia2024-04-06Dorl, James J Esq RENEWAL15Amy Elsner
1041Aika P NestleCanada2024-04-14Rousseaux, Michael Esq UNQUALIFIED11Stephen Shaw
1042Alejandro B FollerBrazil2024-04-14Chemel, James L Cpa UNQUALIFIED7Stephen Shaw
1043Cody B BowleySpain2024-04-23Buckley Miller Wright RENEWAL79Bernardo Dominic
1044Julie X FlosiAustralia2024-04-12Rangoni Of Florence QUALIFIED49Onyama Limba
1045Aika R StensethGermany2024-04-20Rangoni Of Florence NEW59Elwin Sharvill
1046Izzy A SchemmerJapan2024-04-14King, Christopher A Esq RENEWAL29Xuxue Feng
1047Murillo R CampainArgentina2024-04-01Dorl, James J Esq QUALIFIED96Asiya Javayant
1048Ashley J SlusarskiCanada2024-03-25Chanay, Jeffrey A Esq PROPOSAL52Stephen Shaw
1049Johnson P GillianSpain2024-03-25Chapman, Ross E Esq NEGOTIATION41Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
David S MaletAustraliaAnna Fali PROPOSAL
Maisha Q WaycottBrazilIvan Magalhaes NEW
Jeanfrancois A WhobreyIndiaElwin Sharvill UNQUALIFIED
Wickens O OstroskyFranceStephen Shaw PROPOSAL
Deepesh G GillianAustraliaIoni Bowcher RENEWAL
Alejandro H OstroskyUnited KingdomStephen Shaw QUALIFIED
Leon P DilliardUnited KingdomAnna Fali NEW
Salvatore D FlosiCanadaElwin Sharvill QUALIFIED
Ashley N PerinIndiaBernardo Dominic RENEWAL
Emily N DarakjyArgentinaAsiya Javayant QUALIFIED
Izzy G CaldareraIndiaIvan Magalhaes UNQUALIFIED
Wickens D SaylorsAustraliaIoni Bowcher PROPOSAL
Cody P VenereRussiaElwin Sharvill RENEWAL
Jennifer C OldroydJapanOnyama Limba UNQUALIFIED
David K GlickGermanyXuxue Feng UNQUALIFIED
David J MacleadUnited KingdomAmy Elsner UNQUALIFIED
David H BriddickItalyElwin Sharvill PROPOSAL
Alejandro F RoysterCanadaAmy Elsner QUALIFIED
Arvin D BowleyGermanyAmy Elsner NEGOTIATION
Chavez W BologniaArgentinaOnyama Limba UNQUALIFIED
Jefferson U MaletItalyBernardo Dominic NEGOTIATION
Arvin F CaudyRussiaIvan Magalhaes NEW
Stacey Q MacleadAustraliaBernardo Dominic UNQUALIFIED
Kaitlin F PaprockiCanadaOnyama Limba NEGOTIATION
Isabel U VenereJapanIvan Magalhaes NEGOTIATION
Wickens L BowleyBrazilBernardo Dominic UNQUALIFIED
Morrow Q DarakjyArgentinaAnna Fali NEW
Jefferson E RulapaughGermanyAsiya Javayant PROPOSAL
Morrow H OstroskyIndiaAmy Elsner NEGOTIATION
Ivar D RimIndiaBernardo Dominic PROPOSAL
Leja B GauchoIndiaOnyama Limba QUALIFIED
Emily Q VocelkaArgentinaAnna Fali QUALIFIED
Alejandro N AlbaresAustraliaAsiya Javayant QUALIFIED
Sinclair G FerenczIndiaBernardo Dominic RENEWAL
Costa B OldroydCanadaOnyama Limba UNQUALIFIED
Johnson Y DoeCanadaBernardo Dominic RENEWAL
Octavia S WhobreyItalyBernardo Dominic QUALIFIED
James H MaletGermanyBernardo Dominic NEGOTIATION
Mayumi L StockhamArgentinaStephen Shaw NEW
Aika N KolmetzIndiaAmy Elsner PROPOSAL
James E OldroydGermanyAnna Fali RENEWAL
Mujtaba W KolmetzFranceAnna Fali QUALIFIED
Mujtaba U PerinFranceIoni Bowcher NEGOTIATION
Morrow M KolmetzArgentinaAnna Fali UNQUALIFIED
Leon B GauchoIndiaXuxue Feng QUALIFIED
Rodrigues S BriddickGermanyAmy Elsner UNQUALIFIED
Izzy J SaylorsAustraliaBernardo Dominic NEW
Jeanfrancois E FigeroaItalyBernardo Dominic NEW
Jones A MacleadFranceXuxue Feng UNQUALIFIED
Faith Y FlosiArgentinaIvan Magalhaes NEW
Frozen Columns
Name
Leon K Poquette
Kadeem K Paprocki
James P Darakjy
Morrow S Gaucho
Jefferson M Caldarera
Jefferson G Dilliard
Misaki N Saylors
Wickens A Malet
Arvin N Amigon
Juan J Figeroa
James T Figeroa
Faith S Caudy
Ashley Y Bolognia
Alejandro J Figeroa
Deepesh J Amigon
Maisha I Whobrey
Jennifer D Waycott
Isabel C Briddick
Kaitlin K Marrier
Sinclair K Caudy
Jones Q Kolmetz
Costa I Flosi
Maisha X Dilliard
Sinclair C Shinko
Smith H Shinko
Emily J Marrier
Maria C Glick
Cody Z Glick
Kadeem B Campain
Faith O Garufi
Adams V Caldarera
Francesco N Inouye
Kaitlin M Malet
Faith F Vocelka
Faith W Figeroa
Stacey V Poquette
Mujtaba D Bowley
Leja Z Caudy
Leja I Paprocki
Chavez X Flosi
Claire Z Briddick
Chavez W Maclead
Johnson Q Morasca
Stacey Z Poquette
Rodrigues B Sergi
Morrow D Kolmetz
Salvatore U Albares
Juan H Briddick
Ricardo J Maclead
James H Slusarski
IdCountryDate
1000Canada2024-03-26
1001France2024-04-02
1002United Kingdom2024-04-01
1003Argentina2024-04-03
1004Brazil2024-04-09
1005Japan2024-04-06
1006Argentina2024-04-07
1007Canada2024-03-27
1008Italy2024-04-13
1009Canada2024-03-25
1010Germany2024-03-30
1011France2024-04-19
1012Russia2024-04-11
1013Australia2024-04-17
1014Australia2024-04-20
1015Australia2024-04-19
1016Australia2024-03-27
1017France2024-04-08
1018Japan2024-03-25
1019Argentina2024-04-13
1020Canada2024-04-19
1021Argentina2024-04-04
1022Brazil2024-04-01
1023Russia2024-04-04
1024Brazil2024-04-09
1025India2024-04-07
1026Japan2024-04-10
1027Brazil2024-04-22
1028Spain2024-03-28
1029Spain2024-03-27
1030Japan2024-04-09
1031Australia2024-04-19
1032Brazil2024-04-13
1033Argentina2024-04-08
1034Brazil2024-03-27
1035India2024-04-14
1036Argentina2024-04-07
1037United Kingdom2024-04-14
1038Russia2024-04-05
1039Canada2024-04-15
1040India2024-03-30
1041France2024-04-04
1042Brazil2024-03-28
1043Russia2024-04-23
1044India2024-04-11
1045Australia2024-04-03
1046France2024-04-14
1047Russia2024-04-19
1048Italy2024-03-29
1049France2024-04-17

On-Demand Data

NameIdCountryDate
Jones E Briddick1000India2024-04-12
Juan S Dilliard1001Japan2024-04-04
Misaki F Ferencz1002Canada2024-04-10
Smith K Royster1003India2024-04-15
Tony R Chui1004Germany2024-03-28
Stacey V Slusarski1005Brazil2024-04-23
Johnson L Ostrosky1006Japan2024-03-31
Cody O Gillian1007Canada2024-04-05
Cody W Butt1008United Kingdom2024-03-31
Octavia L Caldarera1009Spain2024-04-12
Faith O Stenseth1010United Kingdom2024-04-18
Kaitlin B Inouye1011Germany2024-04-04
Isabel U Oldroyd1012Canada2024-04-20
Ashley F Kusko1013Argentina2024-03-26
Jefferson F Ruta1014Japan2024-04-01
Kaitlin X Darakjy1015Canada2024-04-10
Emily C Garufi1016Brazil2024-03-27
Juan S Glick1017Germany2024-03-26
Izzy P Dilliard1018Spain2024-03-29
Ricardo D Chui1019Germany2024-04-07
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Rodrigues Q PerinSpainXuxue Feng PROPOSAL
Antonio A AmigonBrazilIvan Magalhaes QUALIFIED
Johnson B WhobreyIndiaAsiya Javayant QUALIFIED
Mayumi E KuskoBrazilAnna Fali NEGOTIATION
Adams T TollnerItalyXuxue Feng NEW
Juan F SergiJapanAsiya Javayant RENEWAL
Deepesh B GauchoFranceAnna Fali UNQUALIFIED
Smith U VenereSpainAsiya Javayant RENEWAL
Costa S GauchoRussiaBernardo Dominic QUALIFIED
Ivar B CaldareraFranceStephen Shaw NEGOTIATION
Octavia G FollerSpainXuxue Feng NEGOTIATION
Claire D MorascaAustraliaAmy Elsner QUALIFIED
Murillo Y AlbaresUnited KingdomBernardo Dominic UNQUALIFIED
Murillo J SlusarskiFranceAnna Fali RENEWAL
Mayumi V WhobreyBrazilAnna Fali RENEWAL
Salvatore P VocelkaAustraliaElwin Sharvill NEGOTIATION
Rodrigues K GauchoRussiaXuxue Feng UNQUALIFIED
Morrow B GauchoArgentinaIoni Bowcher QUALIFIED
Ashley C BologniaRussiaIvan Magalhaes NEW
Tony R TollnerRussiaAnna Fali RENEWAL
Jones X GlickBrazilBernardo Dominic RENEWAL
Cody P WhobreyAustraliaBernardo Dominic PROPOSAL
Cody N VocelkaUnited KingdomBernardo Dominic UNQUALIFIED
Nicolas I MaletUnited KingdomAnna Fali PROPOSAL
Wickens T NickaSpainElwin Sharvill QUALIFIED
Mujtaba Z MaletUnited KingdomAsiya Javayant RENEWAL
Misaki J DarakjyIndiaAnna Fali RENEWAL
Octavia P CampainCanadaIoni Bowcher NEW
Tony G ButtRussiaXuxue Feng QUALIFIED
Claire S InouyeFranceStephen Shaw PROPOSAL
Faith Q CaldareraRussiaBernardo Dominic NEW
Stacey N PerinItalyAnna Fali RENEWAL
Costa E SchemmerJapanAmy Elsner NEGOTIATION
Morrow Z StockhamBrazilAsiya Javayant RENEWAL
Adams K FollerArgentinaAnna Fali QUALIFIED
Francesco S MarrierJapanAnna Fali QUALIFIED
Rodrigues Z BowleyUnited KingdomIoni Bowcher PROPOSAL
Aruna G NestleIndiaIvan Magalhaes NEGOTIATION
Silvio H KolmetzJapanStephen Shaw RENEWAL
Wickens M RoysterItalyAnna Fali 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>