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
Aditya P BologniaAustraliaAsiya Javayant UNQUALIFIED
Kaitlin I DoeFranceIvan Magalhaes QUALIFIED
Faith X AlbaresJapanXuxue Feng NEW
Morrow C ChuiCanadaAnna Fali UNQUALIFIED
Leon Q FerenczCanadaAnna Fali NEGOTIATION
Rodrigues Q TollnerIndiaStephen Shaw NEW
Kaitlin P GlickFranceBernardo Dominic NEW
James N OldroydGermanyBernardo Dominic RENEWAL
Alejandro T WaycottBrazilAsiya Javayant UNQUALIFIED
Munro O GillianFranceStephen Shaw NEGOTIATION
Jefferson A OldroydCanadaBernardo Dominic UNQUALIFIED
Deepesh G ButtIndiaStephen Shaw RENEWAL
Misaki F NickaBrazilElwin Sharvill NEGOTIATION
Smith O AlbaresUnited KingdomStephen Shaw RENEWAL
Leon Q CaldareraItalyElwin Sharvill NEGOTIATION
Arvin R AlbaresFranceAsiya Javayant PROPOSAL
Francesco F PerinItalyOnyama Limba RENEWAL
Claire Q CaudyBrazilAmy Elsner UNQUALIFIED
Salvatore I WaycottUnited KingdomStephen Shaw NEGOTIATION
Kaitlin K GillianAustraliaOnyama Limba RENEWAL
James G CaldareraItalyAmy Elsner PROPOSAL
Stacey K NestleGermanyStephen Shaw NEW
Aditya S BriddickCanadaIvan Magalhaes UNQUALIFIED
Arvin A MaletIndiaElwin Sharvill NEGOTIATION
Greenwood N PaprockiArgentinaAmy Elsner UNQUALIFIED
Claire C OldroydUnited KingdomElwin Sharvill QUALIFIED
Jennifer C RulapaughSpainElwin Sharvill QUALIFIED
Munro M InouyeArgentinaStephen Shaw NEW
Ivar P SaylorsIndiaAsiya Javayant PROPOSAL
Nicolas M AlbaresUnited KingdomIoni Bowcher UNQUALIFIED
Salvatore N GillianBrazilStephen Shaw RENEWAL
Juan W KolmetzFranceAsiya Javayant NEGOTIATION
Isabel B KuskoIndiaStephen Shaw NEW
Chavez N StockhamBrazilAsiya Javayant NEGOTIATION
Clifford H IturbideFranceIvan Magalhaes QUALIFIED
Wickens Z GillianCanadaIoni Bowcher RENEWAL
Mujtaba O DarakjyFranceStephen Shaw NEW
David X FigeroaJapanXuxue Feng QUALIFIED
Misaki H WaycottRussiaAnna Fali PROPOSAL
Stacey Q GillianJapanStephen Shaw QUALIFIED
Silvio E SlusarskiBrazilAsiya Javayant NEW
Darci I CaudyBrazilAmy Elsner PROPOSAL
Nicolas J RutaIndiaXuxue Feng NEW
Silvio Q ChuiGermanyElwin Sharvill NEW
Mujtaba C FlosiJapanIvan Magalhaes UNQUALIFIED
Sinclair E ButtAustraliaAnna Fali UNQUALIFIED
James M OstroskyUnited KingdomIvan Magalhaes RENEWAL
Chavez J StockhamBrazilAsiya Javayant UNQUALIFIED
Emily A OstroskyGermanyAsiya Javayant PROPOSAL
Morrow J ShinkoSpainXuxue Feng PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Chavez O StensethArgentinaElwin Sharvill QUALIFIED
Misaki L VocelkaSpainAmy Elsner UNQUALIFIED
Jeanfrancois L DilliardIndiaElwin Sharvill NEW
Kaitlin T SaylorsRussiaIoni Bowcher PROPOSAL
Greenwood F CampainJapanAsiya Javayant RENEWAL
Salvatore E DarakjyCanadaIvan Magalhaes NEGOTIATION
Nicolas O GarufiIndiaAmy Elsner PROPOSAL
Silvio W DoeJapanIvan Magalhaes UNQUALIFIED
Aruna M VocelkaCanadaStephen Shaw UNQUALIFIED
David A AmigonFranceXuxue Feng NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Sinclair X ButtArgentina2024-04-25Commercial Press NEGOTIATION50Elwin Sharvill
1001Leja W BowleyIndia2024-04-25Truhlar And Truhlar Attys NEGOTIATION63Bernardo Dominic
1002Wickens K StensethUnited Kingdom2024-04-05Rousseaux, Michael Esq UNQUALIFIED49Elwin Sharvill
1003Emily A FerenczArgentina2024-04-27Chemel, James L Cpa NEW75Xuxue Feng
1004Costa X ButtBrazil2024-05-03Chapman, Ross E Esq QUALIFIED72Ioni Bowcher
1005Ricardo T AlbaresUnited Kingdom2024-05-02Dorl, James J Esq UNQUALIFIED65Stephen Shaw
1006David N SergiBrazil2024-04-22Benton, John B Jr NEGOTIATION24Elwin Sharvill
1007Rodrigues R OstroskyArgentina2024-04-12Rousseaux, Michael Esq QUALIFIED7Bernardo Dominic
1008Costa A SlusarskiSpain2024-04-16Feiner Bros UNQUALIFIED90Anna Fali
1009Juan P GillianBrazil2024-04-24King, Christopher A Esq QUALIFIED52Onyama Limba
1010Jennifer H KuskoJapan2024-04-29Rousseaux, Michael Esq NEW44Amy Elsner
1011Morrow B CampainJapan2024-04-10Buckley Miller Wright NEGOTIATION10Elwin Sharvill
1012Aika K WhobreyItaly2024-04-17Chemel, James L Cpa QUALIFIED34Anna Fali
1013Francesco A GauchoAustralia2024-04-12Feiner Bros UNQUALIFIED12Elwin Sharvill
1014James V PoquetteArgentina2024-04-24Truhlar And Truhlar Attys RENEWAL94Ioni Bowcher
1015Tony G GarufiJapan2024-04-26Morlong Associates QUALIFIED77Amy Elsner
1016Aruna C OstroskyCanada2024-04-20King, Christopher A Esq NEW76Onyama Limba
1017Morrow N FigeroaJapan2024-05-01Benton, John B Jr NEW14Onyama Limba
1018Arvin N FollerBrazil2024-04-05Rousseaux, Michael Esq NEGOTIATION95Onyama Limba
1019Silvio Z PoquetteBrazil2024-04-29Feiner Bros QUALIFIED60Amy Elsner
1020Darci F MaletAustralia2024-04-12Rousseaux, Michael Esq RENEWAL98Anna Fali
1021Munro Z GauchoBrazil2024-05-04Printing Dimensions NEW45Asiya Javayant
1022Wickens R NickaIndia2024-04-25Feiner Bros NEW44Elwin Sharvill
1023Alejandro J TollnerCanada2024-04-30Feltz Printing Service UNQUALIFIED98Ivan Magalhaes
1024Nicolas D GlickUnited Kingdom2024-04-17Chanay, Jeffrey A Esq RENEWAL30Bernardo Dominic
1025Sinclair I VenereFrance2024-05-03Rangoni Of Florence NEGOTIATION23Amy Elsner
1026Darci V TollnerRussia2024-05-03Feltz Printing Service NEGOTIATION98Asiya Javayant
1027Arvin C MorascaIndia2024-04-29Morlong Associates QUALIFIED9Anna Fali
1028Nicolas C MarrierItaly2024-04-15Rangoni Of Florence NEW29Stephen Shaw
1029Alejandro F KolmetzCanada2024-04-20Truhlar And Truhlar Attys PROPOSAL49Elwin Sharvill
1030Silvio P PaprockiJapan2024-05-04Feltz Printing Service UNQUALIFIED66Bernardo Dominic
1031Chavez L KolmetzIndia2024-04-28Printing Dimensions NEGOTIATION23Stephen Shaw
1032Faith E VocelkaUnited Kingdom2024-04-17Commercial Press PROPOSAL61Elwin Sharvill
1033Misaki B FerenczArgentina2024-04-23Rangoni Of Florence QUALIFIED82Stephen Shaw
1034Antonio U MacleadRussia2024-04-16Feiner Bros NEW9Bernardo Dominic
1035Jefferson I VenereArgentina2024-04-24Commercial Press UNQUALIFIED79Xuxue Feng
1036Nicolas F FlosiBrazil2024-05-03Dorl, James J Esq NEW82Onyama Limba
1037Wickens P AmigonItaly2024-04-27King, Christopher A Esq PROPOSAL99Xuxue Feng
1038Aruna K FerenczRussia2024-05-04Printing Dimensions QUALIFIED9Elwin Sharvill
1039Juan Z SaylorsGermany2024-04-25Chemel, James L Cpa QUALIFIED55Anna Fali
1040Silvio A NestleArgentina2024-04-18Chemel, James L Cpa QUALIFIED39Bernardo Dominic
1041Darci K StockhamSpain2024-04-26Chemel, James L Cpa NEGOTIATION48Amy Elsner
1042Alejandro D SaylorsGermany2024-04-06Morlong Associates NEW88Stephen Shaw
1043Tony N GillianBrazil2024-04-28Dorl, James J Esq QUALIFIED20Onyama Limba
1044Jeanfrancois L PerinGermany2024-05-03Printing Dimensions PROPOSAL46Anna Fali
1045Izzy A RulapaughCanada2024-04-27Printing Dimensions RENEWAL37Stephen Shaw
1046Adams X BriddickRussia2024-04-16Morlong Associates UNQUALIFIED12Ivan Magalhaes
1047Ivar I SchemmerJapan2024-04-23Feiner Bros PROPOSAL26Bernardo Dominic
1048Misaki O DoeFrance2024-04-23Feltz Printing Service PROPOSAL71Xuxue Feng
1049Ivar A StockhamArgentina2024-04-26Dorl, James J Esq QUALIFIED89Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Johnson A TollnerJapanAsiya Javayant NEGOTIATION
Tony J WaycottFranceBernardo Dominic PROPOSAL
Smith C PaprockiAustraliaBernardo Dominic QUALIFIED
Rodrigues Y FlosiBrazilStephen Shaw RENEWAL
Claire C DilliardGermanyXuxue Feng QUALIFIED
Silvio G FlosiItalyIoni Bowcher PROPOSAL
Aditya Z MarrierJapanIoni Bowcher QUALIFIED
Leon A OldroydItalyStephen Shaw RENEWAL
Aruna G NickaArgentinaIvan Magalhaes UNQUALIFIED
Jones U DarakjyItalyOnyama Limba NEGOTIATION
Alejandro Y KolmetzFranceOnyama Limba NEW
Rodrigues Q AmigonArgentinaAnna Fali PROPOSAL
Antonio T MorascaArgentinaAsiya Javayant RENEWAL
Stacey S RoysterRussiaBernardo Dominic RENEWAL
Kaitlin L FigeroaBrazilXuxue Feng NEGOTIATION
Aditya W CampainRussiaBernardo Dominic NEW
Izzy J WieserFranceAmy Elsner PROPOSAL
Ashley J BologniaFranceAmy Elsner PROPOSAL
David S NestleCanadaAnna Fali RENEWAL
Ashley D GarufiUnited KingdomElwin Sharvill QUALIFIED
Silvio V CaldareraSpainAsiya Javayant UNQUALIFIED
Costa J RimUnited KingdomAsiya Javayant UNQUALIFIED
Deepesh U CaldareraUnited KingdomAnna Fali QUALIFIED
Johnson L ShinkoBrazilIoni Bowcher RENEWAL
Deepesh Q DilliardAustraliaOnyama Limba PROPOSAL
Aruna U SchemmerCanadaAsiya Javayant UNQUALIFIED
Leon R RulapaughIndiaIoni Bowcher NEGOTIATION
Arvin J TollnerItalyIoni Bowcher QUALIFIED
Silvio E RulapaughBrazilOnyama Limba QUALIFIED
Aruna G GauchoFranceAsiya Javayant NEW
Jennifer B FigeroaBrazilStephen Shaw PROPOSAL
Juan P RulapaughCanadaIvan Magalhaes RENEWAL
Smith F IturbideGermanyAmy Elsner NEW
Kaitlin O MorascaSpainOnyama Limba UNQUALIFIED
Smith W InouyeArgentinaIvan Magalhaes QUALIFIED
Nicolas Y NestleRussiaOnyama Limba NEW
Tony Y GlickItalyIoni Bowcher NEW
Kadeem Y RulapaughIndiaOnyama Limba QUALIFIED
James B StockhamUnited KingdomAnna Fali QUALIFIED
Cody J CampainAustraliaIoni Bowcher UNQUALIFIED
Tony U RoysterGermanyAmy Elsner PROPOSAL
Munro K ChuiAustraliaBernardo Dominic NEW
Rodrigues B CampainJapanXuxue Feng QUALIFIED
Julie U MorascaIndiaAsiya Javayant RENEWAL
Juan E RimGermanyAnna Fali NEGOTIATION
Emily D FollerCanadaXuxue Feng QUALIFIED
David Z ButtRussiaIoni Bowcher UNQUALIFIED
Faith B MacleadSpainXuxue Feng NEW
Aika F BowleyUnited KingdomAsiya Javayant PROPOSAL
Cody R InouyeUnited KingdomXuxue Feng PROPOSAL
Frozen Columns
Name
James L Doe
Juan E Amigon
Jeanfrancois B Bolognia
Nicolas V Tollner
Rodrigues F Nicka
Emily D Venere
Deepesh T Butt
Julie Q Gillian
Darci I Gaucho
Jeanfrancois B Maclead
Faith S Venere
Rodrigues G Kolmetz
Nicolas W Venere
Francesco L Saylors
Costa O Rim
Alejandro P Chui
Octavia J Tollner
Claire T Nicka
Cody S Gillian
Jeanfrancois P Gaucho
Greenwood C Schemmer
Munro M Albares
Ivar N Gillian
Misaki F Foller
Mayumi Q Inouye
Francesco A Vocelka
Sinclair Q Tollner
Chavez S Whobrey
Tony I Ostrosky
Murillo E Waycott
Leja H Malet
Leon W Bolognia
Adams Z Sergi
Deepesh Y Darakjy
Smith P Tollner
Costa F Slusarski
Faith P Albares
Morrow H Flosi
Munro O Vocelka
Kaitlin Q Ruta
Tony O Ruta
Greenwood U Vocelka
Adams I Saylors
Cody F Nicka
Antonio Y Inouye
Jennifer W Perin
Jefferson O Ostrosky
Emily E Whobrey
Darci F Foller
David S Whobrey
IdCountryDate
1000Australia2024-05-04
1001Germany2024-04-21
1002Brazil2024-04-20
1003India2024-05-01
1004Italy2024-04-23
1005France2024-04-29
1006Canada2024-04-14
1007Japan2024-04-13
1008Japan2024-04-07
1009Russia2024-05-01
1010Germany2024-05-04
1011Italy2024-04-30
1012Australia2024-05-01
1013United Kingdom2024-04-10
1014Germany2024-04-05
1015Brazil2024-04-09
1016Japan2024-05-03
1017Russia2024-04-14
1018India2024-05-01
1019France2024-04-11
1020Japan2024-04-14
1021Russia2024-05-04
1022Brazil2024-04-20
1023Australia2024-05-03
1024United Kingdom2024-04-29
1025Spain2024-04-07
1026Germany2024-04-06
1027Germany2024-04-20
1028United Kingdom2024-04-29
1029Australia2024-05-04
1030Japan2024-04-14
1031Australia2024-04-27
1032India2024-04-14
1033Spain2024-04-08
1034Japan2024-05-04
1035Australia2024-04-14
1036France2024-04-08
1037Brazil2024-04-12
1038Brazil2024-04-30
1039United Kingdom2024-05-04
1040Russia2024-04-20
1041Canada2024-04-06
1042Argentina2024-04-20
1043Brazil2024-04-09
1044Argentina2024-04-30
1045Brazil2024-04-10
1046France2024-04-27
1047Spain2024-04-13
1048Germany2024-04-11
1049Argentina2024-04-05

