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
Johnson G KolmetzAustraliaAmy Elsner PROPOSAL
Misaki W WhobreyCanadaIvan Magalhaes NEW
Mujtaba V FerenczAustraliaAmy Elsner NEGOTIATION
Aruna D BriddickUnited KingdomXuxue Feng PROPOSAL
Mayumi U FigeroaGermanyAnna Fali UNQUALIFIED
Tony K FerenczGermanyIoni Bowcher PROPOSAL
Sinclair L WhobreyArgentinaXuxue Feng UNQUALIFIED
Aika N BriddickSpainAmy Elsner UNQUALIFIED
Rodrigues N CaudyGermanyIoni Bowcher NEGOTIATION
Maisha M SergiRussiaAmy Elsner NEGOTIATION
Alejandro D SchemmerJapanXuxue Feng PROPOSAL
Ashley B SaylorsRussiaStephen Shaw NEGOTIATION
Kadeem Q SchemmerItalyXuxue Feng NEGOTIATION
Izzy O DoeRussiaStephen Shaw RENEWAL
Wickens B PerinSpainAnna Fali NEGOTIATION
Greenwood W DarakjyAustraliaXuxue Feng NEGOTIATION
Ricardo B BowleyRussiaAsiya Javayant NEGOTIATION
Murillo Y CaudyItalyAmy Elsner PROPOSAL
Jefferson O OstroskySpainElwin Sharvill NEW
Emily L GauchoGermanyOnyama Limba NEGOTIATION
Octavia T ButtArgentinaStephen Shaw PROPOSAL
Isabel N GauchoGermanyXuxue Feng RENEWAL
Julie W CampainSpainAnna Fali QUALIFIED
Emily S FigeroaArgentinaStephen Shaw RENEWAL
Smith F StensethArgentinaBernardo Dominic NEW
James J DoeArgentinaBernardo Dominic UNQUALIFIED
Leon C IturbideBrazilAnna Fali NEGOTIATION
Silvio F KuskoFranceBernardo Dominic PROPOSAL
Claire I BologniaRussiaAmy Elsner RENEWAL
Aruna X GauchoIndiaBernardo Dominic NEGOTIATION
Darci D BriddickIndiaXuxue Feng NEGOTIATION
Johnson X StensethGermanyAsiya Javayant RENEWAL
Jones V MaletArgentinaBernardo Dominic UNQUALIFIED
Francesco Z SlusarskiJapanBernardo Dominic QUALIFIED
Mayumi Y PerinIndiaXuxue Feng QUALIFIED
Rodrigues S StensethArgentinaAnna Fali NEW
Leja Q MacleadRussiaStephen Shaw NEGOTIATION
Jones G RulapaughJapanIoni Bowcher QUALIFIED
Jeanfrancois C WieserSpainAsiya Javayant RENEWAL
Ashley G WaycottRussiaElwin Sharvill NEW
Stacey J PoquetteSpainElwin Sharvill UNQUALIFIED
Clifford F GarufiFranceAmy Elsner NEW
Arvin S OstroskyCanadaAmy Elsner RENEWAL
Darci D DilliardJapanIoni Bowcher NEW
Wickens Y ChuiBrazilAsiya Javayant RENEWAL
Johnson S StockhamSpainXuxue Feng NEW
Darci N SaylorsFranceIvan Magalhaes NEW
Maria X KolmetzGermanyXuxue Feng NEW
Jones R FlosiSpainStephen Shaw RENEWAL
Juan K RoysterGermanyIvan Magalhaes NEW
Horizontal
NameCountryRepresentativeStatus
Jefferson B AlbaresSpainElwin Sharvill NEGOTIATION
David Z VocelkaAustraliaAmy Elsner NEW
Adams W KuskoAustraliaAnna Fali QUALIFIED
Johnson R DoeJapanIoni Bowcher NEGOTIATION
Julie I DilliardItalyIvan Magalhaes QUALIFIED
Aditya O FigeroaIndiaOnyama Limba UNQUALIFIED
Silvio W PaprockiGermanyStephen Shaw UNQUALIFIED
Kadeem X BriddickBrazilAmy Elsner PROPOSAL
Maria I MorascaFranceOnyama Limba RENEWAL
Antonio O DarakjySpainAsiya Javayant UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ricardo U VenereRussia2024-03-28Feltz Printing Service QUALIFIED11Bernardo Dominic
1001Darci J FigeroaItaly2024-03-22Chapman, Ross E Esq QUALIFIED86Amy Elsner
1002Maria E DilliardCanada2024-04-12Feiner Bros RENEWAL1Onyama Limba
1003Isabel Y CaldareraUnited Kingdom2024-03-23Benton, John B Jr RENEWAL99Ioni Bowcher
1004Julie U SaylorsArgentina2024-03-30Chapman, Ross E Esq NEGOTIATION54Amy Elsner
1005Antonio N PoquetteSpain2024-03-26Rousseaux, Michael Esq UNQUALIFIED22Bernardo Dominic
1006Cody Z BriddickBrazil2024-04-06Chemel, James L Cpa RENEWAL48Stephen Shaw
1007Greenwood N SaylorsSpain2024-03-22Chanay, Jeffrey A Esq RENEWAL19Anna Fali
1008Silvio J OldroydIndia2024-04-17Feltz Printing Service QUALIFIED86Amy Elsner
1009Johnson R FerenczUnited Kingdom2024-03-21Printing Dimensions QUALIFIED95Amy Elsner
1010Ashley N AmigonCanada2024-03-23Truhlar And Truhlar Attys RENEWAL80Elwin Sharvill
1011Wickens G KolmetzAustralia2024-04-14King, Christopher A Esq PROPOSAL33Elwin Sharvill
1012Tony X AmigonCanada2024-04-10Morlong Associates RENEWAL95Bernardo Dominic
1013Faith O TollnerGermany2024-03-26Truhlar And Truhlar Attys PROPOSAL81Stephen Shaw
1014Maisha Z PoquetteRussia2024-04-19King, Christopher A Esq NEW7Elwin Sharvill
1015Tony L ShinkoJapan2024-04-13Feltz Printing Service UNQUALIFIED73Ioni Bowcher
1016Darci M GillianRussia2024-04-01King, Christopher A Esq NEW25Amy Elsner
1017Kadeem F IturbideIndia2024-04-18Truhlar And Truhlar Attys QUALIFIED70Ivan Magalhaes
1018Clifford W FigeroaSpain2024-03-29Morlong Associates NEW67Stephen Shaw
1019Ivar M MarrierCanada2024-04-11Morlong Associates RENEWAL47Asiya Javayant
1020Murillo T CaldareraItaly2024-03-29Dorl, James J Esq UNQUALIFIED87Ivan Magalhaes
1021Darci L FollerItaly2024-04-01Feiner Bros QUALIFIED84Stephen Shaw
1022Leon V StensethBrazil2024-04-06Rangoni Of Florence QUALIFIED68Anna Fali
1023Emily W VenereSpain2024-04-16Dorl, James J Esq PROPOSAL40Amy Elsner
1024Johnson A FigeroaRussia2024-04-16Chapman, Ross E Esq QUALIFIED2Amy Elsner
1025Misaki B VocelkaIndia2024-03-25Chemel, James L Cpa PROPOSAL89Elwin Sharvill
1026Maisha C BowleySpain2024-03-28Feltz Printing Service PROPOSAL2Ioni Bowcher
1027Ricardo R KuskoRussia2024-03-31Truhlar And Truhlar Attys NEW27Ivan Magalhaes
1028Maisha F RulapaughAustralia2024-04-11Rousseaux, Michael Esq RENEWAL19Ivan Magalhaes
1029Octavia C GlickGermany2024-03-29Rousseaux, Michael Esq PROPOSAL88Xuxue Feng
1030Julie P AmigonBrazil2024-04-11King, Christopher A Esq QUALIFIED66Onyama Limba
1031Johnson C RimIndia2024-04-18Chanay, Jeffrey A Esq NEW80Onyama Limba
1032Rodrigues M DoeFrance2024-04-11Morlong Associates NEW60Onyama Limba
1033Salvatore A MacleadSpain2024-04-04Rousseaux, Michael Esq UNQUALIFIED66Xuxue Feng
1034Mujtaba T CampainBrazil2024-03-28Chapman, Ross E Esq NEGOTIATION87Stephen Shaw
1035Maisha G MorascaFrance2024-04-10Morlong Associates NEGOTIATION75Asiya Javayant
1036Rodrigues Q SchemmerFrance2024-03-31Feltz Printing Service QUALIFIED42Anna Fali
1037Leon Q CaudyFrance2024-04-05King, Christopher A Esq QUALIFIED71Ivan Magalhaes
1038Mujtaba T VenereUnited Kingdom2024-03-22Chapman, Ross E Esq PROPOSAL10Asiya Javayant
1039Kaitlin X RulapaughJapan2024-03-22Benton, John B Jr PROPOSAL27Stephen Shaw
1040Mayumi W BowleyGermany2024-03-26Printing Dimensions QUALIFIED20Stephen Shaw
1041Octavia N CampainIndia2024-03-25Feltz Printing Service QUALIFIED33Amy Elsner
1042Leja Z CampainIndia2024-04-16Truhlar And Truhlar Attys QUALIFIED59Ioni Bowcher
1043Clifford L PoquetteAustralia2024-03-28Benton, John B Jr UNQUALIFIED30Bernardo Dominic
1044Izzy Z FollerFrance2024-03-27Rangoni Of Florence NEW18Elwin Sharvill
1045Rodrigues E MaletFrance2024-04-10Morlong Associates NEW51Onyama Limba
1046Chavez A OstroskyArgentina2024-04-11Rousseaux, Michael Esq NEW68Xuxue Feng
1047Adams S GauchoFrance2024-04-08Benton, John B Jr QUALIFIED65Ioni Bowcher
1048Juan N TollnerUnited Kingdom2024-03-29King, Christopher A Esq UNQUALIFIED42Amy Elsner
1049Maria D MacleadSpain2024-04-08Chanay, Jeffrey A Esq NEW98Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Ricardo L SchemmerArgentinaElwin Sharvill NEGOTIATION
Emily S TollnerItalyIvan Magalhaes RENEWAL
Greenwood R GlickArgentinaIvan Magalhaes NEW
Aditya J MorascaFranceElwin Sharvill PROPOSAL
Stacey L StensethItalyOnyama Limba PROPOSAL
Ricardo V PerinGermanyStephen Shaw PROPOSAL
Alejandro Z FollerCanadaXuxue Feng NEW
Kaitlin U FlosiItalyElwin Sharvill PROPOSAL
Aditya A RutaUnited KingdomAnna Fali NEW
Sinclair T MorascaBrazilIvan Magalhaes NEGOTIATION
Smith F PoquetteRussiaAmy Elsner QUALIFIED
Morrow H AmigonRussiaIvan Magalhaes UNQUALIFIED
Deepesh S WaycottArgentinaXuxue Feng NEW
Octavia J PoquetteBrazilStephen Shaw PROPOSAL
Chavez M FlosiGermanyAmy Elsner QUALIFIED
Claire D BologniaItalyAnna Fali UNQUALIFIED
Leon T DarakjyRussiaAmy Elsner PROPOSAL
Leja P SergiCanadaXuxue Feng PROPOSAL
Jeanfrancois N CaldareraCanadaIoni Bowcher RENEWAL
Emily M VenereJapanStephen Shaw QUALIFIED
Misaki J SaylorsCanadaIvan Magalhaes QUALIFIED
Leja B AlbaresFranceXuxue Feng RENEWAL
Maisha B BologniaItalyAsiya Javayant RENEWAL
Silvio Z AmigonItalyXuxue Feng NEW
Tony A SlusarskiIndiaAmy Elsner QUALIFIED
Aika A InouyeItalyAmy Elsner NEGOTIATION
Clifford C VenereUnited KingdomIoni Bowcher QUALIFIED
Sinclair D MaletIndiaAmy Elsner NEGOTIATION
Sinclair A StockhamRussiaIoni Bowcher NEW
Mayumi O MacleadIndiaOnyama Limba NEW
Jeanfrancois C RutaItalyAmy Elsner RENEWAL
Aditya X VocelkaJapanAsiya Javayant QUALIFIED
Emily K BowleyRussiaElwin Sharvill UNQUALIFIED
Murillo I KuskoRussiaIvan Magalhaes QUALIFIED
Faith Q RutaCanadaOnyama Limba PROPOSAL
Isabel S IturbideFranceOnyama Limba NEW
Alejandro J RoysterGermanyStephen Shaw RENEWAL
Aditya S PaprockiSpainIoni Bowcher NEW
Nicolas X KuskoJapanStephen Shaw UNQUALIFIED
Izzy I ButtFranceOnyama Limba RENEWAL
Juan E DarakjyUnited KingdomAmy Elsner NEGOTIATION
Silvio A CampainArgentinaIvan Magalhaes QUALIFIED
Jeanfrancois B TollnerFranceOnyama Limba RENEWAL
Claire E MacleadFranceStephen Shaw UNQUALIFIED
Wickens E KolmetzFranceStephen Shaw NEGOTIATION
Ivar E SlusarskiArgentinaIoni Bowcher NEGOTIATION
Kaitlin N ButtFranceAmy Elsner PROPOSAL
Misaki D FollerJapanOnyama Limba NEGOTIATION
Munro G CampainBrazilAmy Elsner RENEWAL
Clifford A MarrierArgentinaIvan Magalhaes QUALIFIED
Frozen Columns
Name
Misaki S Shinko
Kaitlin F Foller
Silvio S Doe
Rodrigues H Malet
Deepesh P Venere
Francesco X Kusko
Adams G Ferencz
Mujtaba N Royster
Ashley V Shinko
Stacey H Venere
Greenwood T Sergi
Rodrigues W Caldarera
Jennifer J Venere
Tony K Marrier
Francesco J Tollner
Morrow S Bolognia
Morrow Y Caudy
Murillo T Saylors
Claire H Vocelka
Faith J Flosi
Stacey O Chui
Faith N Kolmetz
Nicolas R Figeroa
Silvio G Chui
Mujtaba S Wieser
Ashley S Bolognia
Aditya V Kusko
Costa F Doe
Aika Y Albares
Francesco C Kusko
Rodrigues G Rim
Octavia Q Whobrey
Adams U Sergi
Smith Y Garufi
Rodrigues A Gillian
Alejandro T Gaucho
David G Oldroyd
Mujtaba F Slusarski
Darci A Darakjy
Jeanfrancois L Doe
Greenwood C Rim
David M Ruta
David X Campain
Salvatore A Amigon
Adams G Iturbide
Alejandro A Rulapaugh
Francesco Y Marrier
Leon E Campain
Mujtaba D Paprocki
Emily U Wieser
IdCountryDate
1000Germany2024-04-02
1001Spain2024-04-14
1002Canada2024-04-13
1003Italy2024-03-22
1004France2024-03-30
1005Canada2024-03-21
1006Canada2024-04-18
1007Argentina2024-04-03
1008France2024-04-19
1009United Kingdom2024-04-16
1010Spain2024-04-10
1011India2024-04-17
1012United Kingdom2024-04-04
1013Germany2024-04-08
1014Argentina2024-03-30
1015Russia2024-03-23
1016Germany2024-03-25
1017Japan2024-04-13
1018Canada2024-04-10
1019France2024-03-21
1020Brazil2024-04-14
1021United Kingdom2024-03-26
1022Russia2024-04-15
1023Australia2024-04-05
1024Russia2024-04-14
1025Canada2024-04-06
1026Germany2024-04-13
1027Spain2024-04-03
1028Japan2024-03-30
1029Australia2024-04-11
1030Germany2024-04-13
1031Canada2024-04-07
1032France2024-04-17
1033Germany2024-04-02
1034India2024-04-12
1035Spain2024-03-23
1036Brazil2024-04-06
1037Spain2024-04-04
1038Canada2024-04-13
1039Australia2024-04-01
1040Canada2024-03-21
1041United Kingdom2024-04-04
1042Brazil2024-04-16
1043United Kingdom2024-03-25
1044Canada2024-03-28
1045Australia2024-04-13
1046Spain2024-04-01
1047Italy2024-03-29
1048Australia2024-03-24
1049France2024-04-07

