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
Juan X FlosiCanadaStephen Shaw RENEWAL
Ricardo Q FerenczArgentinaOnyama Limba PROPOSAL
Leja Q NestleRussiaAnna Fali QUALIFIED
Ricardo I BowleyGermanyOnyama Limba NEGOTIATION
Adams Y WieserAustraliaAnna Fali NEW
Murillo B DarakjyGermanyAsiya Javayant QUALIFIED
Isabel U MarrierGermanyAsiya Javayant NEGOTIATION
Ricardo P PaprockiUnited KingdomIvan Magalhaes NEGOTIATION
Munro G RutaUnited KingdomOnyama Limba NEW
Julie I CaudyFranceIoni Bowcher NEGOTIATION
Kaitlin U MacleadIndiaBernardo Dominic NEGOTIATION
Adams K MorascaBrazilAnna Fali NEW
Kadeem H ChuiUnited KingdomIoni Bowcher PROPOSAL
Aruna G GarufiArgentinaBernardo Dominic RENEWAL
Adams C GauchoUnited KingdomOnyama Limba PROPOSAL
Maisha Z AmigonIndiaXuxue Feng PROPOSAL
Claire S VocelkaUnited KingdomElwin Sharvill NEW
Rodrigues T FlosiJapanOnyama Limba UNQUALIFIED
Munro A MacleadArgentinaElwin Sharvill NEGOTIATION
Juan Q DoeGermanyIvan Magalhaes UNQUALIFIED
Cody Q PerinSpainAsiya Javayant QUALIFIED
Ivar X MaletBrazilXuxue Feng NEW
Maisha O SaylorsAustraliaXuxue Feng QUALIFIED
Morrow M MaletGermanyAmy Elsner NEGOTIATION
Claire X FigeroaSpainOnyama Limba RENEWAL
Adams K WaycottBrazilBernardo Dominic QUALIFIED
Kadeem S RoysterArgentinaOnyama Limba PROPOSAL
Maria G SaylorsAustraliaXuxue Feng NEW
Leja C RutaRussiaAnna Fali UNQUALIFIED
Chavez Y MorascaIndiaElwin Sharvill QUALIFIED
Faith P OstroskyArgentinaAnna Fali RENEWAL
Munro D SaylorsFranceXuxue Feng QUALIFIED
Greenwood I OldroydAustraliaElwin Sharvill NEGOTIATION
Deepesh G CampainFranceAnna Fali QUALIFIED
Tony V FigeroaBrazilXuxue Feng NEW
Murillo J VocelkaJapanIvan Magalhaes PROPOSAL
Antonio B GauchoItalyOnyama Limba NEGOTIATION
Emily W InouyeItalyXuxue Feng QUALIFIED
Morrow M OstroskyAustraliaAmy Elsner QUALIFIED
Maisha L SlusarskiGermanyBernardo Dominic QUALIFIED
Octavia V PoquetteUnited KingdomXuxue Feng RENEWAL
Murillo Q MaletBrazilBernardo Dominic RENEWAL
Rodrigues P PerinBrazilElwin Sharvill RENEWAL
Mayumi Z FigeroaArgentinaAmy Elsner QUALIFIED
Alejandro T TollnerArgentinaOnyama Limba PROPOSAL
Adams Z DoeRussiaAmy Elsner NEW
Ivar U GillianUnited KingdomIvan Magalhaes UNQUALIFIED
Ashley J BriddickUnited KingdomAmy Elsner RENEWAL
Misaki L InouyeItalyIoni Bowcher NEW
Wickens J RulapaughJapanAmy Elsner QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Stacey F WieserJapanBernardo Dominic NEW
Rodrigues X DarakjyUnited KingdomIoni Bowcher RENEWAL
Salvatore S PoquetteIndiaElwin Sharvill PROPOSAL
Smith E CaldareraBrazilOnyama Limba NEW
Aditya B ChuiCanadaAmy Elsner NEGOTIATION
Jones Y VenereAustraliaAsiya Javayant PROPOSAL
Stacey A TollnerBrazilIoni Bowcher RENEWAL
Maria Y MorascaArgentinaAmy Elsner RENEWAL
Adams E AmigonIndiaIoni Bowcher UNQUALIFIED
Isabel B RoysterBrazilAsiya Javayant QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000James Q SchemmerBrazil2024-04-07Buckley Miller Wright QUALIFIED2Onyama Limba
1001Munro E OstroskyIndia2024-03-27Dorl, James J Esq QUALIFIED41Bernardo Dominic
1002Tony C VocelkaFrance2024-04-18Printing Dimensions QUALIFIED27Ivan Magalhaes
1003Kadeem I MarrierItaly2024-04-05Chemel, James L Cpa RENEWAL53Ivan Magalhaes
1004Misaki O SaylorsItaly2024-04-13Commercial Press UNQUALIFIED7Bernardo Dominic
1005Juan Z AmigonGermany2024-03-29King, Christopher A Esq NEW28Bernardo Dominic
1006Jeanfrancois R MarrierAustralia2024-03-28Chanay, Jeffrey A Esq NEGOTIATION71Bernardo Dominic
1007Chavez O DoeFrance2024-04-23Chanay, Jeffrey A Esq UNQUALIFIED66Onyama Limba
1008Emily Q FerenczItaly2024-04-10Printing Dimensions NEGOTIATION34Ioni Bowcher
1009Greenwood P FlosiJapan2024-04-09Rousseaux, Michael Esq RENEWAL5Stephen Shaw
1010Ashley H GlickArgentina2024-04-17Feiner Bros NEW78Xuxue Feng
1011Costa W ButtRussia2024-04-02Buckley Miller Wright QUALIFIED92Anna Fali
1012Emily D VocelkaAustralia2024-03-27Chemel, James L Cpa NEW21Anna Fali
1013Arvin N WhobreyFrance2024-04-13Chanay, Jeffrey A Esq NEGOTIATION14Ioni Bowcher
1014Kaitlin H RutaJapan2024-04-11Truhlar And Truhlar Attys QUALIFIED5Xuxue Feng
1015Johnson Z FigeroaGermany2024-03-29Feiner Bros NEW38Anna Fali
1016Claire S SergiAustralia2024-04-02Dorl, James J Esq NEGOTIATION57Onyama Limba
1017James F KuskoJapan2024-03-29Chemel, James L Cpa RENEWAL46Onyama Limba
1018James X StensethAustralia2024-04-20Rangoni Of Florence NEW1Ivan Magalhaes
1019Clifford R InouyeItaly2024-04-21Buckley Miller Wright RENEWAL91Stephen Shaw
1020Rodrigues E AlbaresCanada2024-04-15Chemel, James L Cpa QUALIFIED6Onyama Limba
1021Murillo E GillianSpain2024-03-27Commercial Press PROPOSAL81Ioni Bowcher
1022Julie G KolmetzArgentina2024-04-23Buckley Miller Wright UNQUALIFIED81Ioni Bowcher
1023Mayumi Z FollerBrazil2024-04-09Dorl, James J Esq UNQUALIFIED28Ivan Magalhaes
1024Ricardo T StensethCanada2024-03-28Dorl, James J Esq PROPOSAL62Ivan Magalhaes
1025Aditya L MorascaIndia2024-04-07Buckley Miller Wright NEGOTIATION52Amy Elsner
1026Morrow W WaycottRussia2024-04-10Chapman, Ross E Esq UNQUALIFIED47Ivan Magalhaes
1027Arvin Y FerenczIndia2024-04-06Commercial Press UNQUALIFIED50Amy Elsner
1028Juan J OstroskyRussia2024-04-20Morlong Associates NEW55Xuxue Feng
1029Aruna O PoquetteRussia2024-04-02Rousseaux, Michael Esq QUALIFIED72Elwin Sharvill
1030Wickens O ChuiJapan2024-04-18Benton, John B Jr QUALIFIED40Ioni Bowcher
1031Smith Z GarufiIndia2024-04-06King, Christopher A Esq PROPOSAL51Ivan Magalhaes
1032Stacey E GillianSpain2024-04-05Buckley Miller Wright PROPOSAL96Onyama Limba
1033Maria K ChuiGermany2024-03-27Feltz Printing Service NEW28Stephen Shaw
1034Deepesh U NickaIndia2024-03-27Truhlar And Truhlar Attys QUALIFIED6Elwin Sharvill
1035Clifford W StockhamBrazil2024-04-19Feltz Printing Service QUALIFIED26Anna Fali
1036Octavia Q FigeroaCanada2024-04-14Buckley Miller Wright UNQUALIFIED6Ivan Magalhaes
1037Aika U StensethBrazil2024-03-30Feltz Printing Service QUALIFIED59Bernardo Dominic
1038Juan O CaudyCanada2024-04-16Printing Dimensions PROPOSAL99Bernardo Dominic
1039Nicolas W BologniaSpain2024-04-21Chapman, Ross E Esq QUALIFIED67Asiya Javayant
1040Sinclair B GarufiFrance2024-04-05Feiner Bros UNQUALIFIED53Stephen Shaw
1041Ivar M SlusarskiAustralia2024-04-09Benton, John B Jr NEW68Amy Elsner
1042David D SlusarskiCanada2024-04-11Chanay, Jeffrey A Esq PROPOSAL43Ioni Bowcher
1043Silvio Q RutaUnited Kingdom2024-04-21Truhlar And Truhlar Attys NEW15Bernardo Dominic
1044Deepesh U PerinArgentina2024-04-20Rangoni Of Florence QUALIFIED76Elwin Sharvill
1045Aditya B NickaBrazil2024-04-15Chapman, Ross E Esq RENEWAL38Asiya Javayant
1046Faith S FlosiGermany2024-04-25Buckley Miller Wright UNQUALIFIED81Ioni Bowcher
1047Leja E MaletGermany2024-04-06Morlong Associates NEW99Anna Fali
1048Juan Q PoquetteBrazil2024-04-13Truhlar And Truhlar Attys RENEWAL85Ioni Bowcher
1049Kadeem H FlosiFrance2024-04-22King, Christopher A Esq RENEWAL27Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Murillo A RoysterCanadaOnyama Limba QUALIFIED
Darci J KuskoArgentinaStephen Shaw RENEWAL
Ivar X SchemmerSpainStephen Shaw RENEWAL
Arvin V TollnerFranceOnyama Limba UNQUALIFIED
Tony M FerenczAustraliaOnyama Limba NEW
Isabel A InouyeFranceAsiya Javayant PROPOSAL
Kaitlin F RimItalyXuxue Feng PROPOSAL
Isabel C WaycottIndiaBernardo Dominic NEW
Antonio W SchemmerArgentinaAmy Elsner UNQUALIFIED
Morrow N VocelkaBrazilOnyama Limba PROPOSAL
Alejandro Y FigeroaGermanyAsiya Javayant PROPOSAL
Izzy D VocelkaItalyAsiya Javayant NEW
Salvatore B TollnerRussiaAnna Fali NEW
Cody B FigeroaCanadaIvan Magalhaes NEW
Aruna Q CampainAustraliaIoni Bowcher RENEWAL
Salvatore G MorascaSpainBernardo Dominic QUALIFIED
Alejandro H OstroskyItalyElwin Sharvill QUALIFIED
Mayumi W CaudyJapanAmy Elsner NEW
Leja P CaldareraBrazilStephen Shaw UNQUALIFIED
Isabel L FigeroaItalyAsiya Javayant UNQUALIFIED
James A CaudyArgentinaBernardo Dominic QUALIFIED
David M FigeroaCanadaAmy Elsner NEW
Jones R PerinGermanyOnyama Limba NEW
Octavia C InouyeIndiaOnyama Limba NEGOTIATION
Maria G WieserUnited KingdomXuxue Feng NEW
Ashley N SlusarskiBrazilIoni Bowcher NEGOTIATION
Octavia F RimFranceAsiya Javayant QUALIFIED
David R PaprockiBrazilAnna Fali NEW
Silvio T PaprockiArgentinaElwin Sharvill NEGOTIATION
Aditya J RoysterFranceIoni Bowcher NEW
Isabel M MacleadAustraliaOnyama Limba PROPOSAL
Kadeem T PoquetteUnited KingdomAmy Elsner PROPOSAL
Johnson B PerinCanadaXuxue Feng UNQUALIFIED
Emily Y ButtCanadaIvan Magalhaes NEGOTIATION
Tony N NickaRussiaAnna Fali QUALIFIED
Ivar D VenereGermanyAmy Elsner QUALIFIED
Mujtaba E MaletFranceIoni Bowcher UNQUALIFIED
Jeanfrancois W BowleyGermanyIoni Bowcher PROPOSAL
Alejandro L BriddickAustraliaXuxue Feng NEW
Greenwood X BowleyGermanyAnna Fali UNQUALIFIED
Ashley N MaletArgentinaBernardo Dominic UNQUALIFIED
Maria T AlbaresItalyElwin Sharvill RENEWAL
Aruna Q DilliardItalyIvan Magalhaes RENEWAL
Izzy E AmigonSpainIoni Bowcher UNQUALIFIED
Mayumi E GlickArgentinaIoni Bowcher NEW
Smith W KuskoFranceIoni Bowcher NEW
Silvio U VocelkaSpainIoni Bowcher PROPOSAL
David J InouyeFranceXuxue Feng NEW
Maisha T KolmetzFranceStephen Shaw NEW
Deepesh Z CampainBrazilAnna Fali NEGOTIATION
Frozen Columns
Name
Faith Q Caldarera
Tony Y Wieser
Nicolas F Marrier
Kadeem F Foller
Isabel Q Venere
Clifford C Darakjy
James Y Gillian
Octavia R Rulapaugh
Clifford Y Dilliard
Emily O Ruta
Mayumi P Caudy
Jeanfrancois F Poquette
Jennifer B Slusarski
Juan G Amigon
Cody M Malet
Octavia M Foller
Sinclair Y Rulapaugh
Jones M Rim
Maisha P Ruta
Sinclair Z Chui
Aditya T Caudy
Greenwood Y Gillian
Greenwood E Briddick
Leja V Caldarera
Ricardo A Bowley
Morrow V Maclead
Faith G Rulapaugh
Faith L Iturbide
Johnson P Nicka
Juan M Venere
James F Stockham
Misaki Z Maclead
Darci Z Stenseth
Izzy K Butt
Tony S Ferencz
James P Butt
James V Briddick
Munro I Inouye
Cody V Iturbide
Kadeem Z Gillian
Leja V Venere
Leja V Maclead
Ivar E Tollner
Mayumi D Darakjy
Rodrigues K Nestle
Juan F Chui
Johnson E Briddick
Jones N Amigon
Mujtaba O Stenseth
Alejandro R Briddick
IdCountryDate
1000India2024-04-14
1001Brazil2024-04-20
1002Australia2024-04-15
1003Italy2024-04-08
1004Brazil2024-04-11
1005Spain2024-04-10
1006Japan2024-04-09
1007Italy2024-04-14
1008Spain2024-04-16
1009Germany2024-03-28
1010Germany2024-04-04
1011Spain2024-04-11
1012Canada2024-04-09
1013Spain2024-04-07
1014Australia2024-04-08
1015India2024-04-08
1016Japan2024-03-29
1017Italy2024-04-20
1018Canada2024-04-20
1019Spain2024-04-02
1020Germany2024-04-04
1021France2024-04-20
1022Germany2024-04-04
1023Russia2024-04-14
1024Italy2024-04-23
1025Russia2024-04-24
1026Spain2024-04-25
1027Italy2024-04-13
1028Spain2024-03-30
1029Italy2024-04-11
1030Spain2024-04-14
1031France2024-04-22
1032Russia2024-04-24
1033Japan2024-04-22
1034Canada2024-04-16
1035Spain2024-04-01
1036Canada2024-04-04
1037United Kingdom2024-04-20
1038Japan2024-04-11
1039Canada2024-04-24
1040Argentina2024-03-27
1041India2024-04-11
1042France2024-04-19
1043United Kingdom2024-04-11
1044Argentina2024-04-12
1045Spain2024-04-19
1046India2024-04-20
1047Argentina2024-04-11
1048France2024-04-06
1049France2024-04-04

