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
Misaki H PerinItalyElwin Sharvill UNQUALIFIED
Faith D OldroydSpainIvan Magalhaes QUALIFIED
Tony O DoeAustraliaBernardo Dominic UNQUALIFIED
James V SchemmerArgentinaIvan Magalhaes NEGOTIATION
James O MacleadBrazilStephen Shaw PROPOSAL
Julie Y GlickGermanyAnna Fali PROPOSAL
David G ShinkoArgentinaIvan Magalhaes QUALIFIED
Leon E ButtGermanyAsiya Javayant NEGOTIATION
Maisha G DilliardJapanStephen Shaw RENEWAL
Rodrigues V FerenczSpainAmy Elsner NEGOTIATION
Nicolas L StockhamRussiaOnyama Limba UNQUALIFIED
Aditya C PoquetteRussiaAmy Elsner PROPOSAL
Jefferson B StockhamItalyIoni Bowcher QUALIFIED
Chavez R PaprockiRussiaAmy Elsner UNQUALIFIED
Aditya K DilliardFranceAmy Elsner UNQUALIFIED
James U RimJapanOnyama Limba RENEWAL
Jeanfrancois T StockhamFranceAnna Fali RENEWAL
Nicolas I KuskoGermanyAnna Fali QUALIFIED
Johnson V OldroydItalyAsiya Javayant QUALIFIED
Izzy C ChuiSpainIoni Bowcher NEW
Chavez W BologniaCanadaBernardo Dominic QUALIFIED
Alejandro J VocelkaRussiaOnyama Limba NEGOTIATION
Clifford O KuskoGermanyElwin Sharvill RENEWAL
Costa L GauchoAustraliaXuxue Feng PROPOSAL
Octavia M CampainArgentinaStephen Shaw QUALIFIED
Octavia B AmigonCanadaIvan Magalhaes NEW
Juan V MaletIndiaAnna Fali RENEWAL
Leja S DoeBrazilIoni Bowcher UNQUALIFIED
Faith I MaletBrazilXuxue Feng NEGOTIATION
Juan J StensethUnited KingdomIvan Magalhaes PROPOSAL
Arvin Y KolmetzJapanAsiya Javayant PROPOSAL
Wickens M BologniaBrazilAsiya Javayant UNQUALIFIED
Chavez N KuskoIndiaElwin Sharvill QUALIFIED
Kaitlin U AmigonRussiaAsiya Javayant QUALIFIED
Ricardo S NickaAustraliaAsiya Javayant UNQUALIFIED
Ivar T ChuiRussiaXuxue Feng RENEWAL
Leja P ButtCanadaXuxue Feng NEGOTIATION
Cody K NestleFranceIoni Bowcher NEW
Stacey B WieserIndiaXuxue Feng RENEWAL
Clifford Q MorascaBrazilIvan Magalhaes UNQUALIFIED
Claire J MaletJapanElwin Sharvill UNQUALIFIED
Ashley V StensethCanadaAsiya Javayant RENEWAL
Stacey C CaldareraItalyOnyama Limba RENEWAL
Rodrigues W OldroydJapanIvan Magalhaes QUALIFIED
Izzy N OstroskyUnited KingdomElwin Sharvill UNQUALIFIED
Tony C OldroydItalyAmy Elsner UNQUALIFIED
Maria W BologniaSpainIoni Bowcher QUALIFIED
Johnson B StockhamUnited KingdomAsiya Javayant UNQUALIFIED
Mayumi P FerenczArgentinaIvan Magalhaes UNQUALIFIED
Maisha O SchemmerSpainXuxue Feng PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Leja W OstroskyAustraliaXuxue Feng NEW
Deepesh L ShinkoUnited KingdomAmy Elsner QUALIFIED
Morrow Y DarakjyFranceBernardo Dominic PROPOSAL
Rodrigues E MacleadIndiaAsiya Javayant QUALIFIED
Arvin H MorascaUnited KingdomBernardo Dominic QUALIFIED
Darci Z PaprockiBrazilStephen Shaw RENEWAL
Jones N FigeroaFranceIoni Bowcher QUALIFIED
Julie Q FerenczIndiaXuxue Feng RENEWAL
Leja R FerenczGermanyAnna Fali NEW
Izzy W KuskoItalyIoni Bowcher PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Isabel Q VocelkaRussia2024-03-26Benton, John B Jr PROPOSAL35Bernardo Dominic
1001Alejandro Q SergiCanada2024-03-29King, Christopher A Esq NEGOTIATION34Ivan Magalhaes
1002Costa Z NestleArgentina2024-04-13Commercial Press QUALIFIED27Ioni Bowcher
1003Sinclair R WaycottArgentina2024-04-04Rangoni Of Florence PROPOSAL56Ioni Bowcher
1004Wickens N BologniaJapan2024-04-18Chapman, Ross E Esq RENEWAL87Ivan Magalhaes
1005Ashley B ButtJapan2024-04-09Dorl, James J Esq RENEWAL73Stephen Shaw
1006Darci H RimJapan2024-03-31Chanay, Jeffrey A Esq NEGOTIATION38Ivan Magalhaes
1007Ashley N BologniaCanada2024-04-18Dorl, James J Esq NEW38Onyama Limba
1008Kadeem L RutaRussia2024-04-02Commercial Press NEW67Ioni Bowcher
1009Kadeem E PerinBrazil2024-03-29Morlong Associates UNQUALIFIED30Elwin Sharvill
1010Arvin K StensethCanada2024-04-16Feltz Printing Service UNQUALIFIED32Elwin Sharvill
1011Costa T RutaJapan2024-04-06Printing Dimensions QUALIFIED64Amy Elsner
1012Kaitlin M OstroskySpain2024-04-11Buckley Miller Wright UNQUALIFIED40Anna Fali
1013Nicolas J PoquetteRussia2024-03-28Printing Dimensions PROPOSAL38Stephen Shaw
1014Izzy M WhobreyJapan2024-04-15King, Christopher A Esq NEGOTIATION52Anna Fali
1015Chavez T OldroydCanada2024-04-19King, Christopher A Esq NEGOTIATION22Onyama Limba
1016Julie D MacleadRussia2024-04-14Chanay, Jeffrey A Esq PROPOSAL83Stephen Shaw
1017Jefferson Y FigeroaFrance2024-03-28King, Christopher A Esq NEW37Onyama Limba
1018Emily W DoeItaly2024-03-28Buckley Miller Wright PROPOSAL34Stephen Shaw
1019James Z StensethRussia2024-04-02Chemel, James L Cpa UNQUALIFIED16Xuxue Feng
1020James G MorascaUnited Kingdom2024-03-30King, Christopher A Esq NEW75Stephen Shaw
1021Aika R WieserCanada2024-04-23Rangoni Of Florence PROPOSAL77Ivan Magalhaes
1022Maisha N MacleadItaly2024-04-05Benton, John B Jr RENEWAL54Xuxue Feng
1023Leja D WhobreyItaly2024-03-29King, Christopher A Esq PROPOSAL68Xuxue Feng
1024Francesco X SlusarskiAustralia2024-04-23Chanay, Jeffrey A Esq PROPOSAL54Anna Fali
1025Julie L MorascaJapan2024-03-30Printing Dimensions QUALIFIED60Ioni Bowcher
1026Chavez Q ChuiBrazil2024-04-04Chapman, Ross E Esq PROPOSAL35Xuxue Feng
1027Morrow B MarrierRussia2024-04-07Chemel, James L Cpa NEGOTIATION93Xuxue Feng
1028Greenwood V KolmetzBrazil2024-04-19Truhlar And Truhlar Attys PROPOSAL79Onyama Limba
1029Cody D BriddickAustralia2024-03-27Benton, John B Jr NEGOTIATION0Anna Fali
1030James E PaprockiSpain2024-04-02Rangoni Of Florence PROPOSAL69Ioni Bowcher
1031Jeanfrancois Z StockhamUnited Kingdom2024-04-01Chanay, Jeffrey A Esq NEGOTIATION47Ivan Magalhaes
1032Johnson H ButtArgentina2024-04-03Dorl, James J Esq RENEWAL88Ivan Magalhaes
1033Faith O DarakjyArgentina2024-03-26Morlong Associates NEGOTIATION11Onyama Limba
1034Maisha G MacleadItaly2024-04-16Truhlar And Truhlar Attys UNQUALIFIED29Asiya Javayant
1035David J MorascaJapan2024-04-20Feiner Bros PROPOSAL97Anna Fali
1036James Z WieserBrazil2024-04-16Truhlar And Truhlar Attys PROPOSAL89Amy Elsner
1037Maisha V FlosiIndia2024-04-01Commercial Press QUALIFIED57Asiya Javayant
1038Cody L WaycottFrance2024-04-05Feltz Printing Service PROPOSAL5Xuxue Feng
1039Claire Y CaudyUnited Kingdom2024-04-07Truhlar And Truhlar Attys PROPOSAL15Bernardo Dominic
1040Jennifer Z RutaCanada2024-04-14Dorl, James J Esq UNQUALIFIED14Amy Elsner
1041Alejandro O SlusarskiIndia2024-04-07Chapman, Ross E Esq RENEWAL22Ivan Magalhaes
1042Alejandro B MorascaArgentina2024-04-07Buckley Miller Wright NEGOTIATION92Anna Fali
1043Juan O GauchoFrance2024-04-13Feiner Bros NEGOTIATION7Asiya Javayant
1044Salvatore J PerinCanada2024-04-22Chapman, Ross E Esq UNQUALIFIED64Asiya Javayant
1045Aditya M FollerItaly2024-04-02Chemel, James L Cpa QUALIFIED80Stephen Shaw
1046Jones T BowleyBrazil2024-03-31Commercial Press UNQUALIFIED70Elwin Sharvill
1047Juan K MacleadIndia2024-04-02Benton, John B Jr RENEWAL16Ivan Magalhaes
1048Izzy P InouyeSpain2024-04-19Morlong Associates RENEWAL92Ivan Magalhaes
1049Jones E StockhamBrazil2024-04-14Rousseaux, Michael Esq RENEWAL3Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Ashley I ChuiCanadaBernardo Dominic UNQUALIFIED
Greenwood V ChuiIndiaIvan Magalhaes PROPOSAL
Darci F AmigonBrazilBernardo Dominic NEGOTIATION
Rodrigues C VocelkaAustraliaAmy Elsner QUALIFIED
James Q GillianGermanyIvan Magalhaes NEW
Silvio C KuskoRussiaAsiya Javayant QUALIFIED
Octavia I OstroskyCanadaStephen Shaw UNQUALIFIED
Munro X SchemmerSpainAmy Elsner UNQUALIFIED
Morrow W PoquetteUnited KingdomAsiya Javayant RENEWAL
Morrow D MorascaUnited KingdomBernardo Dominic RENEWAL
Ashley U MaletAustraliaIoni Bowcher NEGOTIATION
Misaki T SlusarskiAustraliaIvan Magalhaes QUALIFIED
Jones E OstroskyRussiaBernardo Dominic UNQUALIFIED
Clifford E FlosiCanadaIvan Magalhaes NEW
Alejandro I KuskoFranceAnna Fali NEGOTIATION
Nicolas X DilliardBrazilIoni Bowcher RENEWAL
Murillo Q ChuiSpainAmy Elsner PROPOSAL
Misaki T WhobreyAustraliaOnyama Limba RENEWAL
David M WaycottUnited KingdomAmy Elsner QUALIFIED
Adams B InouyeArgentinaAnna Fali NEGOTIATION
Maria H MaletItalyXuxue Feng QUALIFIED
Morrow Y GlickBrazilXuxue Feng PROPOSAL
Morrow Z KolmetzFranceElwin Sharvill QUALIFIED
Salvatore L AlbaresIndiaStephen Shaw NEW
James Q AlbaresBrazilIvan Magalhaes NEGOTIATION
Sinclair R KolmetzJapanOnyama Limba NEGOTIATION
Isabel U MorascaCanadaAnna Fali PROPOSAL
Darci F RulapaughAustraliaStephen Shaw RENEWAL
Wickens J PaprockiArgentinaElwin Sharvill PROPOSAL
Sinclair N WhobreyBrazilAnna Fali PROPOSAL
Tony C PaprockiUnited KingdomAnna Fali QUALIFIED
Silvio E FigeroaItalyBernardo Dominic NEGOTIATION
Francesco Z GillianIndiaIoni Bowcher QUALIFIED
Tony Z KolmetzGermanyStephen Shaw RENEWAL
Izzy L ShinkoItalyAmy Elsner NEGOTIATION
James A WaycottArgentinaAsiya Javayant NEGOTIATION
Deepesh V MorascaAustraliaIvan Magalhaes RENEWAL
Antonio O NickaSpainAnna Fali RENEWAL
Murillo B StockhamIndiaIvan Magalhaes QUALIFIED
Misaki E WhobreyJapanOnyama Limba NEGOTIATION
Munro M StockhamArgentinaIvan Magalhaes NEW
Adams A SergiIndiaXuxue Feng NEGOTIATION
Ricardo R CaldareraCanadaOnyama Limba NEGOTIATION
Johnson D NickaJapanXuxue Feng RENEWAL
Izzy D OstroskyArgentinaXuxue Feng NEW
Octavia W IturbideIndiaElwin Sharvill PROPOSAL
David E VenereJapanElwin Sharvill PROPOSAL
Silvio Y GillianAustraliaOnyama Limba RENEWAL
Ricardo A FerenczJapanAnna Fali PROPOSAL
Chavez A NestleUnited KingdomIoni Bowcher RENEWAL
Frozen Columns
Name
Claire P Darakjy
Claire E Stenseth
Juan T Inouye
Ricardo L Bolognia
Francesco V Oldroyd
Nicolas V Doe
Alejandro B Ruta
Darci K Maclead
Isabel U Marrier
Greenwood U Wieser
Darci M Oldroyd
Clifford L Flosi
Jennifer F Albares
Leon K Malet
Mujtaba V Waycott
Silvio I Stockham
Antonio S Foller
Munro V Sergi
Jeanfrancois D Morasca
Jeanfrancois E Doe
Tony V Butt
Jones J Schemmer
Jefferson Y Royster
Izzy N Marrier
Murillo Y Rulapaugh
Julie J Royster
Chavez X Bolognia
Jeanfrancois R Figeroa
Smith G Perin
Deepesh N Amigon
Aruna P Paprocki
Emily R Malet
Aika K Whobrey
Jefferson U Wieser
Tony K Oldroyd
Leon X Garufi
Salvatore D Iturbide
Rodrigues B Garufi
Isabel E Amigon
Maria Q Oldroyd
Tony V Gaucho
Octavia Y Dilliard
Ricardo Q Sergi
Antonio U Glick
Jeanfrancois B Bolognia
Claire T Butt
Jeanfrancois X Caudy
Silvio O Sergi
Adams H Ostrosky
Ricardo E Paprocki
IdCountryDate
1000Italy2024-04-24
1001Brazil2024-04-14
1002Canada2024-04-06
1003United Kingdom2024-04-19
1004Spain2024-04-23
1005Germany2024-04-07
1006Germany2024-04-05
1007Germany2024-04-24
1008Russia2024-03-29
1009India2024-04-08
1010Brazil2024-04-24
1011India2024-04-14
1012Russia2024-04-02
1013Germany2024-04-11
1014Australia2024-04-23
1015France2024-04-14
1016France2024-04-11
1017Australia2024-04-03
1018Australia2024-04-01
1019Australia2024-04-13
1020Germany2024-04-14
1021United Kingdom2024-04-17
1022France2024-04-03
1023India2024-04-06
1024Germany2024-04-04
1025Argentina2024-03-30
1026Brazil2024-04-14
1027France2024-04-06
1028Canada2024-04-12
1029Italy2024-04-13
1030India2024-04-04
1031United Kingdom2024-04-17
1032Argentina2024-04-16
1033Canada2024-04-14
1034Russia2024-04-03
1035Argentina2024-04-23
1036Australia2024-04-01
1037Spain2024-04-12
1038Brazil2024-04-16
1039Argentina2024-04-05
1040Spain2024-04-20
1041Brazil2024-04-02
1042Spain2024-04-14
1043Canada2024-04-05
1044United Kingdom2024-04-01
1045Canada2024-04-14
1046Russia2024-04-07
1047United Kingdom2024-04-12
1048Argentina2024-04-08
1049United Kingdom2024-04-06

