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
Smith S OstroskyCanadaAnna Fali QUALIFIED
Deepesh W SergiBrazilOnyama Limba QUALIFIED
Greenwood F ButtIndiaXuxue Feng QUALIFIED
Salvatore E GarufiSpainAmy Elsner QUALIFIED
Francesco V NickaUnited KingdomOnyama Limba NEGOTIATION
Nicolas K MorascaArgentinaAmy Elsner RENEWAL
Maria X BologniaUnited KingdomOnyama Limba QUALIFIED
Silvio U BowleyRussiaAnna Fali PROPOSAL
Claire G PoquetteIndiaBernardo Dominic QUALIFIED
Morrow A GarufiAustraliaElwin Sharvill PROPOSAL
Aruna I WieserJapanAsiya Javayant NEW
Silvio C GillianJapanXuxue Feng UNQUALIFIED
Sinclair F VenereUnited KingdomElwin Sharvill UNQUALIFIED
Maisha I IturbideArgentinaIoni Bowcher NEGOTIATION
Greenwood M RulapaughFranceOnyama Limba UNQUALIFIED
Antonio G PerinArgentinaOnyama Limba QUALIFIED
Rodrigues B CaldareraRussiaAmy Elsner NEGOTIATION
Cody O InouyeItalyBernardo Dominic NEW
Ivar I RutaIndiaStephen Shaw RENEWAL
Cody U SergiArgentinaIvan Magalhaes QUALIFIED
Wickens T GarufiBrazilElwin Sharvill NEGOTIATION
Antonio O MacleadGermanyIvan Magalhaes UNQUALIFIED
Rodrigues G DoeUnited KingdomXuxue Feng QUALIFIED
Izzy K CampainFranceStephen Shaw NEGOTIATION
Johnson R FerenczGermanyIvan Magalhaes PROPOSAL
Francesco Q VenereIndiaIoni Bowcher RENEWAL
Jennifer Y DarakjyJapanIvan Magalhaes NEW
Antonio X SlusarskiRussiaBernardo Dominic PROPOSAL
Alejandro A RoysterIndiaStephen Shaw NEW
Jeanfrancois G FollerFranceIvan Magalhaes RENEWAL
Costa N DarakjyGermanyAnna Fali RENEWAL
Faith B BologniaUnited KingdomElwin Sharvill NEW
Julie A PoquetteGermanyIoni Bowcher NEW
Munro R NickaItalyOnyama Limba PROPOSAL
Emily C MacleadJapanAmy Elsner RENEWAL
Ashley R BowleySpainOnyama Limba QUALIFIED
Emily N BowleyUnited KingdomAmy Elsner NEW
James Q NestleUnited KingdomBernardo Dominic UNQUALIFIED
Tony O ChuiRussiaXuxue Feng PROPOSAL
Jennifer D FlosiSpainElwin Sharvill RENEWAL
Kaitlin M GlickSpainIvan Magalhaes RENEWAL
Julie S SlusarskiItalyStephen Shaw UNQUALIFIED
Stacey U KuskoIndiaStephen Shaw RENEWAL
Smith T StockhamCanadaXuxue Feng RENEWAL
Mujtaba M MaletItalyIoni Bowcher QUALIFIED
Aruna L PaprockiArgentinaAmy Elsner NEW
Misaki T GauchoItalyStephen Shaw NEW
Alejandro F GlickArgentinaIoni Bowcher UNQUALIFIED
Isabel R GarufiGermanyStephen Shaw RENEWAL
James U ButtIndiaElwin Sharvill NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Mayumi Q MorascaItalyIoni Bowcher NEW
Claire R MaletFranceXuxue Feng RENEWAL
Salvatore V AmigonGermanyAnna Fali NEGOTIATION
Aditya O PerinFranceIvan Magalhaes NEW
Stacey V SlusarskiCanadaAmy Elsner RENEWAL
Johnson H DoeJapanElwin Sharvill RENEWAL
Kadeem L NickaItalyAsiya Javayant PROPOSAL
Leja I FerenczGermanyAmy Elsner QUALIFIED
Jennifer G RutaFranceAsiya Javayant RENEWAL
Izzy G OldroydSpainXuxue Feng UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Greenwood Y PoquetteCanada2024-04-21Morlong Associates NEGOTIATION33Xuxue Feng
1001Tony Q NestleGermany2024-04-20Dorl, James J Esq PROPOSAL60Bernardo Dominic
1002Izzy G StensethJapan2024-04-20Buckley Miller Wright UNQUALIFIED84Onyama Limba
1003Isabel Z SaylorsGermany2024-04-06Printing Dimensions NEGOTIATION22Ioni Bowcher
1004Arvin O GlickCanada2024-04-12Chapman, Ross E Esq NEGOTIATION4Ivan Magalhaes
1005Kadeem H StockhamBrazil2024-04-02Printing Dimensions PROPOSAL92Stephen Shaw
1006Claire K CampainBrazil2024-04-04Printing Dimensions NEGOTIATION52Bernardo Dominic
1007Kaitlin C GauchoIndia2024-04-03Feiner Bros UNQUALIFIED82Onyama Limba
1008David A FollerFrance2024-04-14Feiner Bros PROPOSAL24Amy Elsner
1009Arvin S GillianArgentina2024-04-11Feiner Bros NEW37Bernardo Dominic
1010Isabel D WaycottIndia2024-04-24Rousseaux, Michael Esq RENEWAL68Onyama Limba
1011Silvio M CaudyCanada2024-04-14Chanay, Jeffrey A Esq RENEWAL81Bernardo Dominic
1012Arvin J WhobreyGermany2024-04-06Rousseaux, Michael Esq NEGOTIATION45Stephen Shaw
1013Leon Z GlickSpain2024-04-15Rangoni Of Florence NEW86Amy Elsner
1014Johnson Q WieserUnited Kingdom2024-03-29Feiner Bros QUALIFIED45Stephen Shaw
1015Clifford H SlusarskiSpain2024-04-27Commercial Press NEGOTIATION6Bernardo Dominic
1016Arvin Z AmigonBrazil2024-04-24Truhlar And Truhlar Attys NEGOTIATION14Amy Elsner
1017Jeanfrancois B KuskoAustralia2024-04-15Chanay, Jeffrey A Esq PROPOSAL62Onyama Limba
1018Darci L FerenczUnited Kingdom2024-04-27Morlong Associates NEGOTIATION86Asiya Javayant
1019Jefferson Z RulapaughItaly2024-03-30Commercial Press PROPOSAL7Stephen Shaw
1020Jeanfrancois U BriddickJapan2024-04-12Chapman, Ross E Esq RENEWAL49Amy Elsner
1021Francesco K VocelkaFrance2024-04-07Feltz Printing Service UNQUALIFIED77Ioni Bowcher
1022Tony X OstroskyAustralia2024-04-17King, Christopher A Esq NEGOTIATION44Ioni Bowcher
1023Ivar J StensethItaly2024-04-22King, Christopher A Esq NEGOTIATION89Xuxue Feng
1024Emily W MacleadFrance2024-04-02Commercial Press NEGOTIATION6Ivan Magalhaes
1025Adams X SchemmerBrazil2024-04-06Chapman, Ross E Esq NEGOTIATION48Onyama Limba
1026Clifford C InouyeAustralia2024-04-15Rangoni Of Florence PROPOSAL27Xuxue Feng
1027Aika R GillianSpain2024-04-26Feltz Printing Service NEW76Amy Elsner
1028Aruna J SaylorsSpain2024-04-26Rousseaux, Michael Esq NEW41Amy Elsner
1029Adams K MaletSpain2024-04-17King, Christopher A Esq PROPOSAL41Stephen Shaw
1030Emily E MacleadBrazil2024-04-24Feiner Bros NEW47Anna Fali
1031Wickens N CaudyCanada2024-04-07Chemel, James L Cpa NEGOTIATION56Ioni Bowcher
1032Mujtaba Z FlosiFrance2024-04-07Benton, John B Jr QUALIFIED49Asiya Javayant
1033Ashley S GillianSpain2024-04-24Morlong Associates NEW93Onyama Limba
1034Clifford F RulapaughIndia2024-04-04Chemel, James L Cpa UNQUALIFIED36Amy Elsner
1035Jennifer A GillianRussia2024-04-16Commercial Press PROPOSAL75Stephen Shaw
1036Alejandro J StockhamAustralia2024-04-24Dorl, James J Esq NEGOTIATION51Ioni Bowcher
1037Alejandro R CaudyArgentina2024-04-02Rangoni Of Florence NEGOTIATION16Amy Elsner
1038Wickens R PoquetteIndia2024-04-03Rousseaux, Michael Esq NEGOTIATION40Ioni Bowcher
1039Johnson C MorascaJapan2024-04-09Truhlar And Truhlar Attys NEW68Amy Elsner
1040Tony K FollerGermany2024-03-30Chemel, James L Cpa RENEWAL26Amy Elsner
1041Maria Q DarakjyUnited Kingdom2024-04-15King, Christopher A Esq UNQUALIFIED28Asiya Javayant
1042Antonio T DoeCanada2024-04-10Commercial Press RENEWAL93Anna Fali
1043Emily E FerenczBrazil2024-04-02Chemel, James L Cpa RENEWAL43Ivan Magalhaes
1044Greenwood L KuskoUnited Kingdom2024-04-01Morlong Associates NEW2Xuxue Feng
1045Costa D PoquetteAustralia2024-04-22Truhlar And Truhlar Attys NEGOTIATION32Anna Fali
1046Cody Y PaprockiFrance2024-03-29Dorl, James J Esq UNQUALIFIED92Xuxue Feng
1047Darci L CaudyItaly2024-04-04King, Christopher A Esq RENEWAL57Onyama Limba
1048Kadeem Z RimIndia2024-04-10Rousseaux, Michael Esq RENEWAL91Amy Elsner
1049Jones G TollnerUnited Kingdom2024-04-17Chemel, James L Cpa RENEWAL16Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Mayumi L FigeroaArgentinaBernardo Dominic NEGOTIATION
Jeanfrancois W KuskoItalyStephen Shaw NEGOTIATION
Morrow Y PerinRussiaIvan Magalhaes RENEWAL
Stacey A InouyeFranceAnna Fali NEW
Murillo A InouyeItalyAnna Fali NEW
Julie U RulapaughBrazilXuxue Feng PROPOSAL
Leja Z ButtBrazilElwin Sharvill NEW
Alejandro X RulapaughItalyOnyama Limba QUALIFIED
Claire T DilliardItalyAnna Fali QUALIFIED
Arvin F BowleyIndiaIoni Bowcher NEW
Nicolas Y DilliardRussiaAmy Elsner NEW
Arvin M GauchoGermanyOnyama Limba PROPOSAL
Jennifer B PerinSpainIvan Magalhaes PROPOSAL
Adams G BologniaBrazilOnyama Limba RENEWAL
Salvatore Q FerenczJapanStephen Shaw QUALIFIED
Leja K BologniaBrazilAsiya Javayant UNQUALIFIED
Wickens Y ButtUnited KingdomStephen Shaw UNQUALIFIED
Jeanfrancois O AmigonJapanAnna Fali NEGOTIATION
Adams H MacleadFranceBernardo Dominic NEW
Chavez B KolmetzUnited KingdomAnna Fali QUALIFIED
Silvio H FollerGermanyStephen Shaw QUALIFIED
Chavez A BriddickRussiaBernardo Dominic QUALIFIED
Antonio Y SergiRussiaOnyama Limba RENEWAL
Jeanfrancois W GauchoCanadaIvan Magalhaes NEGOTIATION
Greenwood N GlickJapanElwin Sharvill RENEWAL
Octavia Z AmigonJapanIoni Bowcher QUALIFIED
Murillo R SergiIndiaAnna Fali QUALIFIED
Chavez O StensethCanadaAmy Elsner QUALIFIED
Emily E RulapaughArgentinaAsiya Javayant NEW
Tony S MarrierAustraliaXuxue Feng NEGOTIATION
Arvin J BowleyGermanyXuxue Feng NEGOTIATION
Munro P RulapaughUnited KingdomIvan Magalhaes RENEWAL
Chavez V PerinIndiaXuxue Feng UNQUALIFIED
Claire V FollerBrazilXuxue Feng UNQUALIFIED
Salvatore F PerinJapanStephen Shaw RENEWAL
Salvatore K CampainRussiaElwin Sharvill NEGOTIATION
Wickens P OldroydArgentinaIoni Bowcher PROPOSAL
Octavia P WhobreyAustraliaIvan Magalhaes UNQUALIFIED
Jennifer N AlbaresSpainOnyama Limba QUALIFIED
Morrow T MorascaFranceAsiya Javayant QUALIFIED
Arvin M CampainAustraliaStephen Shaw NEW
Darci G FigeroaSpainIvan Magalhaes UNQUALIFIED
Emily U GlickFranceAmy Elsner NEGOTIATION
Wickens R MaletRussiaIvan Magalhaes NEGOTIATION
Izzy D OldroydFranceIvan Magalhaes RENEWAL
Ricardo J AlbaresCanadaIvan Magalhaes NEGOTIATION
Adams L ShinkoBrazilXuxue Feng NEW
Ashley B BologniaSpainIvan Magalhaes NEW
Adams H RutaAustraliaAsiya Javayant PROPOSAL
Mujtaba U VocelkaGermanyIvan Magalhaes NEW
Frozen Columns
Name
Costa Q Malet
Kaitlin C Malet
Jones T Foller
Leon B Nicka
Antonio W Paprocki
Aruna E Morasca
Jones R Whobrey
Ashley D Shinko
Jennifer M Briddick
Jennifer K Inouye
Kadeem R Caudy
Maria B Butt
Adams H Stenseth
Clifford E Inouye
Izzy F Schemmer
Izzy N Saylors
Kaitlin P Caldarera
Kaitlin P Malet
Tony D Ostrosky
James Y Amigon
Nicolas D Malet
Salvatore N Caudy
Aditya Y Iturbide
Tony D Saylors
Ricardo J Foller
Francesco X Rulapaugh
Morrow I Ferencz
Deepesh A Flosi
Smith R Figeroa
Jeanfrancois Y Poquette
Maria U Bowley
Juan C Flosi
Claire Q Iturbide
Jeanfrancois C Kusko
Clifford F Caudy
Alejandro X Caldarera
David K Venere
Ashley V Chui
Johnson K Amigon
James X Doe
Morrow M Tollner
Rodrigues K Kolmetz
Stacey N Caudy
Wickens J Darakjy
Antonio S Caudy
Costa K Perin
Aditya F Chui
Munro S Slusarski
Munro I Albares
Kadeem A Bowley
IdCountryDate
1000Argentina2024-03-31
1001Argentina2024-04-03
1002Russia2024-03-30
1003Canada2024-04-22
1004Argentina2024-04-25
1005Canada2024-04-14
1006Argentina2024-04-14
1007Canada2024-04-02
1008Japan2024-04-09
1009United Kingdom2024-04-14
1010Canada2024-04-10
1011Australia2024-04-16
1012India2024-04-06
1013India2024-04-01
1014United Kingdom2024-04-01
1015Russia2024-04-15
1016United Kingdom2024-03-31
1017Australia2024-04-02
1018Spain2024-04-27
1019Argentina2024-03-30
1020France2024-04-10
1021India2024-04-23
1022India2024-04-03
1023Argentina2024-04-23
1024Argentina2024-04-13
1025United Kingdom2024-04-18
1026Russia2024-04-03
1027Japan2024-04-27
1028Germany2024-04-20
1029United Kingdom2024-04-25
1030Australia2024-04-05
1031Japan2024-04-25
1032Brazil2024-04-20
1033Australia2024-04-27
1034Canada2024-04-18
1035United Kingdom2024-04-13
1036Brazil2024-04-11
1037United Kingdom2024-04-13
1038France2024-04-08
1039Brazil2024-03-30
1040Spain2024-04-12
1041Spain2024-04-02
1042Spain2024-04-27
1043Japan2024-04-26
1044Argentina2024-04-17
1045India2024-04-21
1046Argentina2024-04-21
1047Argentina2024-04-19
1048Spain2024-04-05
1049France2024-04-12

