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
Stacey K MorascaBrazilOnyama Limba NEW
Alejandro D WaycottFranceXuxue Feng PROPOSAL
Francesco Y GauchoUnited KingdomBernardo Dominic UNQUALIFIED
Greenwood T PaprockiFranceStephen Shaw PROPOSAL
Deepesh D BologniaGermanyIoni Bowcher NEGOTIATION
Silvio K GlickArgentinaBernardo Dominic NEGOTIATION
Jefferson F GauchoSpainElwin Sharvill UNQUALIFIED
Misaki C MorascaCanadaAsiya Javayant NEGOTIATION
Mujtaba M DilliardRussiaAmy Elsner NEW
Stacey W BowleyFranceIvan Magalhaes PROPOSAL
Darci Y ChuiArgentinaAmy Elsner UNQUALIFIED
Jones L InouyeCanadaAmy Elsner RENEWAL
Emily E SergiRussiaAmy Elsner NEGOTIATION
Claire Y RimArgentinaBernardo Dominic RENEWAL
Maisha K AmigonUnited KingdomAsiya Javayant RENEWAL
James T CaudyGermanyAnna Fali NEGOTIATION
David Q SergiCanadaOnyama Limba RENEWAL
Maisha N RimSpainAnna Fali UNQUALIFIED
Darci W VocelkaArgentinaOnyama Limba RENEWAL
Morrow R MorascaSpainBernardo Dominic PROPOSAL
Ricardo Q GarufiIndiaAsiya Javayant PROPOSAL
Cody Q AlbaresSpainStephen Shaw QUALIFIED
Alejandro T AlbaresItalyAmy Elsner NEGOTIATION
Juan T FigeroaJapanIvan Magalhaes NEW
Jefferson J MorascaCanadaAsiya Javayant PROPOSAL
Munro Q WaycottSpainAmy Elsner PROPOSAL
Kaitlin R OstroskyItalyAsiya Javayant NEW
Juan D OldroydFranceOnyama Limba PROPOSAL
Adams C ChuiUnited KingdomXuxue Feng PROPOSAL
David M StensethAustraliaStephen Shaw RENEWAL
Chavez B GillianIndiaElwin Sharvill UNQUALIFIED
Leja V DarakjyArgentinaIvan Magalhaes RENEWAL
Kaitlin I VenereUnited KingdomAsiya Javayant RENEWAL
Julie L StensethJapanXuxue Feng QUALIFIED
David X PerinBrazilAmy Elsner NEW
Salvatore R SchemmerItalyIvan Magalhaes PROPOSAL
Misaki W SchemmerUnited KingdomAmy Elsner PROPOSAL
Silvio X BriddickGermanyStephen Shaw NEGOTIATION
Smith E SaylorsRussiaIvan Magalhaes NEW
Kadeem Y MaletIndiaElwin Sharvill UNQUALIFIED
Smith G MacleadItalyOnyama Limba UNQUALIFIED
Ivar O WieserJapanIoni Bowcher NEGOTIATION
Stacey P BriddickAustraliaBernardo Dominic RENEWAL
Julie C SaylorsIndiaAmy Elsner NEGOTIATION
Francesco G WhobreyAustraliaAnna Fali QUALIFIED
Antonio Z MacleadBrazilElwin Sharvill PROPOSAL
Stacey Y IturbideBrazilXuxue Feng RENEWAL
Tony D SlusarskiRussiaAmy Elsner PROPOSAL
Aika N SlusarskiSpainIvan Magalhaes UNQUALIFIED
Salvatore E MorascaBrazilAmy Elsner QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Maisha S SergiFranceBernardo Dominic UNQUALIFIED
Leon T PaprockiCanadaOnyama Limba UNQUALIFIED
Mayumi C NestleFranceBernardo Dominic RENEWAL
Silvio I MaletItalyIvan Magalhaes UNQUALIFIED
Octavia Z AlbaresItalyIoni Bowcher PROPOSAL
Misaki P SaylorsItalyOnyama Limba NEGOTIATION
Kadeem G MaletJapanIvan Magalhaes PROPOSAL
Jennifer V AlbaresBrazilOnyama Limba QUALIFIED
Silvio B DoeFranceElwin Sharvill RENEWAL
Faith L MacleadCanadaOnyama Limba UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aditya K GauchoIndia2024-04-15Morlong Associates PROPOSAL85Onyama Limba
1001Murillo G AmigonAustralia2024-04-28Rangoni Of Florence PROPOSAL70Stephen Shaw
1002Murillo P MaletGermany2024-04-13Dorl, James J Esq NEW93Ioni Bowcher
1003Smith M WaycottArgentina2024-04-14Dorl, James J Esq RENEWAL19Asiya Javayant
1004Kaitlin S GarufiArgentina2024-04-01Benton, John B Jr UNQUALIFIED15Asiya Javayant
1005Johnson D SergiFrance2024-04-13Benton, John B Jr PROPOSAL65Asiya Javayant
1006Deepesh Y WieserGermany2024-04-24Rousseaux, Michael Esq NEGOTIATION5Bernardo Dominic
1007Mayumi A IturbideBrazil2024-04-14Rangoni Of Florence QUALIFIED62Asiya Javayant
1008Darci P MaletCanada2024-04-01Rousseaux, Michael Esq PROPOSAL34Stephen Shaw
1009David A SergiUnited Kingdom2024-04-24Buckley Miller Wright RENEWAL56Asiya Javayant
1010Kadeem B PaprockiItaly2024-04-20Feiner Bros NEGOTIATION0Xuxue Feng
1011Octavia E BowleyArgentina2024-04-16Buckley Miller Wright RENEWAL56Bernardo Dominic
1012Aruna Y MaletArgentina2024-04-08Chemel, James L Cpa NEW41Ioni Bowcher
1013Jones C OldroydArgentina2024-04-29Commercial Press RENEWAL69Anna Fali
1014Johnson M StockhamCanada2024-04-12Rousseaux, Michael Esq RENEWAL96Asiya Javayant
1015Kadeem R BowleyFrance2024-04-01Truhlar And Truhlar Attys PROPOSAL88Onyama Limba
1016Murillo T PerinRussia2024-04-16Feltz Printing Service NEW38Onyama Limba
1017Arvin T BologniaSpain2024-04-17Chapman, Ross E Esq NEW43Elwin Sharvill
1018Aruna A WhobreyItaly2024-04-22Feiner Bros NEW29Amy Elsner
1019Faith J BowleyGermany2024-04-04Feltz Printing Service QUALIFIED35Elwin Sharvill
1020Aruna U PerinArgentina2024-04-17King, Christopher A Esq RENEWAL53Ivan Magalhaes
1021Mujtaba G PoquetteGermany2024-04-27King, Christopher A Esq UNQUALIFIED51Ivan Magalhaes
1022Johnson J BriddickSpain2024-04-02Benton, John B Jr NEGOTIATION20Anna Fali
1023Munro E DarakjyCanada2024-04-22Rangoni Of Florence QUALIFIED88Elwin Sharvill
1024Tony K GlickArgentina2024-04-20Truhlar And Truhlar Attys NEW78Amy Elsner
1025Faith H SchemmerSpain2024-04-12Rangoni Of Florence UNQUALIFIED89Amy Elsner
1026Kadeem Y CaudyItaly2024-04-27Feltz Printing Service QUALIFIED30Onyama Limba
1027Mujtaba I DarakjyBrazil2024-04-07Printing Dimensions RENEWAL24Xuxue Feng
1028Jefferson R GauchoUnited Kingdom2024-04-11Dorl, James J Esq RENEWAL53Asiya Javayant
1029Jeanfrancois B GauchoJapan2024-04-10Commercial Press QUALIFIED7Amy Elsner
1030Johnson F SergiFrance2024-04-17Chanay, Jeffrey A Esq NEGOTIATION65Amy Elsner
1031Claire S FlosiGermany2024-04-18Chemel, James L Cpa NEGOTIATION82Anna Fali
1032Darci H CampainUnited Kingdom2024-04-30Morlong Associates NEW0Anna Fali
1033Aditya O KolmetzJapan2024-04-15King, Christopher A Esq UNQUALIFIED63Anna Fali
1034Juan J NickaUnited Kingdom2024-04-11Benton, John B Jr RENEWAL35Ioni Bowcher
1035Tony O GarufiSpain2024-04-08Rousseaux, Michael Esq UNQUALIFIED83Elwin Sharvill
1036Ivar W ShinkoGermany2024-04-08Morlong Associates NEW12Anna Fali
1037Wickens P DarakjyCanada2024-04-13Chapman, Ross E Esq PROPOSAL50Stephen Shaw
1038Ivar N MaletArgentina2024-04-03Printing Dimensions PROPOSAL65Elwin Sharvill
1039Julie W OstroskyFrance2024-04-23Feltz Printing Service QUALIFIED37Xuxue Feng
1040Jefferson D OstroskyGermany2024-04-23Rousseaux, Michael Esq PROPOSAL91Xuxue Feng
1041Silvio D BowleySpain2024-04-20Buckley Miller Wright QUALIFIED15Ivan Magalhaes
1042Emily U SergiRussia2024-04-22Morlong Associates QUALIFIED28Xuxue Feng
1043Mujtaba T SergiAustralia2024-04-19Printing Dimensions NEW35Ivan Magalhaes
1044Maisha N GarufiArgentina2024-04-04Morlong Associates PROPOSAL18Asiya Javayant
1045Aditya G KuskoCanada2024-04-07Buckley Miller Wright PROPOSAL31Bernardo Dominic
1046Rodrigues V AlbaresIndia2024-04-05King, Christopher A Esq QUALIFIED65Xuxue Feng
1047Clifford K MarrierJapan2024-04-16Printing Dimensions PROPOSAL31Onyama Limba
1048Emily F RoysterFrance2024-04-11Rangoni Of Florence RENEWAL59Amy Elsner
1049Greenwood C NickaFrance2024-04-27Dorl, James J Esq RENEWAL48Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Arvin X SaylorsArgentinaXuxue Feng NEW
Nicolas H NestleSpainOnyama Limba RENEWAL
Alejandro S MaletBrazilStephen Shaw UNQUALIFIED
Wickens O CaldareraItalyAnna Fali NEGOTIATION
James S FigeroaBrazilAsiya Javayant UNQUALIFIED
Claire H ShinkoArgentinaAmy Elsner RENEWAL
Claire R FigeroaBrazilOnyama Limba UNQUALIFIED
Kaitlin B GlickAustraliaAsiya Javayant RENEWAL
Julie L DarakjyUnited KingdomIoni Bowcher NEGOTIATION
Juan G SlusarskiItalyBernardo Dominic RENEWAL
Faith Q MaletItalyAsiya Javayant NEGOTIATION
Nicolas P PaprockiFranceBernardo Dominic NEGOTIATION
Julie F RulapaughArgentinaAmy Elsner RENEWAL
Stacey P FigeroaIndiaXuxue Feng PROPOSAL
Maisha F FlosiArgentinaAsiya Javayant UNQUALIFIED
Mayumi O ShinkoBrazilStephen Shaw UNQUALIFIED
Maisha A BowleyAustraliaIoni Bowcher PROPOSAL
Munro I GauchoJapanXuxue Feng NEGOTIATION
Clifford D MorascaGermanyOnyama Limba NEGOTIATION
Antonio J WaycottUnited KingdomOnyama Limba RENEWAL
Jefferson M SchemmerItalyOnyama Limba NEW
Aika H RoysterGermanyOnyama Limba PROPOSAL
David P AlbaresFranceAmy Elsner QUALIFIED
Jeanfrancois M GarufiGermanyAmy Elsner PROPOSAL
Sinclair G RoysterUnited KingdomAmy Elsner NEW
Johnson W AmigonSpainIvan Magalhaes NEW
Jennifer M MacleadFranceIvan Magalhaes NEW
Mayumi L RutaCanadaAsiya Javayant RENEWAL
Johnson V GlickBrazilBernardo Dominic QUALIFIED
Smith N FerenczJapanAmy Elsner PROPOSAL
Kaitlin F DoeSpainElwin Sharvill NEGOTIATION
Adams O NestleFranceIvan Magalhaes NEGOTIATION
Aditya M GillianIndiaOnyama Limba PROPOSAL
Isabel W VocelkaCanadaElwin Sharvill QUALIFIED
Rodrigues Z AmigonBrazilElwin Sharvill UNQUALIFIED
Munro F GauchoUnited KingdomElwin Sharvill QUALIFIED
Emily N VenereSpainAmy Elsner RENEWAL
Cody U MaletArgentinaOnyama Limba NEW
Leja Z RimFranceAnna Fali NEW
Leja J GillianIndiaElwin Sharvill QUALIFIED
Ivar V MarrierJapanBernardo Dominic UNQUALIFIED
Alejandro J SergiSpainAsiya Javayant NEW
Mayumi X ChuiUnited KingdomAnna Fali QUALIFIED
Juan G BriddickIndiaAmy Elsner UNQUALIFIED
Wickens K ButtGermanyIvan Magalhaes RENEWAL
Misaki N StockhamGermanyXuxue Feng UNQUALIFIED
Morrow Y ButtRussiaBernardo Dominic NEW
Deepesh I StockhamIndiaIvan Magalhaes RENEWAL
Juan H ShinkoSpainAmy Elsner QUALIFIED
Smith K FigeroaItalyIvan Magalhaes RENEWAL
Frozen Columns
Name
Misaki A Shinko
Deepesh V Rim
Stacey L Bolognia
Stacey L Caudy
Maria O Whobrey
Leja C Gaucho
Emily C Ostrosky
Salvatore R Dilliard
Jeanfrancois J Morasca
Morrow R Caldarera
Arvin O Tollner
Rodrigues D Bolognia
Izzy Y Kusko
Jefferson V Rim
Julie Q Caldarera
Maria P Sergi
Silvio C Nicka
David O Ruta
Antonio T Garufi
Silvio F Gaucho
Kadeem M Maclead
Faith S Royster
Wickens L Figeroa
Antonio S Venere
Rodrigues H Malet
David R Maclead
Aika R Kolmetz
Kaitlin B Nicka
Jennifer W Figeroa
Mujtaba E Glick
Greenwood G Stockham
Nicolas J Bowley
Morrow G Bowley
Claire G Butt
Munro B Saylors
Kaitlin C Poquette
Silvio J Gillian
Faith G Albares
Aruna N Waycott
Mayumi N Campain
Adams I Malet
Faith K Foller
Kadeem A Morasca
Smith E Dilliard
Stacey I Saylors
Emily O Oldroyd
Jeanfrancois C Ostrosky
Wickens F Darakjy
Aika R Campain
Sinclair T Oldroyd
IdCountryDate
1000France2024-04-19
1001Spain2024-04-09
1002Argentina2024-04-29
1003Argentina2024-04-26
1004Australia2024-04-26
1005India2024-04-09
1006Russia2024-04-12
1007Australia2024-04-04
1008Canada2024-04-14
1009Germany2024-04-07
1010Italy2024-04-02
1011Italy2024-04-14
1012Japan2024-04-29
1013Russia2024-04-02
1014France2024-04-28
1015Germany2024-04-25
1016Brazil2024-04-22
1017India2024-04-29
1018Italy2024-04-23
1019United Kingdom2024-04-03
1020Australia2024-04-17
1021Italy2024-04-01
1022Italy2024-04-15
1023Argentina2024-04-22
1024Argentina2024-04-27
1025Brazil2024-04-10
1026Brazil2024-04-23
1027Argentina2024-04-09
1028Germany2024-04-02
1029Canada2024-04-12
1030Brazil2024-04-28
1031Russia2024-04-18
1032Argentina2024-04-16
1033Canada2024-04-11
1034Japan2024-04-10
1035United Kingdom2024-04-02
1036Australia2024-04-14
1037Italy2024-04-29
1038Canada2024-04-02
1039Germany2024-04-13
1040India2024-04-04
1041United Kingdom2024-04-04
1042India2024-04-19
1043Germany2024-04-28
1044Russia2024-04-29
1045France2024-04-25
1046Italy2024-04-09
1047France2024-04-17
1048Spain2024-04-15
1049Brazil2024-04-13

