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
Jones H FigeroaSpainAnna Fali UNQUALIFIED
Aruna D VocelkaItalyBernardo Dominic PROPOSAL
Ricardo K StockhamGermanyXuxue Feng QUALIFIED
Ricardo I FlosiIndiaAsiya Javayant PROPOSAL
Sinclair T WaycottUnited KingdomElwin Sharvill PROPOSAL
Arvin T DilliardGermanyElwin Sharvill PROPOSAL
Morrow O WieserAustraliaElwin Sharvill UNQUALIFIED
Juan O RulapaughAustraliaBernardo Dominic NEGOTIATION
Francesco R KuskoGermanyOnyama Limba UNQUALIFIED
Munro K CampainBrazilXuxue Feng UNQUALIFIED
Wickens T TollnerGermanyStephen Shaw PROPOSAL
Aika G DilliardRussiaIvan Magalhaes QUALIFIED
Isabel Q PoquetteSpainAnna Fali QUALIFIED
Adams E GauchoRussiaOnyama Limba RENEWAL
Octavia H CaudyAustraliaAnna Fali RENEWAL
Kaitlin Y CampainSpainIvan Magalhaes RENEWAL
Claire M RulapaughItalyOnyama Limba PROPOSAL
Johnson N WhobreyArgentinaBernardo Dominic NEGOTIATION
Juan N ButtBrazilOnyama Limba NEGOTIATION
Kaitlin G GlickBrazilAnna Fali PROPOSAL
Kadeem J PerinIndiaXuxue Feng UNQUALIFIED
Ivar Z FigeroaFranceElwin Sharvill PROPOSAL
Kadeem Q AlbaresUnited KingdomOnyama Limba NEW
James O NickaRussiaElwin Sharvill UNQUALIFIED
Ivar K WaycottJapanElwin Sharvill QUALIFIED
Maisha Z TollnerIndiaAnna Fali PROPOSAL
Leon C SergiBrazilIvan Magalhaes NEW
Antonio R RoysterBrazilIoni Bowcher PROPOSAL
Mayumi K WhobreyCanadaAmy Elsner NEGOTIATION
Arvin B GauchoIndiaXuxue Feng UNQUALIFIED
Munro U NestleSpainStephen Shaw NEW
Munro A OstroskyGermanyAsiya Javayant RENEWAL
Jones B OstroskyUnited KingdomIoni Bowcher NEGOTIATION
Stacey E DoeUnited KingdomOnyama Limba UNQUALIFIED
Octavia S SlusarskiArgentinaOnyama Limba PROPOSAL
Mujtaba Z GlickIndiaXuxue Feng PROPOSAL
Jeanfrancois W TollnerJapanAsiya Javayant NEW
Nicolas P SlusarskiIndiaXuxue Feng UNQUALIFIED
Julie L CaudyItalyIvan Magalhaes PROPOSAL
Francesco X PoquetteJapanIoni Bowcher QUALIFIED
Alejandro U WaycottItalyIvan Magalhaes QUALIFIED
Cody F TollnerArgentinaAsiya Javayant RENEWAL
Smith L WieserArgentinaIvan Magalhaes QUALIFIED
Costa G MaletAustraliaAsiya Javayant UNQUALIFIED
Wickens R StensethItalyAmy Elsner UNQUALIFIED
James V SaylorsFranceBernardo Dominic NEGOTIATION
Kadeem O OstroskySpainBernardo Dominic QUALIFIED
Jefferson Y DarakjyCanadaIvan Magalhaes NEGOTIATION
Kaitlin H TollnerBrazilStephen Shaw NEW
Rodrigues S WieserGermanyXuxue Feng UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Johnson N OstroskyCanadaXuxue Feng RENEWAL
Maisha M InouyeBrazilElwin Sharvill QUALIFIED
Aruna I BologniaJapanAnna Fali NEGOTIATION
Silvio S AlbaresCanadaAmy Elsner NEW
Kaitlin G RimJapanAmy Elsner NEGOTIATION
Costa H SaylorsRussiaIvan Magalhaes NEGOTIATION
Tony E TollnerRussiaAnna Fali PROPOSAL
Kaitlin P MarrierFranceStephen Shaw NEW
Julie V BologniaCanadaOnyama Limba RENEWAL
Rodrigues I RoysterJapanAsiya Javayant PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Emily F VenereIndia2024-03-30Commercial Press RENEWAL47Amy Elsner
1001Isabel Q PerinItaly2024-04-22Chemel, James L Cpa QUALIFIED32Asiya Javayant
1002Ashley B MaletGermany2024-04-08Truhlar And Truhlar Attys RENEWAL42Asiya Javayant
1003James R GarufiCanada2024-04-24Chemel, James L Cpa RENEWAL66Stephen Shaw
1004Tony L DoeRussia2024-03-30Truhlar And Truhlar Attys RENEWAL82Asiya Javayant
1005Misaki F MarrierFrance2024-04-22Rangoni Of Florence UNQUALIFIED61Stephen Shaw
1006Maria K FerenczCanada2024-04-05Dorl, James J Esq UNQUALIFIED84Anna Fali
1007Arvin O CaldareraUnited Kingdom2024-03-30Printing Dimensions RENEWAL83Amy Elsner
1008Deepesh O FollerGermany2024-04-15Rangoni Of Florence NEW48Anna Fali
1009Greenwood I AmigonAustralia2024-04-25Chapman, Ross E Esq NEW18Bernardo Dominic
1010Jefferson C RimItaly2024-04-21Chapman, Ross E Esq NEW18Onyama Limba
1011Julie M KolmetzJapan2024-04-02Rangoni Of Florence NEW39Xuxue Feng
1012Leja S PoquetteItaly2024-04-09Printing Dimensions QUALIFIED46Onyama Limba
1013Ivar Z KuskoCanada2024-04-22Truhlar And Truhlar Attys UNQUALIFIED38Ivan Magalhaes
1014Julie Y MorascaArgentina2024-04-18Rousseaux, Michael Esq NEGOTIATION44Elwin Sharvill
1015Stacey S PerinSpain2024-04-05Chapman, Ross E Esq QUALIFIED50Xuxue Feng
1016Nicolas O MacleadUnited Kingdom2024-04-26Feiner Bros NEGOTIATION39Asiya Javayant
1017Mayumi M FigeroaArgentina2024-04-14Dorl, James J Esq UNQUALIFIED64Amy Elsner
1018Misaki I NestleRussia2024-04-24Chemel, James L Cpa NEGOTIATION94Stephen Shaw
1019Aditya V CaldareraItaly2024-04-13Chapman, Ross E Esq PROPOSAL56Bernardo Dominic
1020Darci L SchemmerAustralia2024-04-06Printing Dimensions QUALIFIED10Ivan Magalhaes
1021Ricardo H IturbideRussia2024-04-24Chanay, Jeffrey A Esq NEW97Xuxue Feng
1022Julie P GlickItaly2024-04-14Morlong Associates UNQUALIFIED15Elwin Sharvill
1023Johnson H DoeJapan2024-04-01Feltz Printing Service NEW5Stephen Shaw
1024Ashley E MaletCanada2024-04-22Feiner Bros QUALIFIED70Stephen Shaw
1025Nicolas C VenereGermany2024-04-11Feiner Bros UNQUALIFIED82Onyama Limba
1026Wickens D ShinkoArgentina2024-04-26Truhlar And Truhlar Attys NEW13Amy Elsner
1027Isabel W PoquetteIndia2024-04-25Truhlar And Truhlar Attys NEW41Ivan Magalhaes
1028Antonio H FigeroaIndia2024-04-13Dorl, James J Esq PROPOSAL0Amy Elsner
1029Francesco F TollnerFrance2024-04-02Chemel, James L Cpa RENEWAL29Anna Fali
1030Greenwood R WhobreyGermany2024-04-01Morlong Associates RENEWAL70Ioni Bowcher
1031Octavia K InouyeArgentina2024-04-07Rangoni Of Florence PROPOSAL42Ivan Magalhaes
1032Murillo Y FigeroaArgentina2024-04-07King, Christopher A Esq PROPOSAL10Ivan Magalhaes
1033Claire L NestleAustralia2024-04-01Chemel, James L Cpa RENEWAL14Elwin Sharvill
1034Claire U ChuiJapan2024-04-13Rousseaux, Michael Esq NEW93Elwin Sharvill
1035Salvatore N FerenczRussia2024-04-14King, Christopher A Esq UNQUALIFIED58Bernardo Dominic
1036Leon K RoysterIndia2024-04-09Benton, John B Jr PROPOSAL59Ioni Bowcher
1037Aditya S SchemmerArgentina2024-04-15Dorl, James J Esq QUALIFIED12Elwin Sharvill
1038Greenwood B MaletCanada2024-04-02Buckley Miller Wright NEGOTIATION79Bernardo Dominic
1039Maria D NestleRussia2024-04-21Dorl, James J Esq PROPOSAL42Stephen Shaw
1040Julie D StensethGermany2024-04-26Printing Dimensions PROPOSAL78Asiya Javayant
1041Ashley E BologniaUnited Kingdom2024-04-11Morlong Associates QUALIFIED83Onyama Limba
1042Jefferson A DoeRussia2024-04-18Chapman, Ross E Esq UNQUALIFIED96Xuxue Feng
1043Jones L TollnerFrance2024-04-02King, Christopher A Esq UNQUALIFIED64Ivan Magalhaes
1044David O CaldareraRussia2024-04-05Chapman, Ross E Esq UNQUALIFIED67Stephen Shaw
1045Ricardo Y CaudyAustralia2024-04-06Chapman, Ross E Esq PROPOSAL93Asiya Javayant
1046Claire Y MacleadRussia2024-03-31Chanay, Jeffrey A Esq RENEWAL89Asiya Javayant
1047Morrow U MaletArgentina2024-04-06Feltz Printing Service QUALIFIED96Bernardo Dominic
1048Chavez H VenereJapan2024-04-23Feltz Printing Service NEGOTIATION95Bernardo Dominic
1049Aditya Q GarufiRussia2024-04-01Benton, John B Jr QUALIFIED68Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Alejandro H BowleySpainElwin Sharvill UNQUALIFIED
Jennifer K RoysterItalyIvan Magalhaes NEGOTIATION
Smith U SchemmerBrazilElwin Sharvill NEW
Leja Z FlosiBrazilElwin Sharvill QUALIFIED
Maisha W StockhamIndiaXuxue Feng NEW
Stacey Z ButtFranceAsiya Javayant NEGOTIATION
Jeanfrancois F DarakjyBrazilAsiya Javayant NEW
Jefferson S BriddickIndiaBernardo Dominic RENEWAL
Jennifer G DilliardArgentinaBernardo Dominic UNQUALIFIED
Kadeem Q InouyeItalyBernardo Dominic NEW
Clifford M OstroskyFranceAmy Elsner UNQUALIFIED
Jennifer Z StensethArgentinaAsiya Javayant UNQUALIFIED
Claire I PaprockiAustraliaBernardo Dominic PROPOSAL
Antonio D WaycottBrazilXuxue Feng QUALIFIED
Salvatore D MorascaIndiaIvan Magalhaes RENEWAL
Sinclair M GarufiArgentinaBernardo Dominic NEW
Clifford V MaletUnited KingdomIvan Magalhaes RENEWAL
Arvin S WaycottUnited KingdomIvan Magalhaes QUALIFIED
Sinclair W FigeroaRussiaIvan Magalhaes PROPOSAL
Izzy J MaletBrazilAsiya Javayant NEW
Mayumi G CampainUnited KingdomElwin Sharvill UNQUALIFIED
David A PoquetteArgentinaIoni Bowcher PROPOSAL
Adams Q RimGermanyElwin Sharvill UNQUALIFIED
Smith F NestleAustraliaElwin Sharvill QUALIFIED
Ivar Y GlickSpainAmy Elsner NEW
James L TollnerUnited KingdomOnyama Limba UNQUALIFIED
Darci C PerinIndiaIvan Magalhaes NEGOTIATION
Maria V PaprockiIndiaXuxue Feng RENEWAL
Murillo G CaudyGermanyBernardo Dominic UNQUALIFIED
Francesco B GillianFranceAnna Fali UNQUALIFIED
Morrow O BowleySpainBernardo Dominic RENEWAL
Ashley Z CaudyFranceElwin Sharvill NEW
Isabel K RoysterCanadaIoni Bowcher UNQUALIFIED
Johnson D PoquetteSpainElwin Sharvill NEGOTIATION
Aika D MorascaIndiaAmy Elsner NEGOTIATION
Juan M PerinFranceOnyama Limba RENEWAL
Arvin J FigeroaFranceXuxue Feng UNQUALIFIED
Maisha N DoeItalyIoni Bowcher NEGOTIATION
Mayumi Q ChuiCanadaIoni Bowcher NEGOTIATION
Francesco U PoquetteUnited KingdomBernardo Dominic NEGOTIATION
Salvatore L PoquetteJapanAnna Fali RENEWAL
Ivar O FerenczItalyAsiya Javayant QUALIFIED
Johnson A PerinArgentinaStephen Shaw QUALIFIED
Costa D RimItalyElwin Sharvill QUALIFIED
Johnson K KuskoUnited KingdomAsiya Javayant PROPOSAL
Aruna B MaletFranceElwin Sharvill UNQUALIFIED
Isabel K BriddickCanadaXuxue Feng PROPOSAL
Aditya Z StockhamUnited KingdomAmy Elsner QUALIFIED
Wickens A VenereFranceBernardo Dominic RENEWAL
Rodrigues C SchemmerBrazilBernardo Dominic NEGOTIATION
Frozen Columns
Name
Julie M Stenseth
Leon E Morasca
Clifford O Vocelka
Octavia A Oldroyd
Murillo Q Amigon
Nicolas O Dilliard
Ashley I Shinko
Isabel R Whobrey
Adams T Morasca
Aika L Kolmetz
Alejandro Z Darakjy
Mujtaba I Poquette
Aika V Amigon
Francesco G Stenseth
Arvin R Malet
Tony Q Briddick
Misaki M Venere
Rodrigues U Ruta
Aditya J Whobrey
Misaki F Oldroyd
Jefferson V Doe
Johnson G Figeroa
Johnson Y Figeroa
Octavia O Iturbide
Costa D Rim
Aditya Z Paprocki
Emily H Morasca
Isabel G Glick
Aika U Chui
Tony T Malet
Jeanfrancois A Vocelka
Smith J Gillian
Greenwood H Ruta
Clifford X Gillian
Salvatore D Rim
Clifford C Glick
Jones E Bowley
Munro N Marrier
Stacey B Sergi
Claire W Kusko
Darci Q Kusko
Morrow Q Paprocki
Kadeem E Campain
Ivar W Paprocki
Greenwood J Glick
Morrow D Oldroyd
Faith F Caldarera
Emily J Schemmer
David A Malet
Arvin M Iturbide
IdCountryDate
1000Japan2024-04-10
1001Canada2024-04-11
1002France2024-04-21
1003Brazil2024-03-31
1004Canada2024-04-24
1005Italy2024-04-17
1006Argentina2024-04-03
1007India2024-04-16
1008Japan2024-04-25
1009Brazil2024-04-27
1010Australia2024-04-12
1011India2024-04-18
1012Brazil2024-04-01
1013Spain2024-04-07
1014Italy2024-04-23
1015Russia2024-04-13
1016Canada2024-04-18
1017Germany2024-04-18
1018France2024-04-13
1019Brazil2024-04-07
1020Argentina2024-04-09
1021Japan2024-03-29
1022Russia2024-04-04
1023Canada2024-03-29
1024Japan2024-04-10
1025United Kingdom2024-04-10
1026France2024-04-01
1027Brazil2024-04-08
1028Argentina2024-04-23
1029United Kingdom2024-04-17
1030Spain2024-04-16
1031Italy2024-04-09
1032United Kingdom2024-04-15
1033Japan2024-04-12
1034Germany2024-04-01
1035Brazil2024-04-24
1036India2024-04-06
1037Canada2024-04-02
1038Germany2024-04-23
1039Russia2024-03-29
1040France2024-04-16
1041Russia2024-04-16
1042India2024-03-30
1043Russia2024-04-21
1044Germany2024-04-08
1045Argentina2024-04-09
1046Germany2024-03-31
1047Argentina2024-04-07
1048Italy2024-04-21
1049Germany2024-04-19