On-Demand Data

NameIdCountryDate
Kadeem M Maclead1000Italy2024-04-17
Greenwood P Waycott1001Brazil2024-03-22
Costa M Stenseth1002Argentina2024-03-23
Munro E Venere1003France2024-04-06
Darci Y Amigon1004Canada2024-04-19
Silvio I Butt1005Japan2024-04-01
Tony Q Perin1006Spain2024-04-03
Jennifer E Amigon1007Argentina2024-03-30
Mayumi M Caudy1008Argentina2024-04-19
Juan R Oldroyd1009United Kingdom2024-03-22
Maria Q Tollner1010Argentina2024-04-09
Jones J Rim1011Canada2024-03-30
Emily I Ferencz1012Canada2024-04-17
Alejandro K Schemmer1013Germany2024-04-13
Munro M Doe1014United Kingdom2024-04-01
Octavia Q Kusko1015India2024-03-26
Maisha E Kusko1016France2024-04-01
Jones X Stenseth1017United Kingdom2024-04-05
Kadeem B Whobrey1018Australia2024-04-07
Morrow S Dilliard1019India2024-04-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Johnson A RoysterItalyXuxue Feng RENEWAL
Aruna C InouyeBrazilAmy Elsner NEW
Isabel U BologniaRussiaBernardo Dominic PROPOSAL
Mujtaba V ChuiAustraliaAmy Elsner RENEWAL
Cody S MorascaItalyIvan Magalhaes QUALIFIED
Darci C IturbideRussiaAsiya Javayant UNQUALIFIED
Maisha V CaudyBrazilIoni Bowcher UNQUALIFIED
Francesco B MarrierSpainAsiya Javayant QUALIFIED
Ashley C FerenczRussiaIvan Magalhaes PROPOSAL
Jennifer Z NickaSpainAmy Elsner NEW
Deepesh Q OstroskyRussiaXuxue Feng RENEWAL
Aruna H ButtAustraliaAnna Fali NEGOTIATION
Aditya G SlusarskiAustraliaElwin Sharvill RENEWAL
Deepesh S CaldareraRussiaAnna Fali QUALIFIED
Aruna P WhobreyItalyOnyama Limba QUALIFIED
Silvio U GarufiAustraliaOnyama Limba QUALIFIED
Claire D SlusarskiFranceOnyama Limba PROPOSAL
Silvio L BriddickIndiaStephen Shaw NEW
Murillo X BologniaBrazilAnna Fali NEGOTIATION
Smith D SergiUnited KingdomIvan Magalhaes PROPOSAL
Jeanfrancois U SaylorsGermanyAsiya Javayant NEW
Leja B CampainAustraliaOnyama Limba PROPOSAL
Greenwood V FollerGermanyStephen Shaw NEGOTIATION
Cody C PaprockiCanadaIvan Magalhaes RENEWAL
Morrow S DoeGermanyAnna Fali UNQUALIFIED
Arvin U CampainRussiaElwin Sharvill QUALIFIED
Smith B FollerJapanBernardo Dominic NEW
Isabel V MacleadUnited KingdomElwin Sharvill NEGOTIATION
Emily P RimItalyBernardo Dominic QUALIFIED
Leja F FerenczUnited KingdomIoni Bowcher UNQUALIFIED
Ashley W SchemmerBrazilStephen Shaw PROPOSAL
Silvio S PoquetteGermanyAmy Elsner NEGOTIATION
Cody J MaletSpainBernardo Dominic NEW
Julie M SlusarskiJapanElwin Sharvill PROPOSAL
Costa D DarakjySpainIvan Magalhaes QUALIFIED
Darci C ShinkoBrazilIvan Magalhaes PROPOSAL
Johnson D BowleyItalyElwin Sharvill QUALIFIED
Mayumi F DoeFranceStephen Shaw NEGOTIATION
Salvatore V MorascaFranceStephen Shaw NEGOTIATION
Julie I VocelkaIndiaStephen Shaw 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>