Locale

Change the locale of the datepicker, schedule and client side validation messages.

Language
English
English
English
French
German
German
German
Italian
Korean
Spanish
Catalan
Dutch
Portuguese
Portuguese
Arabic
Arabic
Bulgarian
Czech
Greek
Persian
Finnish
Danish
Hindi
Indonesian
Croatian
Japanese
Hungarian
Hebrew
Georgian
Central Kurdish
Khmer
Kyrgyz
Kazakh
Lithuanian
Latvian
Malay
Norwegian
Polish
Romanian
Russian
Slovak
Slovenian
Serbian
Serbian
Swedish
Thai
Turkish
Ukrainian
Vietnamese
Chinese
Chinese

Input Style

Themes

PrimeOne
Saga Saga
Vela Vela
Arya Arya
Bootstrap
bootstrap4-blue-light Bootstrap Blue
bootstrap4-purple-light Bootstrap Purple
bootstrap4-blue-dark Bootstrap Blue
bootstrap4-purple-dark Bootstrap Purple
Material Design
material-indigo-light Indigo
material-deeppurple-light' Deep Purple
material-indigo-dark Indigo
material-deeppurple-dark' Deep Purple
Material Design Compact
material-indigo-light Indigo
material-deeppurple-light' Deep Purple
material-indigo-dark Indigo
material-deeppurple-dark' Deep Purple

DataTable Scroll

Both vertical and horizontal scrolling of the data is supported with optional frozen rows-columns and on-demand loading features.