On-Demand Data

NameIdCountryDate
Silvio T Inouye1000United Kingdom2024-05-04
Aruna L Nicka1001Germany2024-04-22
Leon M Darakjy1002India2024-04-27
Smith U Caldarera1003Germany2024-05-02
Deepesh J Garufi1004India2024-04-30
Emily H Paprocki1005Australia2024-04-07
David G Maclead1006France2024-04-06
Aika M Amigon1007Spain2024-04-28
Greenwood P Doe1008Germany2024-04-07
Darci T Slusarski1009Russia2024-05-02
Arvin R Schemmer1010Canada2024-04-05
Aika B Slusarski1011Brazil2024-04-10
Julie M Maclead1012Argentina2024-04-11
Salvatore F Tollner1013Italy2024-04-10
Tony I Bowley1014France2024-04-20
Misaki N Venere1015France2024-04-16
Rodrigues R Dilliard1016United Kingdom2024-04-24
Arvin L Inouye1017United Kingdom2024-04-09
Chavez O Royster1018Spain2024-04-26
Deepesh F Gaucho1019Australia2024-04-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leja L FerenczGermanyAsiya Javayant NEW
Costa Z GauchoArgentinaStephen Shaw NEW
Isabel X SergiUnited KingdomBernardo Dominic NEGOTIATION
Chavez O BowleyItalyOnyama Limba RENEWAL
Mayumi A CaldareraGermanyOnyama Limba RENEWAL
David G AmigonUnited KingdomOnyama Limba QUALIFIED
Leja L BriddickRussiaIoni Bowcher UNQUALIFIED
Misaki U FlosiFranceXuxue Feng UNQUALIFIED
Kadeem Y NickaGermanyXuxue Feng QUALIFIED
Ashley V WaycottAustraliaBernardo Dominic NEW
Maisha Q FollerItalyAsiya Javayant UNQUALIFIED
Maria Y ChuiItalyElwin Sharvill RENEWAL
Octavia O RulapaughIndiaIoni Bowcher QUALIFIED
Morrow Q MorascaAustraliaOnyama Limba NEW
Morrow A GlickRussiaAsiya Javayant UNQUALIFIED
Nicolas T ChuiArgentinaXuxue Feng QUALIFIED
Aruna C OldroydFranceBernardo Dominic NEGOTIATION
Jefferson B NestleBrazilBernardo Dominic NEW
Juan L PoquetteIndiaIoni Bowcher NEW
Alejandro C RoysterUnited KingdomAmy Elsner RENEWAL
James H PaprockiCanadaAsiya Javayant UNQUALIFIED
Chavez X AlbaresJapanAmy Elsner PROPOSAL
Tony D AlbaresArgentinaAmy Elsner NEW
Misaki V BriddickItalyAmy Elsner NEW
Greenwood G SergiCanadaIoni Bowcher UNQUALIFIED
Ashley G OstroskyJapanAmy Elsner RENEWAL
Faith I MacleadItalyStephen Shaw PROPOSAL
Johnson T VenereUnited KingdomAmy Elsner RENEWAL
Aditya C CaldareraSpainBernardo Dominic NEGOTIATION
Tony U ShinkoJapanAnna Fali NEW
Octavia L TollnerItalyStephen Shaw QUALIFIED
Jefferson A SaylorsFranceElwin Sharvill QUALIFIED
Clifford H WieserItalyIoni Bowcher NEW
Johnson Y InouyeGermanyBernardo Dominic RENEWAL
Julie N MorascaBrazilBernardo Dominic NEGOTIATION
Izzy O BowleyGermanyOnyama Limba PROPOSAL
Darci K RoysterFranceElwin Sharvill UNQUALIFIED
Julie V MaletBrazilXuxue Feng UNQUALIFIED
Morrow W DilliardJapanBernardo Dominic UNQUALIFIED
Claire Q WaycottJapanBernardo Dominic 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>