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
Arvin V SergiCanadaAsiya Javayant NEW
Stacey B RutaUnited KingdomOnyama Limba PROPOSAL
Chavez B ChuiUnited KingdomElwin Sharvill UNQUALIFIED
Maria L GarufiGermanyXuxue Feng UNQUALIFIED
Jeanfrancois E RimUnited KingdomBernardo Dominic NEW
Deepesh K FollerRussiaAmy Elsner UNQUALIFIED
Maria Z KuskoRussiaStephen Shaw RENEWAL
Faith R VocelkaUnited KingdomIoni Bowcher QUALIFIED
Ivar S WhobreyRussiaElwin Sharvill UNQUALIFIED
Silvio G MaletJapanIvan Magalhaes QUALIFIED
Sinclair W AmigonGermanyXuxue Feng QUALIFIED
Munro K FigeroaJapanElwin Sharvill PROPOSAL
Octavia G PaprockiRussiaBernardo Dominic RENEWAL
Kaitlin R IturbideBrazilBernardo Dominic NEW
Rodrigues E WieserUnited KingdomIvan Magalhaes UNQUALIFIED
Juan G GlickCanadaOnyama Limba PROPOSAL
Aika F MorascaGermanyXuxue Feng NEW
Octavia W OstroskyJapanBernardo Dominic NEW
Izzy Y ButtCanadaOnyama Limba PROPOSAL
Octavia H VenereRussiaStephen Shaw UNQUALIFIED
David V OstroskySpainAmy Elsner QUALIFIED
Isabel F StensethJapanXuxue Feng UNQUALIFIED
Aika T WieserJapanAsiya Javayant QUALIFIED
Greenwood R DarakjyGermanyAsiya Javayant QUALIFIED
Smith E PoquetteUnited KingdomIvan Magalhaes NEGOTIATION
Julie A BriddickIndiaAnna Fali NEW
Jennifer T GauchoJapanAmy Elsner NEGOTIATION
Stacey L FigeroaIndiaAnna Fali NEGOTIATION
Cody U VenereUnited KingdomAnna Fali PROPOSAL
Costa G GarufiCanadaAmy Elsner NEGOTIATION
Ivar T SergiIndiaXuxue Feng RENEWAL
Cody F BriddickIndiaAnna Fali NEW
Izzy Z MaletAustraliaIvan Magalhaes NEGOTIATION
Kaitlin Y WhobreyArgentinaAnna Fali QUALIFIED
Morrow R RimFranceElwin Sharvill RENEWAL
David Y BologniaBrazilIoni Bowcher NEW
Rodrigues C KuskoArgentinaElwin Sharvill NEGOTIATION
Johnson Y SaylorsUnited KingdomIoni Bowcher UNQUALIFIED
Misaki H WaycottItalyXuxue Feng NEGOTIATION
Ricardo S NickaFranceStephen Shaw QUALIFIED
Chavez A WhobreySpainStephen Shaw NEW
Maisha I StensethCanadaAnna Fali RENEWAL
Stacey Y MaletSpainOnyama Limba NEGOTIATION
James U AlbaresFranceIvan Magalhaes RENEWAL
Julie J StensethFranceIoni Bowcher PROPOSAL
Costa O RimArgentinaOnyama Limba NEW
Stacey Z RulapaughAustraliaAnna Fali NEGOTIATION
Faith I SchemmerArgentinaAnna Fali NEGOTIATION
Adams J MacleadIndiaStephen Shaw PROPOSAL
Salvatore K SchemmerSpainAnna Fali UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Aditya Q GlickItalyIoni Bowcher NEGOTIATION
Leja E RoysterGermanyOnyama Limba NEW
Adams Y FollerUnited KingdomIoni Bowcher NEGOTIATION
Rodrigues D ChuiRussiaXuxue Feng QUALIFIED
Silvio M CaudyRussiaIoni Bowcher PROPOSAL
Murillo C PoquetteGermanyBernardo Dominic QUALIFIED
Deepesh R MacleadFranceIoni Bowcher NEGOTIATION
Ricardo V RoysterGermanyAsiya Javayant RENEWAL
Adams H PaprockiAustraliaElwin Sharvill NEGOTIATION
Darci J PerinFranceAmy Elsner PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio X GarufiUnited Kingdom2024-05-12Morlong Associates NEW8Amy Elsner
1001Sinclair R MaletBrazil2024-05-10Feltz Printing Service PROPOSAL84Elwin Sharvill
1002Claire K GarufiSpain2024-05-04Truhlar And Truhlar Attys QUALIFIED38Anna Fali
1003Ricardo Q SaylorsArgentina2024-05-17Printing Dimensions UNQUALIFIED99Ioni Bowcher
1004Misaki H VenereCanada2024-05-09Chapman, Ross E Esq QUALIFIED82Ivan Magalhaes
1005Aika B FlosiFrance2024-05-15Morlong Associates NEGOTIATION86Xuxue Feng
1006Kadeem L VocelkaRussia2024-04-21Feltz Printing Service RENEWAL34Onyama Limba
1007Sinclair U ShinkoArgentina2024-04-27Morlong Associates QUALIFIED30Ioni Bowcher
1008James P BowleyRussia2024-05-17Truhlar And Truhlar Attys NEW72Xuxue Feng
1009Chavez X IturbideItaly2024-04-23Morlong Associates RENEWAL68Elwin Sharvill
1010Munro E AlbaresArgentina2024-04-26Buckley Miller Wright RENEWAL14Stephen Shaw
1011Jones K KuskoUnited Kingdom2024-05-20Rangoni Of Florence RENEWAL4Ioni Bowcher
1012Costa F RutaFrance2024-04-25Chanay, Jeffrey A Esq PROPOSAL59Ivan Magalhaes
1013Maisha Y ChuiItaly2024-05-02Morlong Associates NEW68Bernardo Dominic
1014Munro V WaycottAustralia2024-04-23Dorl, James J Esq NEGOTIATION32Ioni Bowcher
1015Octavia J TollnerJapan2024-05-04Commercial Press UNQUALIFIED66Anna Fali
1016Silvio V RimCanada2024-05-13Feltz Printing Service NEW22Onyama Limba
1017Emily W BologniaSpain2024-04-22Truhlar And Truhlar Attys UNQUALIFIED90Amy Elsner
1018Wickens C SchemmerGermany2024-05-12Feltz Printing Service QUALIFIED29Stephen Shaw
1019Wickens G PoquetteFrance2024-04-22Feltz Printing Service NEGOTIATION39Onyama Limba
1020Leon Z VenereIndia2024-05-07Feiner Bros QUALIFIED17Ivan Magalhaes
1021Leon W ChuiJapan2024-05-15Rousseaux, Michael Esq UNQUALIFIED90Amy Elsner
1022Ashley T FlosiUnited Kingdom2024-05-09Rangoni Of Florence NEGOTIATION13Asiya Javayant
1023Morrow C BologniaCanada2024-04-24Rangoni Of Florence QUALIFIED8Onyama Limba
1024Aditya B WieserRussia2024-05-10Truhlar And Truhlar Attys NEGOTIATION62Onyama Limba
1025Murillo F NestleIndia2024-04-27King, Christopher A Esq UNQUALIFIED92Xuxue Feng
1026Kadeem K FigeroaGermany2024-05-03Feiner Bros RENEWAL25Xuxue Feng
1027Cody J SaylorsUnited Kingdom2024-04-25King, Christopher A Esq RENEWAL50Anna Fali
1028Aruna F RimSpain2024-05-04Chapman, Ross E Esq QUALIFIED31Ivan Magalhaes
1029Octavia K OstroskyAustralia2024-04-25King, Christopher A Esq NEW21Xuxue Feng
1030Ivar B OldroydItaly2024-04-28Truhlar And Truhlar Attys PROPOSAL70Onyama Limba
1031Claire I TollnerAustralia2024-05-16Morlong Associates NEW98Ivan Magalhaes
1032Nicolas K CampainRussia2024-05-16Buckley Miller Wright RENEWAL20Ivan Magalhaes
1033Octavia P NickaAustralia2024-04-21Benton, John B Jr PROPOSAL85Onyama Limba
1034Isabel Z StensethSpain2024-05-15Commercial Press NEGOTIATION10Amy Elsner
1035Murillo P IturbideIndia2024-05-02Rousseaux, Michael Esq RENEWAL54Onyama Limba
1036Jones I WaycottSpain2024-05-06Chemel, James L Cpa NEGOTIATION17Amy Elsner
1037Ashley X BriddickFrance2024-04-30Buckley Miller Wright QUALIFIED33Amy Elsner
1038Johnson U GarufiGermany2024-05-15Chanay, Jeffrey A Esq RENEWAL97Onyama Limba
1039Aika X BowleyCanada2024-05-08Benton, John B Jr QUALIFIED17Amy Elsner
1040David H StensethArgentina2024-05-04Printing Dimensions NEW90Asiya Javayant
1041Maria K IturbideUnited Kingdom2024-05-20Truhlar And Truhlar Attys PROPOSAL60Stephen Shaw
1042Alejandro C IturbideSpain2024-05-18Feiner Bros PROPOSAL30Anna Fali
1043David A KolmetzAustralia2024-04-23Feiner Bros UNQUALIFIED50Ioni Bowcher
1044Murillo C ChuiFrance2024-04-24Printing Dimensions NEW57Ioni Bowcher
1045Jennifer U RoysterSpain2024-04-25Printing Dimensions PROPOSAL44Onyama Limba
1046Maria C VocelkaUnited Kingdom2024-05-06Rangoni Of Florence QUALIFIED45Bernardo Dominic
1047Maisha I DoeIndia2024-05-13Commercial Press QUALIFIED34Onyama Limba
1048Johnson X GarufiArgentina2024-05-20Morlong Associates QUALIFIED70Asiya Javayant
1049Jeanfrancois I ButtRussia2024-05-04Printing Dimensions UNQUALIFIED19Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Jefferson U BologniaSpainOnyama Limba NEGOTIATION
Faith K RoysterSpainIvan Magalhaes NEGOTIATION
Alejandro H NestleFranceAsiya Javayant PROPOSAL
Sinclair E ShinkoJapanOnyama Limba UNQUALIFIED
Alejandro M StockhamAustraliaIvan Magalhaes UNQUALIFIED
Emily C KolmetzBrazilBernardo Dominic RENEWAL
Jeanfrancois K RimFranceBernardo Dominic RENEWAL
Munro N WaycottRussiaOnyama Limba NEGOTIATION
Greenwood A WaycottRussiaXuxue Feng RENEWAL
Sinclair J DilliardUnited KingdomIoni Bowcher UNQUALIFIED
Murillo N TollnerAustraliaElwin Sharvill NEW
Chavez R StockhamUnited KingdomElwin Sharvill QUALIFIED
Maria K CaldareraSpainAnna Fali RENEWAL
Rodrigues X MarrierRussiaAsiya Javayant PROPOSAL
Jones E CaudyUnited KingdomAnna Fali RENEWAL
Octavia C MorascaSpainIvan Magalhaes NEGOTIATION
Murillo J FollerGermanyOnyama Limba PROPOSAL
Johnson I SchemmerIndiaXuxue Feng NEW
Claire O InouyeGermanyAnna Fali PROPOSAL
Maisha E MacleadFranceIvan Magalhaes PROPOSAL
Kadeem M SergiItalyBernardo Dominic NEGOTIATION
Kadeem V DarakjyArgentinaBernardo Dominic UNQUALIFIED
Aditya B KolmetzFranceIvan Magalhaes NEGOTIATION
Deepesh T CaudyItalyAsiya Javayant QUALIFIED
Deepesh Y FigeroaSpainBernardo Dominic RENEWAL
Mayumi E ShinkoGermanyAsiya Javayant NEW
Adams U SaylorsArgentinaBernardo Dominic NEW
Julie W KuskoRussiaAsiya Javayant UNQUALIFIED
Jeanfrancois R MaletItalyAnna Fali PROPOSAL
Isabel E CaldareraFranceXuxue Feng RENEWAL
Jennifer T GillianSpainIoni Bowcher RENEWAL
Arvin M StockhamCanadaAnna Fali QUALIFIED
Arvin E RutaGermanyXuxue Feng PROPOSAL
Costa E AlbaresUnited KingdomAnna Fali NEGOTIATION
Juan I KuskoUnited KingdomIvan Magalhaes RENEWAL
Cody E MaletBrazilElwin Sharvill UNQUALIFIED
Ricardo A BologniaItalyAsiya Javayant QUALIFIED
Jefferson F FerenczSpainAnna Fali QUALIFIED
Morrow E ChuiBrazilIvan Magalhaes NEW
Mujtaba C ButtAustraliaOnyama Limba PROPOSAL
Munro W PerinIndiaXuxue Feng NEW
Rodrigues X MaletFranceAsiya Javayant QUALIFIED
Julie B DilliardFranceIvan Magalhaes RENEWAL
Darci G SergiItalyAnna Fali RENEWAL
Johnson H CampainUnited KingdomAnna Fali RENEWAL
Munro K WhobreyCanadaAnna Fali PROPOSAL
Mujtaba S AlbaresIndiaIoni Bowcher NEGOTIATION
Leja Q IturbideGermanyElwin Sharvill NEW
Chavez D NestleBrazilAsiya Javayant RENEWAL
Ricardo R FlosiSpainElwin Sharvill NEW
Frozen Columns
Name
Wickens P Whobrey
Misaki W Nestle
Chavez J Caldarera
Wickens J Paprocki
Smith U Stockham
Costa R Slusarski
Salvatore W Maclead
Sinclair A Caldarera
Deepesh E Maclead
James E Marrier
Johnson P Nestle
Salvatore E Whobrey
Juan K Tollner
Sinclair N Garufi
Adams O Perin
Mujtaba L Caudy
Johnson P Glick
Salvatore I Malet
Aditya X Rim
Tony I Garufi
Darci E Kolmetz
Antonio V Royster
Greenwood I Iturbide
Adams A Nestle
Darci O Dilliard
Jones A Saylors
James R Caudy
Leon A Whobrey
Jones N Marrier
Silvio F Kolmetz
Emily P Inouye
Jefferson S Briddick
Leja G Iturbide
Aika S Kusko
Nicolas Z Gillian
Smith L Gaucho
Juan T Bolognia
Ashley Y Doe
Nicolas I Garufi
Octavia L Glick
Sinclair F Butt
Kaitlin T Perin
Emily S Bolognia
Kadeem Z Bowley
Misaki U Flosi
Jennifer E Kusko
Emily U Venere
Izzy Y Amigon
Munro X Wieser
Tony A Poquette
IdCountryDate
1000Spain2024-05-05
1001India2024-05-13
1002Canada2024-05-10
1003Canada2024-04-28
1004Spain2024-05-01
1005Canada2024-05-16
1006Australia2024-04-27
1007Canada2024-05-15
1008Japan2024-05-19
1009France2024-05-17
1010India2024-05-09
1011United Kingdom2024-05-20
1012France2024-05-17
1013Argentina2024-05-12
1014United Kingdom2024-05-11
1015Spain2024-05-08
1016Brazil2024-05-08
1017Italy2024-04-26
1018Russia2024-05-14
1019Canada2024-05-08
1020Russia2024-04-23
1021India2024-04-25
1022India2024-05-10
1023Germany2024-04-24
1024Japan2024-05-18
1025United Kingdom2024-05-02
1026United Kingdom2024-05-12
1027Japan2024-04-26
1028Russia2024-04-29
1029Japan2024-05-17
1030Brazil2024-05-07
1031Brazil2024-05-15
1032Argentina2024-04-24
1033Argentina2024-05-05
1034Russia2024-05-12
1035Italy2024-05-10
1036United Kingdom2024-05-07
1037Italy2024-05-13
1038Russia2024-05-08
1039Australia2024-05-08
1040United Kingdom2024-04-25
1041France2024-04-25
1042United Kingdom2024-05-05
1043Brazil2024-05-18
1044Argentina2024-05-19
1045Italy2024-05-15
1046Argentina2024-05-05
1047Brazil2024-04-29
1048Canada2024-05-11
1049France2024-04-25

