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
Mayumi L BriddickItalyIoni Bowcher QUALIFIED
Mujtaba M MorascaUnited KingdomOnyama Limba NEW
Salvatore E PaprockiSpainXuxue Feng QUALIFIED
Isabel T IturbideArgentinaBernardo Dominic PROPOSAL
Murillo P GlickRussiaIoni Bowcher PROPOSAL
Stacey P SergiCanadaElwin Sharvill NEW
Sinclair U WhobreyUnited KingdomOnyama Limba PROPOSAL
Chavez E CaldareraGermanyAnna Fali PROPOSAL
Izzy U CampainGermanyElwin Sharvill NEW
Sinclair J NickaItalyAsiya Javayant PROPOSAL
Maria C MaletBrazilBernardo Dominic PROPOSAL
Johnson Y ButtJapanAsiya Javayant NEW
Emily J NestleRussiaOnyama Limba NEW
Chavez Y ShinkoRussiaAnna Fali NEW
Greenwood V WieserFranceStephen Shaw NEGOTIATION
Aruna H BowleyAustraliaStephen Shaw UNQUALIFIED
Isabel J IturbideRussiaOnyama Limba RENEWAL
Tony U KuskoCanadaAmy Elsner RENEWAL
Mujtaba F DoeItalyOnyama Limba UNQUALIFIED
Murillo S VenereIndiaOnyama Limba NEW
Aruna A MacleadArgentinaIvan Magalhaes NEGOTIATION
Aditya Y KuskoAustraliaAsiya Javayant QUALIFIED
Tony Z MaletAustraliaAmy Elsner QUALIFIED
Jones X PoquetteIndiaElwin Sharvill NEW
Faith R NickaArgentinaXuxue Feng NEW
Jeanfrancois N CaldareraSpainBernardo Dominic PROPOSAL
Wickens R FlosiItalyBernardo Dominic UNQUALIFIED
Kadeem V FerenczUnited KingdomAmy Elsner NEW
Julie O MaletRussiaBernardo Dominic QUALIFIED
James X RulapaughUnited KingdomStephen Shaw NEGOTIATION
Kadeem X SlusarskiGermanyBernardo Dominic NEW
Aika S RoysterArgentinaIvan Magalhaes NEW
Leja D BologniaRussiaIvan Magalhaes RENEWAL
Claire Q GarufiCanadaAsiya Javayant UNQUALIFIED
Smith K GarufiSpainAsiya Javayant RENEWAL
Claire Q NickaGermanyStephen Shaw NEGOTIATION
Jefferson C PerinUnited KingdomAnna Fali UNQUALIFIED
Ricardo D RulapaughFranceAmy Elsner RENEWAL
Maisha X GauchoJapanBernardo Dominic QUALIFIED
Mayumi X WhobreyBrazilAmy Elsner QUALIFIED
Jeanfrancois K DilliardGermanyIvan Magalhaes UNQUALIFIED
Aditya K GlickAustraliaBernardo Dominic RENEWAL
Aruna F DilliardRussiaAmy Elsner NEGOTIATION
Cody V FlosiUnited KingdomIvan Magalhaes NEW
James F WieserFranceAsiya Javayant PROPOSAL
Maria G PerinItalyIvan Magalhaes RENEWAL
Juan B DoeFranceBernardo Dominic NEGOTIATION
Morrow T GlickAustraliaAsiya Javayant QUALIFIED
Kaitlin X VenereJapanIoni Bowcher RENEWAL
Maisha Z ChuiIndiaIvan Magalhaes RENEWAL
Horizontal
NameCountryRepresentativeStatus
Greenwood M VocelkaItalyBernardo Dominic UNQUALIFIED
James V ButtJapanAnna Fali NEGOTIATION
Ashley J VenereArgentinaIvan Magalhaes NEGOTIATION
Silvio F DoeItalyAnna Fali PROPOSAL
Salvatore N PaprockiJapanXuxue Feng PROPOSAL
Alejandro E FigeroaRussiaIvan Magalhaes RENEWAL
Alejandro B SlusarskiUnited KingdomBernardo Dominic RENEWAL
Izzy D FigeroaGermanyAsiya Javayant UNQUALIFIED
Emily R CaudyBrazilOnyama Limba RENEWAL
Mayumi T NestleItalyAmy Elsner NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Salvatore C GarufiItaly2026-06-21Chemel, James L Cpa PROPOSAL86Anna Fali
1001Rodrigues T FollerBrazil2026-07-06Chapman, Ross E Esq UNQUALIFIED97Ioni Bowcher
1002Deepesh V MacleadRussia2026-06-21Benton, John B Jr NEGOTIATION53Elwin Sharvill
1003Munro V GlickGermany2026-06-17King, Christopher A Esq NEW94Ivan Magalhaes
1004Jennifer D VocelkaItaly2026-07-06Chapman, Ross E Esq NEW56Ivan Magalhaes
1005Jeanfrancois J DoeFrance2026-07-05Printing Dimensions RENEWAL99Asiya Javayant
1006Julie M StensethArgentina2026-06-13Feltz Printing Service NEGOTIATION99Bernardo Dominic
1007Morrow T GarufiCanada2026-07-10Feiner Bros NEW86Amy Elsner
1008Izzy T NickaArgentina2026-06-24Rousseaux, Michael Esq PROPOSAL85Bernardo Dominic
1009Salvatore M FollerUnited Kingdom2026-06-15King, Christopher A Esq UNQUALIFIED87Asiya Javayant
1010Alejandro K WieserItaly2026-07-03Chemel, James L Cpa UNQUALIFIED34Ioni Bowcher
1011Aditya Z KolmetzCanada2026-06-17Buckley Miller Wright NEGOTIATION4Bernardo Dominic
1012Jefferson Z WhobreyItaly2026-07-05King, Christopher A Esq NEGOTIATION74Ivan Magalhaes
1013Alejandro R RulapaughSpain2026-06-14Rangoni Of Florence RENEWAL50Ioni Bowcher
1014Isabel W StensethGermany2026-07-10Feltz Printing Service NEW63Bernardo Dominic
1015Leon B IturbideFrance2026-07-08Benton, John B Jr NEGOTIATION48Onyama Limba
1016Isabel S SaylorsSpain2026-07-07Rousseaux, Michael Esq RENEWAL84Ivan Magalhaes
1017Maria Z DilliardJapan2026-07-06Rousseaux, Michael Esq NEGOTIATION14Bernardo Dominic
1018Leon H CampainItaly2026-06-15Feltz Printing Service QUALIFIED31Elwin Sharvill
1019Cody I WhobreySpain2026-06-24Rousseaux, Michael Esq PROPOSAL15Ivan Magalhaes
1020Clifford K TollnerItaly2026-06-11Rousseaux, Michael Esq QUALIFIED44Elwin Sharvill
1021Juan K MarrierSpain2026-06-16Truhlar And Truhlar Attys QUALIFIED7Amy Elsner
1022Morrow S DarakjyAustralia2026-07-04Dorl, James J Esq NEW82Asiya Javayant
1023Julie J BriddickJapan2026-06-13Feltz Printing Service QUALIFIED85Asiya Javayant
1024James Z BologniaArgentina2026-06-26Dorl, James J Esq QUALIFIED25Ivan Magalhaes
1025Adams O WhobreyBrazil2026-06-18Feltz Printing Service UNQUALIFIED31Onyama Limba
1026Ivar E SergiUnited Kingdom2026-07-01Morlong Associates QUALIFIED69Anna Fali
1027Faith K CaldareraFrance2026-06-24Feltz Printing Service RENEWAL87Ivan Magalhaes
1028Francesco O MaletGermany2026-06-22Feiner Bros NEW48Asiya Javayant
1029Maria Y SchemmerJapan2026-06-24Dorl, James J Esq QUALIFIED7Onyama Limba
1030Murillo Q AlbaresJapan2026-06-14Feiner Bros UNQUALIFIED21Bernardo Dominic
1031Kadeem W MacleadCanada2026-06-30Benton, John B Jr UNQUALIFIED28Asiya Javayant
1032Salvatore G CampainAustralia2026-06-26Rousseaux, Michael Esq UNQUALIFIED11Ivan Magalhaes
1033Emily D GlickGermany2026-06-24Feltz Printing Service NEGOTIATION72Asiya Javayant
1034Isabel N RimItaly2026-07-10Chemel, James L Cpa RENEWAL63Ivan Magalhaes
1035Greenwood C MarrierIndia2026-07-05Truhlar And Truhlar Attys QUALIFIED22Onyama Limba
1036Jennifer Q VocelkaBrazil2026-06-30Morlong Associates NEW87Ivan Magalhaes
1037Jefferson D BowleyBrazil2026-07-10Dorl, James J Esq PROPOSAL72Bernardo Dominic
1038Jefferson W MaletUnited Kingdom2026-06-14Chemel, James L Cpa QUALIFIED18Bernardo Dominic
1039Ricardo H CaldareraBrazil2026-06-19King, Christopher A Esq UNQUALIFIED69Elwin Sharvill
1040Ashley H WaycottIndia2026-06-26Feltz Printing Service RENEWAL9Anna Fali
1041Cody O DilliardUnited Kingdom2026-06-26Truhlar And Truhlar Attys UNQUALIFIED92Onyama Limba
1042Jefferson U NickaUnited Kingdom2026-06-20Rousseaux, Michael Esq RENEWAL75Amy Elsner
1043Silvio F ShinkoArgentina2026-06-13Printing Dimensions QUALIFIED84Xuxue Feng
1044Smith N NickaCanada2026-06-14Truhlar And Truhlar Attys UNQUALIFIED40Ivan Magalhaes
1045Darci T MarrierFrance2026-06-24Buckley Miller Wright NEGOTIATION54Stephen Shaw
1046Tony S OldroydJapan2026-07-10Printing Dimensions UNQUALIFIED82Ivan Magalhaes
1047Murillo F RulapaughSpain2026-07-09Truhlar And Truhlar Attys UNQUALIFIED22Ivan Magalhaes
1048Arvin A IturbideArgentina2026-06-21Dorl, James J Esq RENEWAL18Amy Elsner
1049Aika H TollnerUnited Kingdom2026-07-01Printing Dimensions PROPOSAL94Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Murillo Z SaylorsSpainElwin Sharvill PROPOSAL
Jeanfrancois G KolmetzGermanyIvan Magalhaes PROPOSAL
Rodrigues W AmigonItalyStephen Shaw NEW
Jennifer H PaprockiRussiaAsiya Javayant RENEWAL
Munro L WieserRussiaOnyama Limba UNQUALIFIED
Kaitlin M SlusarskiJapanAmy Elsner UNQUALIFIED
Misaki F TollnerCanadaAnna Fali QUALIFIED
Sinclair T TollnerGermanyOnyama Limba QUALIFIED
Deepesh G OldroydArgentinaIoni Bowcher UNQUALIFIED
Jeanfrancois X PerinArgentinaAmy Elsner PROPOSAL
Ricardo Y AmigonFranceAsiya Javayant PROPOSAL
James R PoquetteAustraliaAmy Elsner RENEWAL
Kadeem F DarakjyRussiaBernardo Dominic QUALIFIED
Rodrigues H GlickArgentinaAsiya Javayant UNQUALIFIED
Adams A BriddickJapanAmy Elsner NEW
Morrow I FollerRussiaOnyama Limba NEGOTIATION
Faith M VocelkaUnited KingdomBernardo Dominic PROPOSAL
Aruna J FerenczFranceAnna Fali QUALIFIED
Stacey Q BowleyBrazilXuxue Feng QUALIFIED
Sinclair W KolmetzBrazilXuxue Feng NEGOTIATION
Deepesh W AlbaresCanadaAsiya Javayant PROPOSAL
Greenwood O BowleyAustraliaIoni Bowcher NEW
Jones L AlbaresArgentinaBernardo Dominic UNQUALIFIED
Johnson W InouyeUnited KingdomIoni Bowcher RENEWAL
Jones J PerinJapanAnna Fali RENEWAL
Octavia Y RulapaughFranceElwin Sharvill NEW
Julie K SaylorsArgentinaOnyama Limba RENEWAL
Kadeem W StockhamRussiaOnyama Limba RENEWAL
Julie D TollnerUnited KingdomAmy Elsner NEW
Maria N OldroydUnited KingdomAsiya Javayant NEGOTIATION
Adams H BriddickIndiaElwin Sharvill RENEWAL
Clifford E OldroydBrazilXuxue Feng NEGOTIATION
Juan W InouyeBrazilAnna Fali RENEWAL
Costa E DarakjyFranceAsiya Javayant NEGOTIATION
Leon H AlbaresAustraliaElwin Sharvill UNQUALIFIED
Isabel A WieserIndiaIvan Magalhaes UNQUALIFIED
Arvin D MacleadCanadaAmy Elsner PROPOSAL
Arvin Z CampainRussiaAsiya Javayant QUALIFIED
Misaki M BologniaItalyXuxue Feng NEGOTIATION
Stacey Q CaudyRussiaOnyama Limba PROPOSAL
Sinclair R MacleadSpainStephen Shaw RENEWAL
Emily O MaletIndiaIvan Magalhaes PROPOSAL
Leon A WaycottIndiaAsiya Javayant QUALIFIED
Claire Y FerenczArgentinaIvan Magalhaes PROPOSAL
Jennifer I MaletBrazilAnna Fali QUALIFIED
Morrow E RulapaughAustraliaXuxue Feng PROPOSAL
Aika L OstroskyGermanyAmy Elsner QUALIFIED
Tony D KolmetzIndiaXuxue Feng QUALIFIED
Greenwood F VocelkaSpainBernardo Dominic PROPOSAL
David Z CaldareraGermanyXuxue Feng QUALIFIED
Frozen Columns
Name
Ricardo C Foller
Isabel X Waycott
Aruna E Morasca
Aika Q Royster
Arvin D Foller
Murillo Z Dilliard
Juan Y Saylors
Maria Z Shinko
Ashley N Stockham
Chavez Z Wieser
Morrow A Chui
Jeanfrancois D Oldroyd
Silvio O Malet
Ivar I Glick
James S Perin
Leja U Campain
Octavia V Inouye
Wickens W Darakjy
Aditya S Stockham
Tony D Darakjy
Silvio C Morasca
Arvin W Briddick
Faith A Nestle
Izzy O Iturbide
Jennifer W Ostrosky
Jones A Amigon
Greenwood Y Darakjy
Smith Y Kolmetz
Salvatore Z Royster
Kaitlin W Shinko
Alejandro Q Tollner
Clifford M Kolmetz
Sinclair A Chui
Mujtaba W Schemmer
Munro O Dilliard
Maisha G Darakjy
Costa J Whobrey
Morrow Y Stockham
Jones Q Poquette
Wickens X Gillian
Clifford S Briddick
Izzy X Iturbide
Darci C Garufi
Costa O Gillian
Aruna T Ostrosky
Deepesh U Gaucho
Jefferson B Paprocki
Rodrigues Z Ostrosky
Kadeem Y Schemmer
Johnson L Rulapaugh
IdCountryDate
1000Argentina2026-06-24
1001Spain2026-06-26
1002United Kingdom2026-06-28
1003Italy2026-07-02
1004France2026-06-29
1005Germany2026-06-20
1006United Kingdom2026-06-14
1007Italy2026-06-25
1008France2026-06-24
1009Australia2026-06-18
1010Australia2026-06-28
1011Japan2026-06-19
1012Australia2026-06-12
1013Italy2026-06-15
1014Japan2026-07-02
1015India2026-07-10
1016Italy2026-06-14
1017India2026-06-13
1018Russia2026-07-03
1019United Kingdom2026-07-07
1020Japan2026-06-19
1021India2026-07-07
1022Argentina2026-06-16
1023Japan2026-07-09
1024Japan2026-06-14
1025Japan2026-07-06
1026Brazil2026-06-18
1027Russia2026-07-04
1028India2026-06-26
1029Italy2026-06-16
1030Argentina2026-07-02
1031Germany2026-07-09
1032Spain2026-07-05
1033Brazil2026-07-09
1034Germany2026-06-20
1035India2026-07-09
1036United Kingdom2026-06-26
1037Russia2026-07-09
1038Japan2026-06-13
1039Russia2026-07-09
1040Russia2026-06-19
1041Canada2026-07-06
1042Argentina2026-07-10
1043India2026-06-19
1044Canada2026-06-11
1045Germany2026-06-25
1046Japan2026-06-22
1047Canada2026-07-02
1048Spain2026-07-07
1049India2026-07-02

