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
Alejandro K CaudyUnited KingdomAmy Elsner RENEWAL
Antonio D SlusarskiItalyIoni Bowcher UNQUALIFIED
James P ChuiUnited KingdomElwin Sharvill NEGOTIATION
Costa A RutaBrazilAmy Elsner NEGOTIATION
Faith G BriddickRussiaOnyama Limba PROPOSAL
Octavia R SlusarskiRussiaStephen Shaw NEGOTIATION
Octavia R GarufiBrazilAsiya Javayant QUALIFIED
Juan J FlosiArgentinaAmy Elsner QUALIFIED
Chavez L ChuiFranceBernardo Dominic RENEWAL
Darci D PoquetteIndiaIvan Magalhaes PROPOSAL
Maria J CampainBrazilIoni Bowcher RENEWAL
Salvatore X SaylorsSpainAnna Fali UNQUALIFIED
Leon Y RoysterRussiaIvan Magalhaes PROPOSAL
Mujtaba J CaldareraCanadaStephen Shaw NEW
Tony R DarakjyFranceAnna Fali NEGOTIATION
Morrow E SaylorsUnited KingdomXuxue Feng PROPOSAL
Smith T GillianIndiaIoni Bowcher NEGOTIATION
Emily D CaldareraUnited KingdomAmy Elsner RENEWAL
Munro R WhobreyJapanElwin Sharvill RENEWAL
Deepesh F CaudyFranceAmy Elsner PROPOSAL
Kaitlin X SchemmerGermanyIvan Magalhaes RENEWAL
Faith F IturbideItalyAsiya Javayant UNQUALIFIED
Jones Z SaylorsBrazilAnna Fali QUALIFIED
Nicolas I DilliardCanadaStephen Shaw UNQUALIFIED
Faith N AlbaresUnited KingdomIoni Bowcher PROPOSAL
Sinclair B GlickJapanAmy Elsner NEW
Misaki G DarakjyBrazilElwin Sharvill QUALIFIED
Rodrigues F RulapaughRussiaStephen Shaw NEGOTIATION
Kadeem U SaylorsJapanIoni Bowcher NEGOTIATION
Tony Y BowleyBrazilAnna Fali QUALIFIED
Izzy O CampainJapanAsiya Javayant NEGOTIATION
Wickens A PoquetteRussiaAnna Fali QUALIFIED
Tony V GarufiBrazilOnyama Limba RENEWAL
Kadeem H FollerItalyBernardo Dominic PROPOSAL
Nicolas M FollerAustraliaIvan Magalhaes NEGOTIATION
Munro X KuskoArgentinaAmy Elsner NEW
Emily O DarakjySpainAmy Elsner RENEWAL
Adams C StensethGermanyBernardo Dominic QUALIFIED
Morrow P GarufiAustraliaAmy Elsner PROPOSAL
Aditya C OstroskyArgentinaAnna Fali UNQUALIFIED
Maria T MarrierSpainBernardo Dominic RENEWAL
Kadeem W RulapaughCanadaXuxue Feng NEW
Clifford U NestleJapanAmy Elsner UNQUALIFIED
Claire F NestleSpainAmy Elsner NEGOTIATION
Greenwood D ShinkoRussiaIoni Bowcher NEW
Deepesh C MacleadFranceAnna Fali PROPOSAL
Rodrigues N VenereBrazilAnna Fali RENEWAL
Aika L RulapaughAustraliaBernardo Dominic PROPOSAL
Tony U DilliardRussiaBernardo Dominic QUALIFIED
Leon Y StockhamJapanAmy Elsner PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Silvio K MaletAustraliaOnyama Limba QUALIFIED
Mujtaba O MarrierUnited KingdomXuxue Feng RENEWAL
Antonio H ButtAustraliaAsiya Javayant NEGOTIATION
Leja A RutaSpainAnna Fali PROPOSAL
Silvio Y WhobreyGermanyOnyama Limba RENEWAL
Leon W DoeGermanyOnyama Limba QUALIFIED
Johnson E VenereItalyXuxue Feng QUALIFIED
Deepesh K OstroskyBrazilOnyama Limba QUALIFIED
Rodrigues V RimFranceBernardo Dominic QUALIFIED
Arvin O FerenczArgentinaIoni Bowcher UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000David O BowleyRussia2024-04-03Commercial Press QUALIFIED36Asiya Javayant
1001Aika E SergiBrazil2024-04-23Morlong Associates PROPOSAL77Amy Elsner
1002Aruna W GarufiCanada2024-04-18Chanay, Jeffrey A Esq UNQUALIFIED61Asiya Javayant
1003Greenwood K MorascaCanada2024-04-11Rousseaux, Michael Esq UNQUALIFIED29Elwin Sharvill
1004James X BowleyCanada2024-04-02Truhlar And Truhlar Attys NEGOTIATION23Stephen Shaw
1005Jefferson P SchemmerBrazil2024-04-13Chapman, Ross E Esq NEW78Bernardo Dominic
1006James Q FollerJapan2024-04-13Chapman, Ross E Esq UNQUALIFIED80Stephen Shaw
1007Silvio L FigeroaSpain2024-04-03Commercial Press QUALIFIED89Elwin Sharvill
1008Aika A PerinSpain2024-04-20Chapman, Ross E Esq NEGOTIATION17Stephen Shaw
1009Mujtaba D CaldareraIndia2024-04-08Morlong Associates RENEWAL43Xuxue Feng
1010Antonio H WaycottIndia2024-04-12Commercial Press RENEWAL41Ioni Bowcher
1011Ivar C FerenczItaly2024-03-31Buckley Miller Wright QUALIFIED78Xuxue Feng
1012Wickens B BriddickUnited Kingdom2024-04-07Rousseaux, Michael Esq PROPOSAL92Ioni Bowcher
1013Morrow D VocelkaRussia2024-04-23Commercial Press NEW2Ioni Bowcher
1014Kaitlin Z OldroydUnited Kingdom2024-04-13Chapman, Ross E Esq RENEWAL73Onyama Limba
1015Mujtaba I ChuiGermany2024-04-02Rangoni Of Florence NEGOTIATION18Bernardo Dominic
1016Aditya I KuskoAustralia2024-04-12Feltz Printing Service PROPOSAL49Anna Fali
1017Aditya L BriddickSpain2024-04-28King, Christopher A Esq NEGOTIATION7Anna Fali
1018Maisha O RimJapan2024-04-05Chanay, Jeffrey A Esq UNQUALIFIED29Stephen Shaw
1019Deepesh T KuskoJapan2024-04-16Feltz Printing Service NEW9Asiya Javayant
1020Emily Q KolmetzItaly2024-04-23Printing Dimensions NEGOTIATION81Bernardo Dominic
1021Munro M CampainBrazil2024-04-24Chapman, Ross E Esq PROPOSAL47Anna Fali
1022Maisha D WhobreyIndia2024-04-04Chemel, James L Cpa RENEWAL71Bernardo Dominic
1023Clifford A ButtCanada2024-04-10Chemel, James L Cpa NEW80Onyama Limba
1024Kaitlin Y NickaRussia2024-04-18Feltz Printing Service UNQUALIFIED4Bernardo Dominic
1025Greenwood K InouyeGermany2024-04-13Rousseaux, Michael Esq UNQUALIFIED20Elwin Sharvill
1026Arvin C MacleadSpain2024-04-04King, Christopher A Esq PROPOSAL96Elwin Sharvill
1027Claire D WhobreyArgentina2024-04-01Benton, John B Jr UNQUALIFIED21Amy Elsner
1028Smith L FollerGermany2024-03-31Feltz Printing Service PROPOSAL43Asiya Javayant
1029Johnson J FerenczBrazil2024-04-15Commercial Press QUALIFIED34Amy Elsner
1030Adams O DilliardGermany2024-04-12Feiner Bros PROPOSAL63Ivan Magalhaes
1031Stacey F PerinUnited Kingdom2024-04-11Dorl, James J Esq RENEWAL23Bernardo Dominic
1032Ricardo O BologniaFrance2024-04-08Rousseaux, Michael Esq QUALIFIED50Ioni Bowcher
1033Claire D GlickBrazil2024-03-31Feiner Bros QUALIFIED85Onyama Limba
1034Misaki X GillianGermany2024-04-10Feltz Printing Service RENEWAL91Bernardo Dominic
1035Mayumi D SergiSpain2024-04-14Benton, John B Jr NEW64Amy Elsner
1036Clifford H TollnerArgentina2024-04-01Dorl, James J Esq UNQUALIFIED20Elwin Sharvill
1037Antonio C ButtJapan2024-04-19Printing Dimensions RENEWAL80Bernardo Dominic
1038Clifford R IturbideGermany2024-03-31Rangoni Of Florence NEGOTIATION11Onyama Limba
1039Mujtaba F GauchoRussia2024-04-16Printing Dimensions NEGOTIATION39Elwin Sharvill
1040Kaitlin Q NickaItaly2024-04-13Benton, John B Jr NEGOTIATION23Anna Fali
1041Ivar R KolmetzFrance2024-04-15Chemel, James L Cpa UNQUALIFIED38Asiya Javayant
1042Greenwood C NestleJapan2024-04-04Chapman, Ross E Esq RENEWAL75Xuxue Feng
1043Smith N FollerIndia2024-04-09Chemel, James L Cpa PROPOSAL2Bernardo Dominic
1044Julie D MacleadJapan2024-03-30Benton, John B Jr PROPOSAL36Ioni Bowcher
1045Wickens S WieserUnited Kingdom2024-04-18Buckley Miller Wright RENEWAL85Asiya Javayant
1046Chavez T KolmetzFrance2024-04-09Feiner Bros UNQUALIFIED13Anna Fali
1047Alejandro K IturbideItaly2024-04-08King, Christopher A Esq QUALIFIED8Stephen Shaw
1048Munro L FerenczSpain2024-04-22Chemel, James L Cpa UNQUALIFIED80Stephen Shaw
1049Octavia R InouyeItaly2024-04-18Chapman, Ross E Esq NEW12Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Aditya U CaudyRussiaStephen Shaw RENEWAL
Arvin F SlusarskiCanadaElwin Sharvill NEGOTIATION
Jennifer O NestleSpainAnna Fali UNQUALIFIED
Greenwood P InouyeSpainIoni Bowcher NEGOTIATION
Jefferson E BologniaIndiaIoni Bowcher PROPOSAL
Isabel X MorascaArgentinaAmy Elsner NEW
Alejandro S GlickGermanyAsiya Javayant NEGOTIATION
James D PoquetteItalyIoni Bowcher QUALIFIED
Ashley M GauchoRussiaAsiya Javayant RENEWAL
Claire Q PoquetteFranceStephen Shaw UNQUALIFIED
Greenwood I MarrierArgentinaBernardo Dominic NEW
Ivar W WhobreySpainStephen Shaw UNQUALIFIED
Darci O CampainCanadaBernardo Dominic PROPOSAL
Rodrigues K DarakjyItalyAmy Elsner UNQUALIFIED
Leon C OldroydArgentinaAmy Elsner NEGOTIATION
Jeanfrancois Y CaudyBrazilElwin Sharvill NEW
Antonio B ButtRussiaAmy Elsner PROPOSAL
Nicolas Y BowleyIndiaXuxue Feng NEW
Jones E ButtUnited KingdomAnna Fali NEW
Johnson N PerinItalyIvan Magalhaes RENEWAL
Alejandro J DilliardSpainOnyama Limba QUALIFIED
Antonio J KolmetzItalyStephen Shaw QUALIFIED
Clifford B BowleyBrazilStephen Shaw QUALIFIED
James J CaudyItalyStephen Shaw QUALIFIED
Ricardo K SlusarskiJapanStephen Shaw UNQUALIFIED
James V CaudySpainAsiya Javayant NEW
Claire F ButtAustraliaElwin Sharvill RENEWAL
Aika C ChuiCanadaAmy Elsner NEW
Francesco K DilliardIndiaAnna Fali NEGOTIATION
Antonio W FigeroaRussiaIvan Magalhaes PROPOSAL
Alejandro Y RimFranceIoni Bowcher PROPOSAL
Faith K WaycottFranceOnyama Limba NEW
Ricardo A IturbideIndiaStephen Shaw NEGOTIATION
Silvio F MaletRussiaAsiya Javayant RENEWAL
Adams B AlbaresItalyAsiya Javayant NEW
Adams A IturbideFranceXuxue Feng NEW
David T FerenczIndiaElwin Sharvill NEW
Deepesh I VenereGermanyStephen Shaw UNQUALIFIED
Octavia P MorascaGermanyXuxue Feng PROPOSAL
Misaki A AmigonArgentinaAmy Elsner PROPOSAL
Izzy D DarakjyFranceBernardo Dominic QUALIFIED
Tony T GauchoRussiaStephen Shaw QUALIFIED
Salvatore O CaudyRussiaXuxue Feng NEW
Morrow G RulapaughItalyStephen Shaw RENEWAL
Jennifer W StockhamCanadaAnna Fali QUALIFIED
Francesco Y TollnerItalyAmy Elsner UNQUALIFIED
Silvio K MacleadCanadaAmy Elsner UNQUALIFIED
Deepesh X DoeSpainOnyama Limba RENEWAL
Jeanfrancois G NickaRussiaOnyama Limba QUALIFIED
Stacey K VenereCanadaIoni Bowcher RENEWAL
Frozen Columns
Name
Alejandro O Stenseth
Kaitlin B Bolognia
James R Rulapaugh
Leon D Venere
Mujtaba Q Saylors
Antonio H Royster
Clifford X Poquette
Morrow Z Foller
Sinclair Z Butt
Ashley Q Nicka
Alejandro Z Tollner
Maisha H Malet
Rodrigues J Sergi
Jefferson D Vocelka
Aika X Glick
Jeanfrancois E Ferencz
Claire L Campain
Tony B Campain
Wickens M Poquette
James H Briddick
Alejandro M Caldarera
Alejandro R Ostrosky
Jeanfrancois M Bowley
Stacey E Ferencz
Faith L Dilliard
Mayumi L Poquette
Francesco Z Malet
Stacey G Caudy
Costa A Whobrey
David U Malet
James F Gaucho
Leja K Oldroyd
Alejandro P Saylors
Leon G Ruta
Aditya R Butt
Clifford J Poquette
Tony F Gillian
Juan A Stenseth
Ricardo G Venere
Deepesh B Stenseth
Julie Z Gaucho
Maria W Amigon
Aruna Z Whobrey
Chavez M Amigon
James S Gaucho
Mayumi P Flosi
Kadeem F Slusarski
Deepesh L Waycott
Isabel W Tollner
Jeanfrancois G Rulapaugh
IdCountryDate
1000Italy2024-04-15
1001Brazil2024-04-15
1002Spain2024-04-28
1003Germany2024-04-21
1004Russia2024-04-20
1005Italy2024-04-24
1006Japan2024-04-26
1007France2024-04-13
1008France2024-04-14
1009Australia2024-04-24
1010Canada2024-04-12
1011Argentina2024-04-16
1012Italy2024-04-21
1013Canada2024-04-03
1014Germany2024-04-02
1015Australia2024-04-19
1016France2024-04-03
1017Italy2024-04-02
1018Australia2024-04-21
1019Russia2024-04-10
1020Japan2024-04-24
1021Canada2024-03-31
1022Canada2024-04-07
1023Brazil2024-04-27
1024Australia2024-04-16
1025Canada2024-04-08
1026Spain2024-04-08
1027India2024-04-23
1028Russia2024-04-21
1029Russia2024-04-15
1030Spain2024-04-28
1031Australia2024-04-13
1032France2024-04-08
1033United Kingdom2024-04-04
1034Canada2024-04-04
1035Australia2024-03-31
1036Japan2024-04-07
1037India2024-04-06
1038Italy2024-04-05
1039France2024-04-24
1040Australia2024-04-19
1041Canada2024-04-10
1042India2024-04-24
1043Argentina2024-04-15
1044Argentina2024-03-31
1045Spain2024-04-11
1046Russia2024-04-28
1047India2024-04-06
1048Spain2024-04-19
1049Italy2024-04-18