On-Demand Data

NameIdCountryDate
Darci G Marrier1000Argentina2024-04-22
Morrow Q Marrier1001Italy2024-04-23
Munro C Kolmetz1002France2024-05-14
Smith G Marrier1003Italy2024-04-28
Chavez A Marrier1004France2024-05-15
Stacey Q Vocelka1005Brazil2024-05-18
Kaitlin O Poquette1006Japan2024-05-06
Silvio V Nicka1007Argentina2024-05-17
Izzy E Albares1008France2024-04-28
Murillo M Garufi1009Canada2024-05-02
Faith H Chui1010Canada2024-05-10
Maisha L Doe1011Spain2024-04-26
Ivar C Rim1012France2024-05-07
Munro H Morasca1013United Kingdom2024-05-06
Jennifer O Bowley1014Canada2024-04-23
Greenwood U Ruta1015Australia2024-05-02
Jennifer D Albares1016Italy2024-04-27
Deepesh E Darakjy1017Australia2024-04-22
Misaki M Rulapaugh1018Italy2024-05-18
Stacey A Dilliard1019United Kingdom2024-05-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
David C GarufiRussiaXuxue Feng RENEWAL
Ashley D ChuiGermanyIoni Bowcher PROPOSAL
Julie O DoeAustraliaOnyama Limba RENEWAL
Silvio S OldroydUnited KingdomAnna Fali NEGOTIATION
Jefferson M MaletFranceIvan Magalhaes QUALIFIED
Octavia L MarrierIndiaAnna Fali UNQUALIFIED
Cody R RoysterItalyAsiya Javayant PROPOSAL
Jones F RoysterUnited KingdomAsiya Javayant QUALIFIED
Kadeem X BowleyFranceOnyama Limba PROPOSAL
David E VenereSpainXuxue Feng UNQUALIFIED
Jones M ChuiJapanBernardo Dominic RENEWAL
Jones O InouyeItalyAmy Elsner NEGOTIATION
Maria T SaylorsAustraliaAmy Elsner QUALIFIED
Jones S RulapaughCanadaAnna Fali QUALIFIED
Cody Y PoquetteJapanAnna Fali RENEWAL
Aika I BowleyArgentinaElwin Sharvill UNQUALIFIED
Salvatore M ShinkoAustraliaOnyama Limba NEW
Chavez O KolmetzArgentinaBernardo Dominic UNQUALIFIED
Maisha Y BologniaRussiaStephen Shaw UNQUALIFIED
Morrow D GlickGermanyIoni Bowcher RENEWAL
Aruna Y SchemmerItalyAsiya Javayant QUALIFIED
Alejandro Q WhobreyJapanAnna Fali NEGOTIATION
Kaitlin T FollerBrazilBernardo Dominic PROPOSAL
Emily I GauchoBrazilIvan Magalhaes NEGOTIATION
Mujtaba I PaprockiGermanyElwin Sharvill QUALIFIED
Aika V VenereGermanyXuxue Feng PROPOSAL
Mayumi Z WhobreyJapanElwin Sharvill NEGOTIATION
Maisha T SchemmerFranceStephen Shaw PROPOSAL
Juan X FollerIndiaAnna Fali PROPOSAL
Alejandro L KolmetzRussiaIvan Magalhaes UNQUALIFIED
Johnson W RimUnited KingdomAmy Elsner UNQUALIFIED
Octavia J NickaGermanyBernardo Dominic NEW
Arvin D StockhamIndiaElwin Sharvill QUALIFIED
Mayumi M OstroskyAustraliaStephen Shaw QUALIFIED
Ivar I SchemmerJapanElwin Sharvill RENEWAL
Munro Z BologniaItalyXuxue Feng NEW
Aditya N OldroydArgentinaIvan Magalhaes UNQUALIFIED
Nicolas Z MarrierSpainElwin Sharvill PROPOSAL
Jefferson H MarrierBrazilXuxue Feng QUALIFIED
Sinclair I OstroskyIndiaElwin Sharvill PROPOSAL

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