Vertical
NameCountryRepresentativeStatus
Maisha U DoeGermanyAmy Elsner UNQUALIFIED
Ivar J MaletFranceAsiya Javayant PROPOSAL
Leon K VenereGermanyIvan Magalhaes NEW
Jeanfrancois Z VocelkaAustraliaIvan Magalhaes NEGOTIATION
Kaitlin H GauchoItalyOnyama Limba RENEWAL
Aruna I TollnerSpainXuxue Feng NEGOTIATION
Sinclair W VenereSpainAsiya Javayant RENEWAL
Julie N ChuiBrazilIvan Magalhaes PROPOSAL
Juan P WieserAustraliaAsiya Javayant UNQUALIFIED
Octavia C PoquetteGermanyAmy Elsner QUALIFIED
Arvin G MarrierItalyElwin Sharvill UNQUALIFIED
Mayumi A RulapaughFranceBernardo Dominic UNQUALIFIED
Stacey B VenereItalyBernardo Dominic PROPOSAL
Leja U TollnerJapanStephen Shaw UNQUALIFIED
Antonio V RutaCanadaAmy Elsner PROPOSAL
Aditya A KolmetzFranceAnna Fali RENEWAL
Greenwood S VocelkaUnited KingdomIoni Bowcher RENEWAL
David N VocelkaSpainIoni Bowcher QUALIFIED
Sinclair L BriddickArgentinaBernardo Dominic NEGOTIATION
Izzy K KuskoUnited KingdomAnna Fali RENEWAL
Chavez H WieserCanadaOnyama Limba PROPOSAL
Aruna T OstroskyCanadaElwin Sharvill QUALIFIED
Darci R RulapaughIndiaAmy Elsner UNQUALIFIED
Misaki Q KuskoJapanIvan Magalhaes PROPOSAL
Ivar R FerenczGermanyOnyama Limba UNQUALIFIED
Leja R PerinBrazilBernardo Dominic QUALIFIED
Clifford N AmigonItalyStephen Shaw RENEWAL
Ivar I IturbideRussiaAnna Fali PROPOSAL
Jeanfrancois V GlickBrazilAnna Fali RENEWAL
Juan A WieserSpainAmy Elsner PROPOSAL
Murillo L DoeGermanyOnyama Limba NEGOTIATION
Johnson F DarakjyItalyIoni Bowcher NEGOTIATION
Greenwood H ChuiRussiaAsiya Javayant PROPOSAL
Chavez F FigeroaIndiaElwin Sharvill PROPOSAL
Johnson J RoysterItalyOnyama Limba NEW
Morrow H MarrierUnited KingdomElwin Sharvill QUALIFIED
Johnson Y NickaUnited KingdomXuxue Feng RENEWAL
Claire Q ShinkoArgentinaAsiya Javayant QUALIFIED
Salvatore J GarufiJapanAsiya Javayant UNQUALIFIED
Ashley A BriddickUnited KingdomIoni Bowcher NEGOTIATION
Silvio U PerinUnited KingdomOnyama Limba UNQUALIFIED
Arvin F ButtJapanBernardo Dominic QUALIFIED
Juan L WieserAustraliaAnna Fali QUALIFIED
Claire L WhobreyItalyBernardo Dominic QUALIFIED
Jefferson L SlusarskiItalyAnna Fali QUALIFIED
Darci R FerenczAustraliaElwin Sharvill NEGOTIATION
Jennifer O OstroskyItalyAmy Elsner RENEWAL
Kaitlin Y VocelkaItalyAnna Fali RENEWAL
Misaki M FlosiBrazilOnyama Limba RENEWAL
Jennifer W MarrierUnited KingdomAnna Fali RENEWAL
Horizontal
NameCountryRepresentativeStatus
Silvio V CaudyFranceIoni Bowcher RENEWAL
Leon K VocelkaArgentinaOnyama Limba UNQUALIFIED
Jones X KuskoBrazilElwin Sharvill UNQUALIFIED
Ashley W RutaRussiaElwin Sharvill QUALIFIED
Ricardo C NestleUnited KingdomBernardo Dominic NEW
Tony V OstroskyRussiaAsiya Javayant PROPOSAL
Darci T OldroydItalyBernardo Dominic RENEWAL
Tony Y VenereRussiaOnyama Limba PROPOSAL
Faith Q OstroskySpainAmy Elsner PROPOSAL
Aditya S MacleadArgentinaAmy Elsner RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jennifer Q PaprockiSpain2026-08-20Printing Dimensions NEGOTIATION18Xuxue Feng
1001Ashley B GauchoIndia2026-08-03Truhlar And Truhlar Attys QUALIFIED69Xuxue Feng
1002Stacey V WhobreyUnited Kingdom2026-08-09Morlong Associates NEW61Bernardo Dominic
1003Aruna G FigeroaArgentina2026-08-17Morlong Associates UNQUALIFIED40Elwin Sharvill
1004Francesco C RimFrance2026-08-26Chapman, Ross E Esq UNQUALIFIED33Onyama Limba
1005Jeanfrancois D GlickRussia2026-08-29Feltz Printing Service NEGOTIATION98Elwin Sharvill
1006Aruna E WhobreyAustralia2026-08-15Chanay, Jeffrey A Esq NEGOTIATION4Onyama Limba
1007Johnson L MacleadAustralia2026-08-20Chemel, James L Cpa RENEWAL40Xuxue Feng
1008Stacey A AmigonItaly2026-08-03Commercial Press RENEWAL90Stephen Shaw
1009Antonio L WaycottJapan2026-08-03Commercial Press UNQUALIFIED52Elwin Sharvill
1010Ashley E NickaItaly2026-08-23Feltz Printing Service NEW99Onyama Limba
1011Octavia U PaprockiUnited Kingdom2026-08-11Benton, John B Jr QUALIFIED89Asiya Javayant
1012Aika M MacleadBrazil2026-08-20Morlong Associates UNQUALIFIED81Anna Fali
1013Rodrigues H DarakjyGermany2026-08-24Morlong Associates NEGOTIATION34Bernardo Dominic
1014Kaitlin X ChuiSpain2026-08-12Rousseaux, Michael Esq PROPOSAL4Bernardo Dominic
1015Julie C FerenczJapan2026-08-31Rousseaux, Michael Esq NEGOTIATION39Amy Elsner
1016Kaitlin F TollnerUnited Kingdom2026-08-04Commercial Press UNQUALIFIED26Ivan Magalhaes
1017Johnson Y RimUnited Kingdom2026-08-15King, Christopher A Esq UNQUALIFIED98Ivan Magalhaes
1018Aika Y NickaBrazil2026-08-19Rousseaux, Michael Esq UNQUALIFIED1Xuxue Feng
1019Mayumi D GlickJapan2026-09-01Benton, John B Jr PROPOSAL76Anna Fali
1020Deepesh S StensethIndia2026-08-25Dorl, James J Esq UNQUALIFIED21Ivan Magalhaes
1021Clifford P MacleadCanada2026-08-28Chemel, James L Cpa NEW19Elwin Sharvill
1022Misaki O OstroskyUnited Kingdom2026-08-19King, Christopher A Esq NEGOTIATION41Ioni Bowcher
1023Murillo Z KolmetzItaly2026-08-27Benton, John B Jr QUALIFIED73Onyama Limba
1024Greenwood Z SchemmerSpain2026-08-21Chanay, Jeffrey A Esq NEGOTIATION65Ivan Magalhaes
1025Wickens B FerenczAustralia2026-08-23Morlong Associates RENEWAL20Stephen Shaw
1026Francesco B CampainUnited Kingdom2026-09-01Morlong Associates UNQUALIFIED75Ioni Bowcher
1027Jones C FollerAustralia2026-08-23Buckley Miller Wright NEGOTIATION33Ioni Bowcher
1028Aditya F PerinIndia2026-08-31Truhlar And Truhlar Attys PROPOSAL65Bernardo Dominic
1029Munro N VocelkaFrance2026-08-11Rangoni Of Florence NEW40Ioni Bowcher
1030Isabel R SergiSpain2026-08-22Dorl, James J Esq RENEWAL68Onyama Limba
1031Aika M CaudyItaly2026-08-17Rousseaux, Michael Esq NEGOTIATION0Amy Elsner
1032Jeanfrancois U DilliardBrazil2026-08-30Feiner Bros PROPOSAL11Anna Fali
1033Aika K WaycottItaly2026-08-10Chanay, Jeffrey A Esq NEGOTIATION83Elwin Sharvill
1034Munro V WaycottJapan2026-08-15Morlong Associates UNQUALIFIED34Ioni Bowcher
1035Misaki S RoysterRussia2026-08-03Feiner Bros NEGOTIATION5Ioni Bowcher
1036Aditya A IturbideCanada2026-08-10Chapman, Ross E Esq NEGOTIATION99Anna Fali
1037Jeanfrancois P SergiUnited Kingdom2026-08-31Chanay, Jeffrey A Esq RENEWAL67Ivan Magalhaes
1038Stacey Z MorascaAustralia2026-08-28Chemel, James L Cpa NEGOTIATION58Elwin Sharvill
1039Ivar Z NestleCanada2026-08-27Morlong Associates RENEWAL61Asiya Javayant
1040Deepesh W FerenczBrazil2026-08-18Benton, John B Jr NEGOTIATION45Asiya Javayant
1041Ivar B GillianItaly2026-08-20Truhlar And Truhlar Attys NEW15Anna Fali
1042Izzy E WhobreyJapan2026-08-10Feiner Bros NEGOTIATION55Anna Fali
1043Murillo G IturbideBrazil2026-08-31Benton, John B Jr RENEWAL13Amy Elsner
1044Mujtaba C ShinkoArgentina2026-08-29Truhlar And Truhlar Attys QUALIFIED58Anna Fali
1045Munro D FigeroaUnited Kingdom2026-08-10Rousseaux, Michael Esq QUALIFIED18Ivan Magalhaes
1046Mujtaba G RutaUnited Kingdom2026-08-25King, Christopher A Esq QUALIFIED51Xuxue Feng
1047Julie R RulapaughAustralia2026-08-09Chanay, Jeffrey A Esq NEGOTIATION93Xuxue Feng
1048James Q OldroydSpain2026-08-15Commercial Press UNQUALIFIED16Elwin Sharvill
1049Francesco D NestleGermany2026-09-01Rangoni Of Florence UNQUALIFIED52Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Jefferson W SergiArgentinaOnyama Limba QUALIFIED
Octavia Q InouyeArgentinaIvan Magalhaes UNQUALIFIED
Ivar I SlusarskiFranceStephen Shaw QUALIFIED
Faith W BriddickUnited KingdomXuxue Feng RENEWAL
Alejandro C IturbideUnited KingdomAmy Elsner QUALIFIED
Antonio K PerinBrazilElwin Sharvill QUALIFIED
Misaki B IturbideAustraliaStephen Shaw QUALIFIED
Maisha E StensethBrazilStephen Shaw RENEWAL
Munro A AmigonCanadaXuxue Feng PROPOSAL
Leon R FigeroaSpainOnyama Limba RENEWAL
Wickens Z KuskoIndiaIoni Bowcher UNQUALIFIED
Salvatore X CaudySpainBernardo Dominic NEGOTIATION
Salvatore X PerinFranceOnyama Limba RENEWAL
Smith P FigeroaItalyElwin Sharvill QUALIFIED
Nicolas E CaldareraGermanyIoni Bowcher NEGOTIATION
Greenwood I WaycottCanadaOnyama Limba RENEWAL
Leja V FigeroaCanadaAnna Fali QUALIFIED
Misaki U ChuiFranceIvan Magalhaes QUALIFIED
Darci A RimCanadaStephen Shaw QUALIFIED
Deepesh S FerenczIndiaIoni Bowcher NEGOTIATION
Maria Z ShinkoCanadaAmy Elsner NEW
Tony P SergiJapanStephen Shaw PROPOSAL
Murillo P WieserSpainStephen Shaw RENEWAL
Izzy L KuskoSpainOnyama Limba NEGOTIATION
Juan M PaprockiBrazilIoni Bowcher QUALIFIED
Emily G FlosiRussiaAnna Fali NEGOTIATION
Morrow C VocelkaIndiaIvan Magalhaes NEGOTIATION
Claire M GlickIndiaAnna Fali UNQUALIFIED
Johnson M WieserArgentinaAmy Elsner QUALIFIED
Adams U SchemmerFranceElwin Sharvill NEW
Alejandro O SlusarskiItalyAsiya Javayant RENEWAL
Mujtaba L GarufiIndiaAnna Fali UNQUALIFIED
James C FlosiUnited KingdomIvan Magalhaes PROPOSAL
Francesco Y FerenczRussiaIvan Magalhaes NEW
Aditya J IturbideCanadaXuxue Feng NEGOTIATION
Wickens Q WaycottBrazilAnna Fali PROPOSAL
Maria C WaycottUnited KingdomAnna Fali RENEWAL
Maria C WhobreyJapanXuxue Feng QUALIFIED
Francesco D BowleyCanadaAnna Fali NEW
Morrow O RutaAustraliaIvan Magalhaes UNQUALIFIED
David U TollnerJapanAsiya Javayant PROPOSAL
Sinclair A FigeroaCanadaStephen Shaw QUALIFIED
Antonio E RimItalyOnyama Limba NEW
Aditya J PoquetteCanadaOnyama Limba NEGOTIATION
Francesco U FollerCanadaStephen Shaw NEGOTIATION
Antonio C SlusarskiFranceElwin Sharvill RENEWAL
Leja X RulapaughIndiaXuxue Feng RENEWAL
Tony I WaycottJapanXuxue Feng NEW
Greenwood W MorascaArgentinaAnna Fali NEW
Francesco G GlickItalyIvan Magalhaes PROPOSAL
Frozen Columns
Name
Misaki C Gaucho
Silvio C Saylors
Aditya L Marrier
Greenwood G Stenseth
Morrow Y Iturbide
Costa B Whobrey
Juan G Caudy
Clifford C Iturbide
Kadeem W Oldroyd
Nicolas J Kolmetz
David T Figeroa
Maisha O Albares
Jefferson X Flosi
Misaki I Vocelka
Julie L Royster
Maisha K Figeroa
Jefferson H Rulapaugh
Ivar M Nicka
Chavez T Foller
Aruna K Caudy
Isabel P Shinko
Smith G Saylors
Arvin X Poquette
Cody O Chui
Wickens J Garufi
Mujtaba H Caldarera
Aika N Vocelka
Emily R Chui
Julie N Kusko
Faith E Nestle
Jefferson Y Tollner
Aika E Figeroa
Mayumi R Campain
Stacey I Malet
Clifford H Butt
Sinclair Q Malet
Munro Y Tollner
Julie D Garufi
Morrow S Caudy
Smith W Malet
Antonio Z Darakjy
Ashley C Tollner
Morrow Q Albares
Nicolas G Dilliard
Claire K Stenseth
Julie B Wieser
Rodrigues O Caldarera
Aruna E Kolmetz
Francesco U Marrier
Leja T Flosi
IdCountryDate
1000Australia2026-08-18
1001Germany2026-08-20
1002Russia2026-08-08
1003Italy2026-08-17
1004France2026-08-15
1005Germany2026-08-18
1006France2026-08-19
1007Brazil2026-08-05
1008France2026-08-21
1009Brazil2026-08-30
1010Japan2026-08-09
1011Germany2026-08-05
1012Italy2026-08-06
1013India2026-08-15
1014Germany2026-08-18
1015Australia2026-08-25
1016Italy2026-08-25
1017Japan2026-08-28
1018United Kingdom2026-08-28
1019France2026-08-23
1020France2026-08-24
1021Brazil2026-08-30
1022India2026-08-12
1023Argentina2026-08-25
1024Russia2026-08-13
1025India2026-08-05
1026Argentina2026-08-14
1027France2026-08-05
1028Germany2026-08-20
1029France2026-08-05
1030United Kingdom2026-08-08
1031Brazil2026-08-26
1032Brazil2026-08-27
1033United Kingdom2026-08-05
1034Italy2026-08-16
1035Germany2026-08-28
1036Italy2026-08-27
1037Brazil2026-08-08
1038United Kingdom2026-08-07
1039Australia2026-08-27
1040France2026-08-17
1041Italy2026-08-20
1042Russia2026-08-30
1043Canada2026-08-16
1044India2026-08-03
1045France2026-08-18
1046Russia2026-08-25
1047United Kingdom2026-08-29
1048Japan2026-08-03
1049Canada2026-08-15

