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
Leon T SergiItalyXuxue Feng RENEWAL
Salvatore T RoysterJapanIoni Bowcher NEGOTIATION
Jefferson Q DarakjyIndiaIoni Bowcher PROPOSAL
Antonio X BologniaGermanyStephen Shaw QUALIFIED
Clifford B PaprockiGermanyAmy Elsner UNQUALIFIED
Salvatore R SaylorsBrazilIoni Bowcher NEGOTIATION
Emily V FerenczFranceAmy Elsner PROPOSAL
Silvio F KolmetzJapanIoni Bowcher RENEWAL
Ricardo V GillianItalyBernardo Dominic UNQUALIFIED
Kadeem E MacleadUnited KingdomAnna Fali RENEWAL
Nicolas U MacleadGermanyAsiya Javayant QUALIFIED
Kaitlin A ShinkoRussiaBernardo Dominic QUALIFIED
David M SchemmerItalyBernardo Dominic NEGOTIATION
David G WaycottFranceAsiya Javayant QUALIFIED
Faith W MorascaAustraliaOnyama Limba PROPOSAL
Wickens T BowleyItalyIvan Magalhaes PROPOSAL
Smith O RulapaughRussiaBernardo Dominic RENEWAL
Ashley L FlosiCanadaAsiya Javayant NEW
Darci L ButtArgentinaBernardo Dominic RENEWAL
Johnson B FlosiCanadaStephen Shaw NEW
Silvio W DoeBrazilBernardo Dominic RENEWAL
Jeanfrancois X DilliardJapanIoni Bowcher NEGOTIATION
Faith H VocelkaBrazilAnna Fali NEW
Cody D ButtCanadaElwin Sharvill NEGOTIATION
Cody N DarakjyIndiaXuxue Feng RENEWAL
Alejandro Z CaldareraBrazilElwin Sharvill PROPOSAL
Smith D RutaJapanBernardo Dominic QUALIFIED
Kadeem M MaletIndiaIoni Bowcher PROPOSAL
Ivar V KolmetzSpainIvan Magalhaes PROPOSAL
Alejandro W AmigonJapanXuxue Feng QUALIFIED
Juan B PaprockiItalyStephen Shaw UNQUALIFIED
Alejandro B MacleadArgentinaBernardo Dominic QUALIFIED
Julie N InouyeUnited KingdomOnyama Limba NEGOTIATION
Salvatore P FollerGermanyAmy Elsner RENEWAL
Jeanfrancois N DoeBrazilAsiya Javayant RENEWAL
Aruna N DilliardUnited KingdomElwin Sharvill NEGOTIATION
Antonio B VenereFranceOnyama Limba RENEWAL
Mayumi X ButtFranceElwin Sharvill UNQUALIFIED
Aditya V RoysterIndiaIvan Magalhaes NEGOTIATION
Nicolas Y PaprockiUnited KingdomOnyama Limba QUALIFIED
Costa T GillianSpainAnna Fali QUALIFIED
Aika P RulapaughIndiaBernardo Dominic NEW
Sinclair U DoeSpainAnna Fali UNQUALIFIED
Maria J StockhamUnited KingdomIoni Bowcher RENEWAL
David Y CaldareraCanadaAmy Elsner QUALIFIED
Jefferson H BowleyAustraliaElwin Sharvill PROPOSAL
Tony M TollnerBrazilElwin Sharvill UNQUALIFIED
Alejandro D FigeroaJapanAsiya Javayant QUALIFIED
David V RimAustraliaAsiya Javayant NEGOTIATION
Alejandro K MaletItalyAnna Fali NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Isabel F GlickItalyStephen Shaw UNQUALIFIED
Arvin R MaletIndiaAnna Fali RENEWAL
Leon M ShinkoGermanyBernardo Dominic RENEWAL
Deepesh O FerenczJapanStephen Shaw PROPOSAL
Chavez Q FerenczFranceIvan Magalhaes QUALIFIED
Smith Z RoysterArgentinaElwin Sharvill NEGOTIATION
Faith T CaudyCanadaAnna Fali RENEWAL
Wickens Y CaldareraArgentinaElwin Sharvill NEW
Kadeem V DilliardFranceAmy Elsner PROPOSAL
Ricardo F GillianIndiaIvan Magalhaes NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Darci R FollerCanada2024-03-10Buckley Miller Wright RENEWAL53Xuxue Feng
1001Ricardo N PaprockiArgentina2024-03-06Buckley Miller Wright NEW62Asiya Javayant
1002Mujtaba Z AmigonAustralia2024-03-13Chapman, Ross E Esq NEGOTIATION29Elwin Sharvill
1003Aika G BologniaCanada2024-02-24King, Christopher A Esq UNQUALIFIED92Amy Elsner
1004Stacey J NickaJapan2024-03-16Benton, John B Jr UNQUALIFIED57Ivan Magalhaes
1005David O OstroskyJapan2024-02-24Benton, John B Jr RENEWAL89Asiya Javayant
1006Francesco R IturbideAustralia2024-03-12King, Christopher A Esq NEW71Elwin Sharvill
1007Deepesh S IturbideRussia2024-02-19Feltz Printing Service PROPOSAL24Amy Elsner
1008Deepesh M TollnerCanada2024-03-17Feiner Bros NEGOTIATION88Xuxue Feng
1009Munro O FerenczArgentina2024-03-07Rousseaux, Michael Esq QUALIFIED9Asiya Javayant
1010Maria O MorascaFrance2024-03-07Chemel, James L Cpa QUALIFIED4Xuxue Feng
1011Johnson K RimRussia2024-03-18Buckley Miller Wright RENEWAL13Ioni Bowcher
1012Sinclair B TollnerRussia2024-02-23Benton, John B Jr RENEWAL50Bernardo Dominic
1013Alejandro I NickaUnited Kingdom2024-03-09Dorl, James J Esq NEW65Ioni Bowcher
1014Cody R FollerItaly2024-02-18Chapman, Ross E Esq QUALIFIED37Anna Fali
1015Antonio N NestleRussia2024-03-10Feltz Printing Service PROPOSAL74Ioni Bowcher
1016Tony W KolmetzItaly2024-03-18Feiner Bros NEGOTIATION65Asiya Javayant
1017Tony D DarakjyUnited Kingdom2024-03-08Dorl, James J Esq QUALIFIED11Onyama Limba
1018James J VocelkaAustralia2024-02-20Dorl, James J Esq NEW26Onyama Limba
1019Deepesh M RoysterBrazil2024-02-29Rousseaux, Michael Esq NEW17Xuxue Feng
1020Arvin N FlosiAustralia2024-02-22King, Christopher A Esq RENEWAL6Ivan Magalhaes
1021Chavez W MacleadGermany2024-02-24Feltz Printing Service NEW29Anna Fali
1022Arvin J TollnerSpain2024-02-29Chanay, Jeffrey A Esq QUALIFIED42Ioni Bowcher
1023Jefferson J PaprockiArgentina2024-03-15Commercial Press NEGOTIATION50Asiya Javayant
1024James F ChuiAustralia2024-03-03Truhlar And Truhlar Attys NEGOTIATION12Elwin Sharvill
1025Octavia P AlbaresArgentina2024-02-23Rangoni Of Florence RENEWAL15Anna Fali
1026Costa A InouyeCanada2024-02-18Morlong Associates NEW98Asiya Javayant
1027Claire E KolmetzBrazil2024-02-26Chanay, Jeffrey A Esq QUALIFIED88Amy Elsner
1028Misaki Z DilliardUnited Kingdom2024-02-24Feltz Printing Service PROPOSAL83Asiya Javayant
1029David P CaldareraRussia2024-02-26Feiner Bros UNQUALIFIED16Stephen Shaw
1030Arvin M GlickJapan2024-02-23Printing Dimensions QUALIFIED98Stephen Shaw
1031Ashley N ShinkoSpain2024-02-28Rousseaux, Michael Esq RENEWAL81Xuxue Feng
1032Juan C WhobreySpain2024-03-10Chemel, James L Cpa QUALIFIED33Ivan Magalhaes
1033Morrow A GarufiJapan2024-02-25Benton, John B Jr PROPOSAL92Onyama Limba
1034Isabel D MaletRussia2024-03-12Dorl, James J Esq NEW0Ioni Bowcher
1035Jeanfrancois R TollnerGermany2024-03-09Commercial Press QUALIFIED42Amy Elsner
1036Maria Q SergiIndia2024-03-15Rangoni Of Florence RENEWAL55Ivan Magalhaes
1037Jones D DilliardArgentina2024-03-02Commercial Press PROPOSAL44Ioni Bowcher
1038Silvio J WhobreySpain2024-03-13Feiner Bros PROPOSAL10Onyama Limba
1039Kadeem P BriddickUnited Kingdom2024-02-23Chanay, Jeffrey A Esq NEW10Ioni Bowcher
1040Maria F AmigonCanada2024-02-28Morlong Associates QUALIFIED13Onyama Limba
1041Ivar T CampainGermany2024-02-26Rousseaux, Michael Esq UNQUALIFIED73Onyama Limba
1042Silvio E RimBrazil2024-02-27Rangoni Of Florence QUALIFIED50Onyama Limba
1043Adams F RutaAustralia2024-03-18Rousseaux, Michael Esq NEGOTIATION33Elwin Sharvill
1044Morrow K MaletAustralia2024-02-18Rousseaux, Michael Esq PROPOSAL19Stephen Shaw
1045Greenwood L MacleadItaly2024-03-08Printing Dimensions QUALIFIED78Onyama Limba
1046Izzy Q GlickJapan2024-03-06Truhlar And Truhlar Attys QUALIFIED13Ivan Magalhaes
1047Kaitlin A ChuiRussia2024-03-17King, Christopher A Esq NEW28Bernardo Dominic
1048Salvatore L VocelkaSpain2024-03-05Feiner Bros NEW35Amy Elsner
1049Mayumi X GillianRussia2024-03-16Chapman, Ross E Esq NEGOTIATION1Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Smith D SaylorsSpainBernardo Dominic RENEWAL
Ricardo C PerinItalyXuxue Feng PROPOSAL
Aditya W CaudyItalyOnyama Limba RENEWAL
Leon D FerenczArgentinaAsiya Javayant NEW
Faith Y BowleyGermanyXuxue Feng NEGOTIATION
Smith U NestleArgentinaElwin Sharvill RENEWAL
Mayumi T FigeroaGermanyStephen Shaw UNQUALIFIED
Kaitlin F GillianGermanyIvan Magalhaes UNQUALIFIED
Jones I DilliardItalyAsiya Javayant NEGOTIATION
Sinclair P KolmetzRussiaAsiya Javayant UNQUALIFIED
Rodrigues G MarrierJapanOnyama Limba RENEWAL
Jones V MaletJapanElwin Sharvill NEW
Ivar T OldroydBrazilOnyama Limba UNQUALIFIED
Aditya K RutaGermanyAnna Fali NEGOTIATION
Tony E GillianItalyElwin Sharvill NEW
Aruna G OstroskyArgentinaOnyama Limba RENEWAL
Ivar H RulapaughBrazilStephen Shaw NEW
Salvatore I DilliardJapanAsiya Javayant QUALIFIED
Juan I SlusarskiArgentinaXuxue Feng NEGOTIATION
Leon F GauchoItalyStephen Shaw RENEWAL
Ricardo D MorascaItalyStephen Shaw PROPOSAL
Darci K RimJapanXuxue Feng QUALIFIED
Smith R CampainFranceAnna Fali QUALIFIED
Nicolas I RoysterAustraliaIvan Magalhaes NEGOTIATION
Jones B RimFranceIvan Magalhaes NEGOTIATION
Aruna R StensethGermanyIvan Magalhaes PROPOSAL
Clifford N RulapaughIndiaAmy Elsner NEW
Stacey F VenereIndiaIoni Bowcher NEGOTIATION
Jefferson Z PaprockiGermanyIoni Bowcher RENEWAL
James K GlickCanadaAsiya Javayant QUALIFIED
Tony X InouyeUnited KingdomBernardo Dominic RENEWAL
Munro B FerenczRussiaStephen Shaw QUALIFIED
Morrow J SlusarskiJapanStephen Shaw NEGOTIATION
Deepesh R OldroydRussiaAnna Fali RENEWAL
Jeanfrancois P InouyeFranceElwin Sharvill UNQUALIFIED
Alejandro G SchemmerCanadaIvan Magalhaes RENEWAL
Tony J ChuiRussiaXuxue Feng NEW
Johnson S SlusarskiIndiaIvan Magalhaes QUALIFIED
Clifford I PaprockiRussiaBernardo Dominic NEW
Jefferson F NestleItalyStephen Shaw NEW
David C VocelkaSpainAmy Elsner NEW
Emily F SaylorsUnited KingdomIoni Bowcher NEW
Juan X MaletGermanyAmy Elsner NEGOTIATION
Claire Z ButtFranceBernardo Dominic NEGOTIATION
Juan L MacleadFranceBernardo Dominic NEW
Misaki M WieserSpainAmy Elsner NEGOTIATION
Silvio T FigeroaSpainXuxue Feng PROPOSAL
Morrow D BologniaFranceIvan Magalhaes NEW
Leon D SergiRussiaIoni Bowcher RENEWAL
Antonio G VenereSpainXuxue Feng RENEWAL
Frozen Columns
Name
Mujtaba H Venere
Kadeem P Figeroa
Kaitlin C Foller
Jennifer H Royster
Mayumi C Wieser
Costa F Poquette
Tony U Slusarski
Stacey I Chui
Morrow Z Malet
Kaitlin I Saylors
Wickens U Inouye
Mujtaba N Rim
Tony A Ferencz
Maria J Slusarski
Chavez E Shinko
Munro R Kolmetz
David I Amigon
Juan T Perin
Julie V Marrier
Silvio N Figeroa
Izzy X Schemmer
Jones I Morasca
Smith L Ruta
Silvio F Campain
Ashley F Gaucho
Aruna G Rulapaugh
Isabel C Dilliard
Ashley G Schemmer
Smith M Saylors
Julie Q Perin
Kadeem X Morasca
Tony K Tollner
Salvatore B Marrier
Morrow W Poquette
Kaitlin F Royster
James V Glick
Rodrigues U Garufi
Smith M Sergi
Alejandro Y Nicka
Johnson G Inouye
Jeanfrancois Z Paprocki
Francesco W Gillian
Jefferson V Ostrosky
Chavez U Figeroa
Clifford W Perin
Adams C Doe
Chavez M Caldarera
Francesco Q Bowley
Munro G Garufi
Antonio W Morasca
IdCountryDate
1000Brazil2024-03-03
1001Australia2024-03-14
1002France2024-03-16
1003Spain2024-03-10
1004Germany2024-03-14
1005Germany2024-03-02
1006Australia2024-03-07
1007Spain2024-03-05
1008India2024-03-11
1009Brazil2024-03-17
1010United Kingdom2024-03-10
1011France2024-03-13
1012Brazil2024-03-01
1013Japan2024-03-18
1014India2024-03-09
1015Brazil2024-02-20
1016Argentina2024-02-29
1017Italy2024-03-13
1018Australia2024-02-20
1019India2024-02-19
1020Russia2024-03-17
1021Australia2024-03-12
1022Spain2024-02-19
1023India2024-03-03
1024Argentina2024-03-04
1025Russia2024-03-18
1026Italy2024-02-28
1027Russia2024-03-04
1028Canada2024-03-07
1029Russia2024-02-25
1030India2024-03-12
1031Germany2024-02-19
1032Germany2024-02-25
1033Italy2024-03-06
1034India2024-02-19
1035India2024-03-11
1036Brazil2024-03-18
1037Australia2024-03-17
1038Brazil2024-03-02
1039Argentina2024-03-01
1040Germany2024-03-14
1041Australia2024-03-12
1042Italy2024-03-01
1043Brazil2024-02-18
1044Russia2024-03-15
1045Brazil2024-02-23
1046United Kingdom2024-03-11
1047United Kingdom2024-03-17
1048Spain2024-03-14
1049United Kingdom2024-03-03