On-Demand Data

NameIdCountryDate
Juan A Doe1000Argentina2024-04-10
Wickens B Bolognia1001Germany2024-04-27
Alejandro X Gaucho1002India2024-04-05
Leon J Rulapaugh1003United Kingdom2024-04-24
Arvin G Whobrey1004Italy2024-04-05
Kaitlin T Ruta1005India2024-04-26
Izzy J Malet1006Brazil2024-04-05
Wickens H Tollner1007Japan2024-04-14
Misaki S Stenseth1008Russia2024-04-20
Salvatore Z Albares1009France2024-04-14
Adams Z Kolmetz1010France2024-04-19
Deepesh P Caldarera1011Russia2024-04-09
Kaitlin C Tollner1012Brazil2024-04-12
David L Kolmetz1013Spain2024-04-18
Juan H Doe1014Canada2024-04-17
James O Gaucho1015India2024-04-24
Silvio L Briddick1016France2024-04-15
Rodrigues D Caldarera1017Spain2024-04-25
Sinclair H Figeroa1018Japan2024-04-11
Silvio G Slusarski1019Germany2024-04-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Stacey R WieserAustraliaAsiya Javayant NEW
Greenwood L InouyeSpainIvan Magalhaes NEW
Francesco R IturbideSpainElwin Sharvill UNQUALIFIED
Claire S VenereArgentinaElwin Sharvill PROPOSAL
Jennifer E RutaJapanBernardo Dominic UNQUALIFIED
Stacey U DarakjyIndiaStephen Shaw NEW
Deepesh P MaletFranceIoni Bowcher UNQUALIFIED
Maisha R FigeroaJapanBernardo Dominic QUALIFIED
Izzy H DarakjyUnited KingdomAnna Fali NEGOTIATION
Alejandro W AmigonAustraliaBernardo Dominic QUALIFIED
Darci R KolmetzSpainAnna Fali RENEWAL
Johnson M RulapaughSpainAsiya Javayant RENEWAL
Cody T PerinCanadaStephen Shaw NEW
Emily V ButtGermanyXuxue Feng NEW
Munro J WieserBrazilOnyama Limba PROPOSAL
Nicolas P RutaUnited KingdomStephen Shaw NEGOTIATION
Greenwood Z SchemmerRussiaIoni Bowcher NEW
Ivar I SaylorsArgentinaElwin Sharvill NEGOTIATION
Mayumi M BologniaIndiaAsiya Javayant NEW
Julie W RoysterFranceIoni Bowcher RENEWAL
Aruna L PoquetteBrazilAmy Elsner QUALIFIED
James E AlbaresCanadaElwin Sharvill NEGOTIATION
Tony W BowleyGermanyStephen Shaw QUALIFIED
Antonio G VenereIndiaStephen Shaw NEGOTIATION
Murillo D RimCanadaAmy Elsner NEW
Aditya H RutaBrazilAmy Elsner NEGOTIATION
Isabel X WhobreyCanadaAsiya Javayant QUALIFIED
Morrow Z InouyeAustraliaAmy Elsner NEW
Alejandro P PaprockiGermanyIvan Magalhaes QUALIFIED
Rodrigues I SlusarskiItalyBernardo Dominic NEGOTIATION
Mujtaba L ChuiAustraliaBernardo Dominic RENEWAL
Maria Z WaycottBrazilElwin Sharvill RENEWAL
Murillo K ShinkoItalyElwin Sharvill PROPOSAL
Julie B DarakjyJapanElwin Sharvill QUALIFIED
Cody T RulapaughJapanAnna Fali PROPOSAL
Nicolas Y InouyeAustraliaXuxue Feng NEGOTIATION
Costa T MaletAustraliaStephen Shaw PROPOSAL
Johnson E ShinkoUnited KingdomIvan Magalhaes QUALIFIED
Murillo L VenereCanadaElwin Sharvill PROPOSAL
Maisha U RoysterGermanyBernardo Dominic UNQUALIFIED

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