On-Demand Data

NameIdCountryDate
Kadeem S Nestle1000United Kingdom2026-08-11
Costa F Shinko1001Russia2026-08-13
Adams I Dilliard1002United Kingdom2026-08-26
Tony C Butt1003Canada2026-08-30
David H Glick1004Argentina2026-08-28
Munro E Kolmetz1005United Kingdom2026-08-14
Rodrigues B Royster1006Canada2026-08-15
Kadeem B Bowley1007Brazil2026-08-26
Sinclair V Doe1008Japan2026-08-11
Aika F Iturbide1009United Kingdom2026-08-15
Silvio F Wieser1010Spain2026-08-08
Jeanfrancois H Amigon1011Japan2026-08-03
Jefferson Y Amigon1012Spain2026-08-04
Aika P Kusko1013Russia2026-08-25
Jeanfrancois I Gaucho1014Japan2026-08-24
Salvatore N Briddick1015United Kingdom2026-08-16
Murillo Y Campain1016Italy2026-08-17
Murillo A Chui1017Spain2026-08-19
Aruna F Garufi1018Japan2026-08-03
Jeanfrancois J Darakjy1019India2026-08-31
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jeanfrancois H MorascaItalyOnyama Limba PROPOSAL
Isabel Y SlusarskiBrazilBernardo Dominic NEGOTIATION
Francesco X OstroskyCanadaIoni Bowcher UNQUALIFIED
Deepesh K NickaUnited KingdomIoni Bowcher UNQUALIFIED
Nicolas D FlosiArgentinaElwin Sharvill RENEWAL
Jennifer U StensethArgentinaIvan Magalhaes UNQUALIFIED
Jones O GarufiArgentinaAnna Fali QUALIFIED
Darci M VocelkaIndiaStephen Shaw PROPOSAL
Sinclair H RutaUnited KingdomAmy Elsner NEW
Greenwood H ButtJapanBernardo Dominic NEW
Clifford H OstroskyArgentinaAmy Elsner RENEWAL
Jennifer Z NickaCanadaIvan Magalhaes UNQUALIFIED
Jennifer F RulapaughCanadaAsiya Javayant PROPOSAL
Maisha O DoeCanadaOnyama Limba NEGOTIATION
Murillo Q DilliardCanadaIoni Bowcher NEW
Ivar G WieserIndiaXuxue Feng UNQUALIFIED
Maisha S RimSpainAnna Fali PROPOSAL
Jennifer F RoysterGermanyStephen Shaw RENEWAL
Adams V OstroskyAustraliaOnyama Limba NEGOTIATION
Jefferson U ShinkoGermanyAsiya Javayant PROPOSAL
Greenwood B WaycottAustraliaAnna Fali PROPOSAL
Stacey B FlosiUnited KingdomStephen Shaw QUALIFIED
Nicolas E WieserIndiaAnna Fali PROPOSAL
Kaitlin I ButtIndiaElwin Sharvill RENEWAL
Aruna Y NickaIndiaIvan Magalhaes NEGOTIATION
Jeanfrancois E RoysterSpainIoni Bowcher QUALIFIED
Ashley U MaletIndiaIoni Bowcher PROPOSAL
Morrow B SlusarskiBrazilAnna Fali QUALIFIED
Francesco H RimGermanyAnna Fali UNQUALIFIED
Adams K GillianIndiaXuxue Feng NEGOTIATION
Faith G MacleadAustraliaElwin Sharvill UNQUALIFIED
Leon P VocelkaAustraliaAmy Elsner RENEWAL
Mujtaba N SchemmerGermanyAnna Fali NEGOTIATION
Leja E DoeBrazilAnna Fali UNQUALIFIED
Francesco N BowleySpainAmy Elsner RENEWAL
Misaki E MaletAustraliaXuxue Feng NEGOTIATION
Jeanfrancois I PerinIndiaBernardo Dominic NEW
Misaki E MarrierArgentinaXuxue Feng NEGOTIATION
Aika H InouyeJapanElwin Sharvill RENEWAL
Silvio K BriddickItalyOnyama Limba QUALIFIED

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