On-Demand Data

NameIdCountryDate
Aika H Whobrey1000Australia2024-04-22
Cody Y Briddick1001India2024-04-24
Johnson H Gillian1002Brazil2024-04-04
Greenwood I Tollner1003Argentina2024-04-24
Murillo K Venere1004France2024-04-18
Faith Q Marrier1005United Kingdom2024-04-26
Aruna Q Caldarera1006Spain2024-04-24
Faith I Ostrosky1007United Kingdom2024-04-14
Julie X Figeroa1008India2024-04-07
Ricardo P Caldarera1009Germany2024-04-14
Ashley A Poquette1010Canada2024-04-11
Murillo N Darakjy1011Australia2024-04-19
Francesco K Darakjy1012Italy2024-04-27
Smith N Gaucho1013Japan2024-04-07
Misaki F Schemmer1014Argentina2024-04-20
Octavia D Foller1015Australia2024-04-05
Alejandro A Nestle1016Argentina2024-04-16
Clifford U Bolognia1017Germany2024-04-19
Claire I Campain1018Brazil2024-04-20
Sinclair J Schemmer1019France2024-04-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mujtaba D OstroskyBrazilAsiya Javayant UNQUALIFIED
Smith O TollnerArgentinaIvan Magalhaes NEW
Aditya V GarufiSpainAmy Elsner PROPOSAL
Juan M ButtJapanXuxue Feng UNQUALIFIED
Antonio I RulapaughSpainAmy Elsner RENEWAL
Ricardo L SergiArgentinaIoni Bowcher QUALIFIED
Clifford Y GillianRussiaBernardo Dominic NEGOTIATION
Smith S DarakjyArgentinaIoni Bowcher PROPOSAL
Arvin U GillianCanadaXuxue Feng NEW
Cody D BologniaIndiaAmy Elsner RENEWAL
Sinclair N WieserBrazilStephen Shaw NEGOTIATION
David Y DoeAustraliaAsiya Javayant PROPOSAL
Murillo Q PaprockiSpainIoni Bowcher UNQUALIFIED
Maisha K StensethFranceOnyama Limba NEW
Aika L MaletRussiaOnyama Limba NEGOTIATION
Jones T MaletArgentinaElwin Sharvill PROPOSAL
Mujtaba P OstroskyArgentinaIvan Magalhaes RENEWAL
Isabel J FollerBrazilAnna Fali UNQUALIFIED
Nicolas N WieserUnited KingdomAmy Elsner QUALIFIED
Isabel E WieserGermanyElwin Sharvill NEGOTIATION
Emily I OstroskyCanadaAnna Fali RENEWAL
Juan T IturbideFranceIvan Magalhaes RENEWAL
Johnson C FollerItalyAnna Fali NEGOTIATION
Ivar W AlbaresIndiaBernardo Dominic QUALIFIED
Jones G PoquetteRussiaAmy Elsner QUALIFIED
Johnson H AlbaresIndiaStephen Shaw PROPOSAL
Claire H RutaCanadaStephen Shaw QUALIFIED
Aditya G StensethUnited KingdomStephen Shaw NEW
David B TollnerFranceAmy Elsner NEW
Faith R OstroskyCanadaStephen Shaw QUALIFIED
Maria S VocelkaArgentinaIoni Bowcher PROPOSAL
Stacey C SaylorsIndiaIvan Magalhaes NEW
Claire V OstroskyFranceElwin Sharvill PROPOSAL
James D AmigonGermanyAmy Elsner RENEWAL
Mujtaba U TollnerIndiaXuxue Feng RENEWAL
Maria H BologniaArgentinaStephen Shaw NEGOTIATION
Silvio F ShinkoJapanAsiya Javayant UNQUALIFIED
Jeanfrancois P DilliardIndiaIvan Magalhaes UNQUALIFIED
Julie S VocelkaCanadaOnyama Limba QUALIFIED
Francesco A RulapaughAustraliaAnna Fali 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>