On-Demand Data

NameIdCountryDate
Francesco J Darakjy1000United Kingdom2024-04-02
Salvatore P Albares1001Germany2024-04-16
Munro J Sergi1002Italy2024-03-30
Antonio N Chui1003Canada2024-03-26
Mayumi D Ruta1004Argentina2024-04-15
Munro Z Paprocki1005Japan2024-04-13
David S Venere1006Spain2024-04-17
Ashley B Caudy1007Germany2024-04-14
Ricardo C Doe1008Germany2024-04-05
Julie S Albares1009Brazil2024-04-18
Silvio U Paprocki1010United Kingdom2024-04-10
Claire A Stockham1011Canada2024-04-13
Munro O Venere1012India2024-04-23
Emily V Glick1013Australia2024-04-17
Darci V Gaucho1014Germany2024-04-07
Arvin F Kusko1015France2024-04-07
Leon V Rim1016Argentina2024-04-06
Francesco T Doe1017Spain2024-04-15
Aditya E Iturbide1018Italy2024-04-16
Faith C Waycott1019Italy2024-04-24
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aika Z BriddickIndiaOnyama Limba UNQUALIFIED
Salvatore X OldroydAustraliaIvan Magalhaes NEW
Kaitlin H SchemmerSpainAmy Elsner RENEWAL
Salvatore L OstroskyUnited KingdomBernardo Dominic NEGOTIATION
Costa N WaycottFranceAnna Fali NEW
Costa N CaldareraCanadaIoni Bowcher UNQUALIFIED
Claire T FigeroaIndiaIoni Bowcher NEGOTIATION
Tony J SlusarskiUnited KingdomAnna Fali NEW
Kadeem C WieserRussiaStephen Shaw UNQUALIFIED
Kadeem S StockhamCanadaIoni Bowcher NEW
Faith W SergiUnited KingdomIoni Bowcher RENEWAL
Leon X FlosiRussiaOnyama Limba QUALIFIED
Wickens Z GauchoAustraliaIvan Magalhaes QUALIFIED
Ashley V DarakjyIndiaIvan Magalhaes PROPOSAL
Faith I GlickIndiaAnna Fali PROPOSAL
Maria J AlbaresRussiaIoni Bowcher QUALIFIED
Munro I BriddickRussiaBernardo Dominic NEGOTIATION
Cody W MarrierRussiaBernardo Dominic RENEWAL
Izzy L GauchoRussiaStephen Shaw PROPOSAL
Ricardo R RimGermanyIoni Bowcher QUALIFIED
Cody E MaletAustraliaBernardo Dominic NEGOTIATION
Deepesh U SlusarskiFranceOnyama Limba NEW
Julie H FlosiGermanyAsiya Javayant QUALIFIED
Ivar D RoysterBrazilStephen Shaw UNQUALIFIED
Antonio K WaycottItalyAmy Elsner NEGOTIATION
Rodrigues F VenereUnited KingdomIoni Bowcher RENEWAL
James F BowleyRussiaAsiya Javayant NEGOTIATION
Murillo J PoquetteBrazilAsiya Javayant RENEWAL
Arvin T AmigonItalyAmy Elsner QUALIFIED
Cody E AlbaresItalyOnyama Limba UNQUALIFIED
Aditya F MarrierBrazilAmy Elsner UNQUALIFIED
Adams H ChuiAustraliaIvan Magalhaes RENEWAL
Jennifer B BriddickUnited KingdomAmy Elsner NEW
Alejandro N DoeArgentinaOnyama Limba PROPOSAL
Stacey Y MorascaCanadaXuxue Feng QUALIFIED
Leja C BologniaIndiaAnna Fali NEW
Maisha Q FerenczSpainAnna Fali QUALIFIED
Johnson X GlickArgentinaOnyama Limba PROPOSAL
Rodrigues J CaldareraSpainIoni Bowcher NEGOTIATION
Morrow E FigeroaRussiaStephen Shaw NEW

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