On-Demand Data

NameIdCountryDate
Aruna P Nestle1000United Kingdom2024-04-02
Jeanfrancois V Whobrey1001Brazil2024-04-08
Sinclair J Garufi1002Brazil2024-04-01
Tony S Dilliard1003Brazil2024-04-28
Faith K Whobrey1004Japan2024-04-25
Tony A Dilliard1005Japan2024-04-11
Johnson G Chui1006Italy2024-04-08
Alejandro M Slusarski1007Spain2024-03-30
Smith G Ruta1008Canada2024-04-27
Costa Z Royster1009United Kingdom2024-04-20
Smith Q Sergi1010India2024-04-14
Kaitlin Z Schemmer1011Japan2024-04-27
James I Nestle1012India2024-04-27
Adams J Malet1013France2024-04-06
Leja D Shinko1014Russia2024-04-09
Jefferson H Morasca1015Argentina2024-04-24
Silvio O Campain1016Brazil2024-04-02
Jones Q Oldroyd1017Japan2024-04-10
Munro R Sergi1018Australia2024-04-10
Jones D Caldarera1019Germany2024-04-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leja O GillianJapanXuxue Feng RENEWAL
Stacey X MaletUnited KingdomIoni Bowcher NEW
Arvin D MaletSpainAnna Fali NEGOTIATION
Maria K MarrierRussiaXuxue Feng NEW
Mayumi E RutaFranceIvan Magalhaes QUALIFIED
Rodrigues I BriddickSpainElwin Sharvill RENEWAL
Jennifer Y WhobreyAustraliaIoni Bowcher RENEWAL
Jefferson P DarakjyBrazilAsiya Javayant RENEWAL
Arvin Q RutaAustraliaIvan Magalhaes NEW
Claire L RulapaughBrazilXuxue Feng NEW
Mujtaba Q GlickAustraliaOnyama Limba RENEWAL
David A SaylorsRussiaIvan Magalhaes RENEWAL
Aditya B PerinIndiaIvan Magalhaes NEW
Cody D TollnerCanadaAnna Fali QUALIFIED
Kadeem M CaldareraAustraliaBernardo Dominic PROPOSAL
Misaki Z OstroskyArgentinaIvan Magalhaes PROPOSAL
Nicolas G WaycottIndiaOnyama Limba RENEWAL
Sinclair P GauchoGermanyAsiya Javayant RENEWAL
Silvio O RutaItalyAsiya Javayant RENEWAL
Costa D FerenczJapanXuxue Feng QUALIFIED
Tony G PerinArgentinaIvan Magalhaes NEGOTIATION
Octavia T GarufiCanadaAmy Elsner RENEWAL
Mayumi B MaletBrazilElwin Sharvill QUALIFIED
Cody H ShinkoBrazilBernardo Dominic PROPOSAL
Tony G FerenczJapanBernardo Dominic NEW
Ivar F BriddickCanadaXuxue Feng QUALIFIED
Leja J MaletItalyIvan Magalhaes UNQUALIFIED
Jeanfrancois U MorascaJapanXuxue Feng QUALIFIED
Adams L MacleadSpainOnyama Limba NEGOTIATION
Johnson V BowleyIndiaAmy Elsner PROPOSAL
Deepesh L SergiJapanStephen Shaw PROPOSAL
Stacey F OstroskyAustraliaAsiya Javayant QUALIFIED
Ashley W StensethSpainAmy Elsner UNQUALIFIED
Julie X IturbideAustraliaAnna Fali NEGOTIATION
Kaitlin D RoysterAustraliaAnna Fali PROPOSAL
Maisha L StockhamCanadaBernardo Dominic UNQUALIFIED
Leja L BriddickBrazilAmy Elsner QUALIFIED
Ricardo R BowleyUnited KingdomXuxue Feng RENEWAL
Jefferson H ShinkoJapanElwin Sharvill NEGOTIATION
Kaitlin C ButtFranceElwin Sharvill NEW

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