On-Demand Data

NameIdCountryDate
Jones S Royster1000Russia2024-04-02
Aruna K Bolognia1001Canada2024-04-05
Arvin G Malet1002Canada2024-04-17
Johnson R Doe1003United Kingdom2024-04-02
Adams L Whobrey1004Japan2024-04-27
Rodrigues I Whobrey1005Japan2024-04-08
Adams H Caldarera1006Argentina2024-04-05
Ashley T Gillian1007Brazil2024-03-31
Smith F Marrier1008Spain2024-04-09
Nicolas G Briddick1009Japan2024-04-22
Tony Q Poquette1010United Kingdom2024-04-12
Claire G Caldarera1011Argentina2024-04-24
Johnson E Wieser1012India2024-04-04
Rodrigues S Whobrey1013Canada2024-04-04
Deepesh A Maclead1014Japan2024-04-24
Clifford D Gaucho1015Brazil2024-04-02
Chavez M Iturbide1016Argentina2024-04-04
Kaitlin K Waycott1017Canada2024-04-08
Maisha P Schemmer1018Argentina2024-04-16
Jennifer O Vocelka1019Spain2024-04-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Murillo S FigeroaUnited KingdomOnyama Limba QUALIFIED
Leon X MorascaUnited KingdomIoni Bowcher UNQUALIFIED
Sinclair D GarufiIndiaXuxue Feng QUALIFIED
Francesco X MaletRussiaAsiya Javayant UNQUALIFIED
Isabel S BriddickBrazilIoni Bowcher UNQUALIFIED
Costa E BriddickIndiaIoni Bowcher PROPOSAL
Aika H PerinCanadaBernardo Dominic QUALIFIED
Jones G NickaArgentinaXuxue Feng PROPOSAL
Isabel Y PaprockiGermanyXuxue Feng QUALIFIED
Arvin K FigeroaJapanOnyama Limba PROPOSAL
Darci V SergiRussiaIoni Bowcher NEGOTIATION
Clifford S OstroskySpainAnna Fali UNQUALIFIED
Sinclair R RoysterCanadaAnna Fali UNQUALIFIED
Jeanfrancois M GarufiFranceBernardo Dominic RENEWAL
Juan M MacleadCanadaIoni Bowcher QUALIFIED
Francesco M IturbideJapanAmy Elsner NEW
Misaki U SchemmerJapanOnyama Limba PROPOSAL
Izzy F BriddickIndiaIvan Magalhaes UNQUALIFIED
Jeanfrancois M CaudyCanadaAnna Fali QUALIFIED
Julie N FigeroaArgentinaIvan Magalhaes QUALIFIED
Aruna T SlusarskiRussiaOnyama Limba NEGOTIATION
Ivar K CaudyAustraliaAnna Fali NEW
Stacey B RimJapanAmy Elsner NEW
Izzy I VenereGermanyStephen Shaw RENEWAL
Greenwood O GillianUnited KingdomAsiya Javayant NEGOTIATION
Johnson X MaletSpainStephen Shaw PROPOSAL
Adams T SlusarskiFranceAsiya Javayant NEW
James S SergiJapanBernardo Dominic RENEWAL
David T AlbaresSpainAmy Elsner QUALIFIED
Wickens Z IturbideRussiaBernardo Dominic RENEWAL
Stacey Z PerinSpainAsiya Javayant NEW
Jennifer G ChuiGermanyBernardo Dominic NEGOTIATION
Clifford K RoysterCanadaIvan Magalhaes NEGOTIATION
Stacey Z VocelkaJapanXuxue Feng UNQUALIFIED
Murillo K GarufiJapanOnyama Limba QUALIFIED
Francesco M AlbaresJapanXuxue Feng UNQUALIFIED
Maisha C PoquetteFranceXuxue Feng UNQUALIFIED
Aruna D KolmetzBrazilElwin Sharvill QUALIFIED
Nicolas T StockhamFranceStephen Shaw PROPOSAL
Isabel J DarakjyFranceIvan 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>