On-Demand Data

NameIdCountryDate
Aruna Q Royster1000Italy2024-02-21
Emily E Caudy1001Spain2024-03-01
Sinclair S Darakjy1002Italy2024-03-12
Costa N Ruta1003India2024-03-09
Munro K Marrier1004Brazil2024-03-06
Ricardo T Caudy1005Germany2024-02-23
Maisha K Slusarski1006Australia2024-02-25
Maria P Wieser1007India2024-03-09
Darci G Wieser1008Argentina2024-03-12
Maisha A Slusarski1009Spain2024-03-08
Mujtaba C Ferencz1010Brazil2024-03-12
Silvio K Butt1011Russia2024-03-01
Jeanfrancois G Vocelka1012Italy2024-03-11
Faith J Maclead1013Argentina2024-03-16
Octavia G Ruta1014Brazil2024-03-04
Maisha K Butt1015Russia2024-02-29
Julie Y Rim1016France2024-02-19
Aditya U Foller1017Italy2024-03-17
Izzy R Flosi1018India2024-02-28
Arvin K Sergi1019India2024-02-19
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Emily K FigeroaItalyIvan Magalhaes PROPOSAL
Clifford F DilliardAustraliaIoni Bowcher PROPOSAL
Kaitlin B KuskoCanadaAmy Elsner UNQUALIFIED
Jefferson R GillianSpainElwin Sharvill RENEWAL
Jefferson E DoeRussiaAmy Elsner UNQUALIFIED
Stacey D RoysterIndiaStephen Shaw NEW
Izzy V GauchoCanadaAmy Elsner PROPOSAL
Maria L KuskoBrazilStephen Shaw PROPOSAL
Deepesh T StockhamSpainIvan Magalhaes PROPOSAL
Jennifer D NestleUnited KingdomIvan Magalhaes PROPOSAL
Maisha N SchemmerItalyStephen Shaw NEW
Kadeem S StockhamCanadaStephen Shaw RENEWAL
Leja O DoeAustraliaXuxue Feng RENEWAL
Francesco M RutaSpainAmy Elsner NEGOTIATION
Julie Y VocelkaCanadaIvan Magalhaes RENEWAL
Leja V FlosiIndiaOnyama Limba PROPOSAL
Deepesh I VenereAustraliaIoni Bowcher UNQUALIFIED
Nicolas Y VocelkaArgentinaAmy Elsner RENEWAL
Claire I BowleyArgentinaAmy Elsner NEGOTIATION
Leja J ButtCanadaIvan Magalhaes UNQUALIFIED
Greenwood Z CaldareraItalyBernardo Dominic RENEWAL
David W DilliardFranceOnyama Limba NEGOTIATION
Juan U MarrierArgentinaOnyama Limba RENEWAL
Jeanfrancois C ButtBrazilIoni Bowcher QUALIFIED
Leja E PoquetteJapanIoni Bowcher UNQUALIFIED
Julie J MaletItalyIoni Bowcher QUALIFIED
Leon Y MaletBrazilAmy Elsner RENEWAL
Jones F VenereGermanyBernardo Dominic NEW
Misaki N CampainFranceOnyama Limba NEW
Ashley J SaylorsUnited KingdomBernardo Dominic UNQUALIFIED
Munro Y StockhamCanadaXuxue Feng NEW
Antonio H DoeArgentinaBernardo Dominic NEGOTIATION
Cody K BriddickCanadaAmy Elsner UNQUALIFIED
Salvatore F StockhamUnited KingdomBernardo Dominic NEGOTIATION
Darci H MaletRussiaOnyama Limba RENEWAL
Aika Y CaldareraArgentinaElwin Sharvill NEGOTIATION
Octavia R KuskoSpainXuxue Feng PROPOSAL
Antonio D PerinSpainAsiya Javayant NEGOTIATION
Chavez P WieserAustraliaAsiya Javayant RENEWAL
Jeanfrancois F DarakjyArgentinaOnyama Limba 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>