On-Demand Data

NameIdCountryDate
Greenwood I Vocelka1000Brazil2024-03-30
Cody N Rim1001Spain2024-04-04
Cody C Inouye1002Australia2024-03-28
Antonio L Figeroa1003United Kingdom2024-04-11
Clifford C Waycott1004Australia2024-04-20
Greenwood M Whobrey1005Spain2024-04-19
Aika X Rim1006France2024-04-19
Nicolas S Butt1007United Kingdom2024-04-18
Rodrigues N Amigon1008Italy2024-04-07
Murillo F Wieser1009Spain2024-03-30
Rodrigues E Bowley1010Japan2024-04-22
Cody J Oldroyd1011Canada2024-03-28
Jones M Darakjy1012Germany2024-04-20
Aruna K Venere1013France2024-04-11
Stacey C Campain1014Brazil2024-04-08
Greenwood R Oldroyd1015Brazil2024-04-24
Aruna E Kusko1016Russia2024-04-16
Antonio X Dilliard1017Australia2024-03-30
James L Chui1018United Kingdom2024-04-23
Sinclair K Kusko1019France2024-04-24
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Costa B BowleyFranceBernardo Dominic NEGOTIATION
Leja N MarrierItalyAnna Fali PROPOSAL
Octavia L ChuiCanadaIoni Bowcher RENEWAL
Chavez S SlusarskiIndiaBernardo Dominic NEGOTIATION
Munro O NestleIndiaAmy Elsner PROPOSAL
Kaitlin G SlusarskiGermanyAnna Fali PROPOSAL
Julie D PerinItalyIvan Magalhaes QUALIFIED
Aruna Y IturbideUnited KingdomAmy Elsner PROPOSAL
Jeanfrancois N SchemmerFranceOnyama Limba NEGOTIATION
Mayumi Q VocelkaGermanyOnyama Limba NEGOTIATION
Aika R DilliardItalyIvan Magalhaes UNQUALIFIED
Aruna Q WieserGermanyAmy Elsner NEW
Jefferson F GauchoCanadaAsiya Javayant QUALIFIED
Chavez G NickaAustraliaAmy Elsner RENEWAL
Wickens S KuskoUnited KingdomIvan Magalhaes RENEWAL
Darci H DoeFranceStephen Shaw RENEWAL
Aruna K FlosiCanadaOnyama Limba NEGOTIATION
James H GillianGermanyStephen Shaw UNQUALIFIED
Nicolas W RimCanadaAsiya Javayant RENEWAL
Costa R BowleyFranceIvan Magalhaes UNQUALIFIED
Aruna H WhobreyBrazilXuxue Feng NEW
Stacey W SergiFranceIoni Bowcher UNQUALIFIED
Munro H MacleadGermanyXuxue Feng NEGOTIATION
Antonio X RimGermanyIoni Bowcher NEW
Wickens B ButtIndiaXuxue Feng NEGOTIATION
Ivar K TollnerJapanAnna Fali UNQUALIFIED
Misaki W BriddickItalyStephen Shaw NEW
Faith A DarakjyRussiaAmy Elsner NEW
Johnson I MarrierSpainIoni Bowcher PROPOSAL
Chavez K IturbideArgentinaAnna Fali NEGOTIATION
Adams H FigeroaJapanIvan Magalhaes QUALIFIED
Costa P RimGermanyElwin Sharvill NEGOTIATION
Izzy R MarrierIndiaAnna Fali NEW
Alejandro K IturbideBrazilXuxue Feng UNQUALIFIED
Smith T ButtIndiaAsiya Javayant UNQUALIFIED
Misaki R NestleFranceOnyama Limba PROPOSAL
Aika L DilliardRussiaBernardo Dominic RENEWAL
Darci I OldroydAustraliaAsiya Javayant QUALIFIED
Julie G BowleyFranceAnna Fali NEW
Isabel V IturbideArgentinaElwin Sharvill NEGOTIATION

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