On-Demand Data

NameIdCountryDate
Izzy A Iturbide1000India2026-06-18
Deepesh Y Schemmer1001France2026-06-13
Costa A Bolognia1002Canada2026-06-20
Maria D Poquette1003United Kingdom2026-07-08
Deepesh P Schemmer1004Brazil2026-07-08
Aditya S Schemmer1005Argentina2026-06-24
Kadeem V Marrier1006Japan2026-07-02
Misaki L Darakjy1007Russia2026-07-01
Johnson R Ferencz1008Germany2026-06-30
Misaki K Schemmer1009Argentina2026-06-27
Costa R Ostrosky1010Japan2026-06-13
Leon K Butt1011France2026-06-19
Misaki P Marrier1012Canada2026-06-29
Emily L Ruta1013Japan2026-06-14
Munro G Campain1014Spain2026-07-03
Aruna I Perin1015United Kingdom2026-06-14
Faith H Iturbide1016Spain2026-07-09
Smith Q Gaucho1017Germany2026-06-25
Alejandro X Shinko1018Argentina2026-07-07
Jones N Stockham1019Spain2026-06-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jefferson S SchemmerUnited KingdomXuxue Feng NEW
Arvin M OstroskyRussiaIoni Bowcher PROPOSAL
Johnson W SchemmerArgentinaIoni Bowcher PROPOSAL
Chavez D InouyeGermanyOnyama Limba RENEWAL
Aika Y WieserArgentinaXuxue Feng RENEWAL
James M BologniaIndiaAnna Fali UNQUALIFIED
Izzy P NickaCanadaXuxue Feng NEW
Johnson O ShinkoArgentinaXuxue Feng PROPOSAL
Aika X MorascaUnited KingdomXuxue Feng PROPOSAL
Smith X ChuiUnited KingdomAnna Fali QUALIFIED
Rodrigues E PoquetteAustraliaAnna Fali RENEWAL
Morrow I FollerIndiaBernardo Dominic NEGOTIATION
Mujtaba H NestleCanadaElwin Sharvill QUALIFIED
Izzy A RulapaughSpainXuxue Feng RENEWAL
Mayumi K DarakjyGermanyIvan Magalhaes NEGOTIATION
Nicolas T OldroydGermanyIoni Bowcher RENEWAL
Jefferson U SlusarskiArgentinaOnyama Limba NEGOTIATION
Alejandro L SchemmerItalyAsiya Javayant NEGOTIATION
Aruna L BowleyArgentinaAmy Elsner NEW
Johnson U PerinUnited KingdomIoni Bowcher RENEWAL
Leja I MaletJapanAsiya Javayant RENEWAL
Octavia K PoquetteBrazilXuxue Feng RENEWAL
Smith K GillianIndiaOnyama Limba PROPOSAL
Jennifer I OldroydUnited KingdomAsiya Javayant UNQUALIFIED
Wickens L KuskoFranceAsiya Javayant QUALIFIED
Ashley X FollerIndiaIoni Bowcher NEW
Cody I WhobreyGermanyXuxue Feng NEGOTIATION
Misaki N InouyeArgentinaAsiya Javayant RENEWAL
Misaki O DoeJapanAnna Fali UNQUALIFIED
Darci I InouyeBrazilIvan Magalhaes NEW
Arvin S CampainIndiaAmy Elsner RENEWAL
Chavez I DoeSpainIvan Magalhaes UNQUALIFIED
Jones H DarakjyFranceAnna Fali UNQUALIFIED
James Y GillianCanadaStephen Shaw PROPOSAL
Jeanfrancois I SchemmerGermanyBernardo Dominic PROPOSAL
Emily F MarrierItalyStephen Shaw PROPOSAL
Maisha R FerenczRussiaElwin Sharvill QUALIFIED
Aruna B RimAustraliaAnna Fali NEGOTIATION
Wickens Q MaletArgentinaBernardo Dominic NEW
Leon U PaprockiAustraliaBernardo Dominic 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>