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
Wickens Z PoquetteGermanyAnna Fali QUALIFIED
Julie B ButtCanadaBernardo Dominic RENEWAL
Silvio D RulapaughArgentinaIoni Bowcher NEGOTIATION
Stacey M MacleadFranceAsiya Javayant UNQUALIFIED
Greenwood E NestleAustraliaIvan Magalhaes UNQUALIFIED
Cody F SergiRussiaOnyama Limba NEW
Maria Y StockhamUnited KingdomOnyama Limba PROPOSAL
Tony U FollerCanadaAnna Fali NEGOTIATION
Nicolas P GlickGermanyAnna Fali NEGOTIATION
Clifford H WhobreyJapanAmy Elsner RENEWAL
Aika M VenereJapanOnyama Limba NEGOTIATION
Kadeem W DarakjyBrazilAsiya Javayant QUALIFIED
Leja O CampainAustraliaAmy Elsner UNQUALIFIED
Leon A OldroydAustraliaOnyama Limba NEGOTIATION
Morrow Q AmigonGermanyStephen Shaw NEW
Costa F SlusarskiArgentinaBernardo Dominic RENEWAL
Rodrigues H PoquetteUnited KingdomStephen Shaw PROPOSAL
Clifford H WaycottCanadaIvan Magalhaes RENEWAL
Adams L FollerUnited KingdomOnyama Limba RENEWAL
Aruna F GauchoSpainIvan Magalhaes RENEWAL
Morrow R SaylorsUnited KingdomXuxue Feng UNQUALIFIED
Francesco T VocelkaRussiaAnna Fali QUALIFIED
Johnson C RimGermanyStephen Shaw PROPOSAL
Costa N FlosiBrazilOnyama Limba NEGOTIATION
Costa J DilliardCanadaAnna Fali PROPOSAL
Aditya T TollnerArgentinaIvan Magalhaes UNQUALIFIED
Octavia B WieserIndiaElwin Sharvill NEGOTIATION
Mayumi O StensethUnited KingdomAmy Elsner NEGOTIATION
Kadeem H PerinFranceXuxue Feng NEW
Wickens Z MacleadSpainAnna Fali NEGOTIATION
Morrow W DoeBrazilXuxue Feng NEGOTIATION
Arvin F InouyeRussiaBernardo Dominic NEGOTIATION
Rodrigues S PoquetteItalyAmy Elsner PROPOSAL
James B OldroydJapanAmy Elsner NEGOTIATION
Faith C GauchoFranceAmy Elsner NEW
Misaki W SaylorsAustraliaIoni Bowcher UNQUALIFIED
Kadeem N DoeJapanAsiya Javayant QUALIFIED
Adams M StensethBrazilXuxue Feng PROPOSAL
Aika M ButtJapanStephen Shaw QUALIFIED
Stacey P PoquetteIndiaXuxue Feng NEW
Kaitlin H StensethIndiaAsiya Javayant NEGOTIATION
Leon A VenereCanadaIoni Bowcher UNQUALIFIED
Smith Z RoysterSpainAnna Fali PROPOSAL
Murillo V VocelkaAustraliaBernardo Dominic NEW
Sinclair V OldroydGermanyIvan Magalhaes NEW
Nicolas S RoysterArgentinaBernardo Dominic RENEWAL
Mujtaba C ChuiBrazilAnna Fali RENEWAL
Jennifer K WieserSpainAmy Elsner RENEWAL
Jeanfrancois D VocelkaAustraliaAsiya Javayant NEW
Kaitlin U VocelkaCanadaAnna Fali UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Wickens G StensethIndiaIvan Magalhaes RENEWAL
Jeanfrancois A WieserBrazilAnna Fali NEGOTIATION
Murillo P GarufiRussiaAmy Elsner PROPOSAL
Maisha D MarrierItalyStephen Shaw UNQUALIFIED
Jennifer I OstroskyBrazilAsiya Javayant QUALIFIED
Cody W ChuiItalyBernardo Dominic UNQUALIFIED
Kaitlin O BologniaSpainAsiya Javayant UNQUALIFIED
Adams P MaletBrazilStephen Shaw RENEWAL
Nicolas P FigeroaAustraliaBernardo Dominic UNQUALIFIED
Faith T SlusarskiUnited KingdomAmy Elsner QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Mayumi Y AmigonSpain2026-07-12Chanay, Jeffrey A Esq NEGOTIATION36Anna Fali
1001Stacey T SlusarskiAustralia2026-07-17Commercial Press NEGOTIATION58Amy Elsner
1002Adams I FigeroaBrazil2026-07-05Chemel, James L Cpa NEGOTIATION21Anna Fali
1003David J OldroydItaly2026-07-24King, Christopher A Esq NEGOTIATION74Elwin Sharvill
1004Francesco X SchemmerSpain2026-07-20Dorl, James J Esq QUALIFIED35Bernardo Dominic
1005Smith K GillianUnited Kingdom2026-07-10Truhlar And Truhlar Attys UNQUALIFIED36Amy Elsner
1006Cody W MaletArgentina2026-07-13Feltz Printing Service PROPOSAL64Amy Elsner
1007Octavia N SergiCanada2026-07-20King, Christopher A Esq UNQUALIFIED2Elwin Sharvill
1008Izzy O WhobreyGermany2026-07-23Chapman, Ross E Esq PROPOSAL89Amy Elsner
1009Smith R StensethJapan2026-07-08Chemel, James L Cpa QUALIFIED17Asiya Javayant
1010Nicolas M BriddickArgentina2026-07-10Printing Dimensions UNQUALIFIED93Ivan Magalhaes
1011Jennifer B FerenczIndia2026-07-16Dorl, James J Esq NEGOTIATION67Elwin Sharvill
1012Faith W KuskoAustralia2026-07-21King, Christopher A Esq UNQUALIFIED79Anna Fali
1013Jones U AmigonSpain2026-07-24Chapman, Ross E Esq UNQUALIFIED81Ivan Magalhaes
1014Cody N DilliardSpain2026-06-30Benton, John B Jr RENEWAL65Xuxue Feng
1015Emily V DilliardGermany2026-07-04Commercial Press NEGOTIATION44Amy Elsner
1016Deepesh F PoquetteArgentina2026-06-28Chemel, James L Cpa NEW91Elwin Sharvill
1017Murillo W CaudyBrazil2026-06-30Dorl, James J Esq NEGOTIATION51Bernardo Dominic
1018Octavia R ButtArgentina2026-07-04Truhlar And Truhlar Attys RENEWAL26Onyama Limba
1019Octavia D WaycottSpain2026-07-12Truhlar And Truhlar Attys PROPOSAL65Stephen Shaw
1020Aruna P AlbaresArgentina2026-07-02Buckley Miller Wright PROPOSAL40Stephen Shaw
1021Murillo L WieserUnited Kingdom2026-07-07King, Christopher A Esq QUALIFIED68Stephen Shaw
1022Izzy K WaycottArgentina2026-07-13Dorl, James J Esq QUALIFIED61Elwin Sharvill
1023Jennifer C GillianFrance2026-07-27Printing Dimensions NEGOTIATION33Onyama Limba
1024Alejandro Z AlbaresArgentina2026-07-16Rousseaux, Michael Esq NEGOTIATION0Asiya Javayant
1025Arvin G RulapaughArgentina2026-07-09Feiner Bros RENEWAL12Ivan Magalhaes
1026Octavia V WieserBrazil2026-06-28Rangoni Of Florence QUALIFIED31Ioni Bowcher
1027Stacey S MaletBrazil2026-07-22Dorl, James J Esq QUALIFIED66Anna Fali
1028Faith L ChuiArgentina2026-07-08Rangoni Of Florence RENEWAL14Elwin Sharvill
1029Jones E StensethItaly2026-07-20Feltz Printing Service UNQUALIFIED82Ivan Magalhaes
1030Wickens I OldroydItaly2026-07-08Rangoni Of Florence RENEWAL2Elwin Sharvill
1031Mujtaba H ShinkoJapan2026-07-07Benton, John B Jr NEW50Elwin Sharvill
1032David L OldroydFrance2026-07-26Morlong Associates QUALIFIED40Stephen Shaw
1033Chavez I CaudyArgentina2026-07-04Benton, John B Jr PROPOSAL72Onyama Limba
1034Emily S SaylorsRussia2026-07-01Printing Dimensions UNQUALIFIED92Ivan Magalhaes
1035Morrow P KuskoCanada2026-07-08Feltz Printing Service NEW5Xuxue Feng
1036Mujtaba V KolmetzFrance2026-07-03King, Christopher A Esq RENEWAL66Elwin Sharvill
1037Rodrigues H GlickFrance2026-07-03Benton, John B Jr NEGOTIATION24Elwin Sharvill
1038Francesco V RulapaughUnited Kingdom2026-07-25Benton, John B Jr NEGOTIATION72Ivan Magalhaes
1039Smith L StockhamRussia2026-07-03Chemel, James L Cpa PROPOSAL16Bernardo Dominic
1040Kadeem H BologniaBrazil2026-07-17Rangoni Of Florence NEGOTIATION77Ioni Bowcher
1041Johnson L VenereRussia2026-07-06Feiner Bros RENEWAL3Ioni Bowcher
1042Ivar G CaudyIndia2026-07-08Printing Dimensions NEGOTIATION64Ivan Magalhaes
1043Costa Q WhobreyUnited Kingdom2026-07-11Truhlar And Truhlar Attys UNQUALIFIED34Bernardo Dominic
1044Murillo T RoysterCanada2026-07-12Feltz Printing Service UNQUALIFIED22Stephen Shaw
1045Darci B GlickBrazil2026-07-01Chanay, Jeffrey A Esq PROPOSAL92Ioni Bowcher
1046Morrow J PoquetteJapan2026-07-25Chapman, Ross E Esq PROPOSAL74Xuxue Feng
1047Murillo M GlickBrazil2026-07-18Feltz Printing Service UNQUALIFIED45Stephen Shaw
1048Cody K VocelkaFrance2026-07-02Feiner Bros UNQUALIFIED22Elwin Sharvill
1049Claire X WieserAustralia2026-07-05Truhlar And Truhlar Attys UNQUALIFIED79Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Jennifer R NickaRussiaAnna Fali UNQUALIFIED
Johnson J TollnerBrazilAmy Elsner UNQUALIFIED
Chavez W StockhamArgentinaElwin Sharvill NEGOTIATION
James O SlusarskiCanadaXuxue Feng UNQUALIFIED
Faith Q SlusarskiGermanyAmy Elsner PROPOSAL
Arvin H AlbaresRussiaStephen Shaw QUALIFIED
Kadeem M AmigonAustraliaAmy Elsner UNQUALIFIED
Clifford B IturbideIndiaOnyama Limba UNQUALIFIED
Costa Z WaycottArgentinaAsiya Javayant QUALIFIED
Smith I CaudyArgentinaAnna Fali UNQUALIFIED
Aruna G PerinArgentinaIvan Magalhaes NEW
Izzy L WaycottIndiaBernardo Dominic RENEWAL
Isabel B GlickIndiaIvan Magalhaes QUALIFIED
Kadeem W DilliardCanadaBernardo Dominic QUALIFIED
Kaitlin A WhobreyArgentinaXuxue Feng QUALIFIED
Johnson X KolmetzUnited KingdomElwin Sharvill NEW
Darci C SergiFranceIvan Magalhaes NEW
Tony B MaletBrazilIoni Bowcher QUALIFIED
Ashley Q MorascaCanadaElwin Sharvill PROPOSAL
Izzy Z CampainBrazilBernardo Dominic NEGOTIATION
Murillo O AmigonJapanAnna Fali NEGOTIATION
Jeanfrancois Q MaletBrazilElwin Sharvill NEW
Leja F OldroydArgentinaIoni Bowcher RENEWAL
Aruna V StensethAustraliaOnyama Limba QUALIFIED
James S StockhamItalyBernardo Dominic PROPOSAL
Ricardo X MorascaItalyBernardo Dominic QUALIFIED
Nicolas B ChuiAustraliaElwin Sharvill QUALIFIED
Ivar C BowleyBrazilAsiya Javayant NEGOTIATION
Ivar G FerenczJapanElwin Sharvill QUALIFIED
Jeanfrancois Z NestleJapanIoni Bowcher UNQUALIFIED
Darci W RutaItalyAnna Fali RENEWAL
Juan D IturbideSpainStephen Shaw RENEWAL
Ricardo P NestleGermanyStephen Shaw PROPOSAL
Ricardo B CaudyUnited KingdomAnna Fali NEW
Aditya R KuskoIndiaXuxue Feng QUALIFIED
Stacey Q SergiBrazilAnna Fali PROPOSAL
Misaki B BowleyArgentinaIoni Bowcher NEW
David U ChuiUnited KingdomBernardo Dominic UNQUALIFIED
Maria N SaylorsUnited KingdomStephen Shaw NEGOTIATION
Munro Z MarrierIndiaStephen Shaw PROPOSAL
Kaitlin N KolmetzCanadaStephen Shaw NEW
Morrow E NestleUnited KingdomAsiya Javayant RENEWAL
Maisha R BriddickBrazilStephen Shaw PROPOSAL
Jones F ChuiRussiaIvan Magalhaes UNQUALIFIED
Darci H PerinIndiaBernardo Dominic PROPOSAL
Julie I SaylorsFranceAsiya Javayant UNQUALIFIED
James I MaletAustraliaXuxue Feng RENEWAL
Antonio V SergiGermanyIvan Magalhaes NEGOTIATION
Sinclair T StensethBrazilIvan Magalhaes UNQUALIFIED
Faith T InouyeBrazilBernardo Dominic UNQUALIFIED
Frozen Columns
Name
Julie T Campain
Ashley K Stockham
Leja N Maclead
Darci D Tollner
Greenwood N Sergi
Silvio P Shinko
Ricardo H Nestle
Izzy Z Briddick
David S Bowley
Alejandro C Ostrosky
Ivar Y Amigon
Leon H Kusko
Arvin O Wieser
Misaki Y Perin
Nicolas M Doe
Ricardo I Glick
Mayumi W Shinko
Silvio V Royster
Salvatore T Slusarski
Aika L Vocelka
Alejandro K Venere
Aika P Nicka
Octavia G Morasca
Mujtaba M Briddick
Munro N Poquette
Izzy H Chui
Aditya N Wieser
Mujtaba P Campain
Antonio H Kusko
Ivar Y Poquette
Octavia W Whobrey
Mujtaba F Caldarera
Cody T Caldarera
Juan L Oldroyd
Aruna Z Gillian
Murillo M Chui
Julie W Butt
Smith N Slusarski
Alejandro J Doe
Mayumi Z Slusarski
Greenwood M Flosi
Leja V Gillian
Greenwood D Maclead
David J Caldarera
Darci Q Inouye
Rodrigues S Malet
Cody M Figeroa
Aditya X Gaucho
Claire U Waycott
Isabel P Iturbide
IdCountryDate
1000Canada2026-06-30
1001Australia2026-07-02
1002Germany2026-07-03
1003Japan2026-07-11
1004India2026-07-13
1005Canada2026-06-28
1006Italy2026-07-10
1007India2026-07-24
1008Canada2026-07-17
1009United Kingdom2026-07-04
1010France2026-07-04
1011Argentina2026-07-18
1012Japan2026-06-29
1013Japan2026-07-06
1014Germany2026-07-25
1015France2026-07-05
1016Canada2026-07-01
1017France2026-07-20
1018Spain2026-07-06
1019Italy2026-07-14
1020Australia2026-07-25
1021Argentina2026-07-13
1022Argentina2026-07-06
1023Spain2026-07-10
1024Brazil2026-06-30
1025Russia2026-07-13
1026Australia2026-07-18
1027Spain2026-07-22
1028France2026-07-14
1029Spain2026-07-11
1030Germany2026-07-10
1031Australia2026-07-17
1032Spain2026-07-24
1033Australia2026-07-03
1034Australia2026-07-08
1035United Kingdom2026-07-14
1036Italy2026-07-26
1037Canada2026-07-12
1038Italy2026-07-18
1039Italy2026-07-07
1040Germany2026-07-06
1041Canada2026-06-29
1042Germany2026-06-29
1043India2026-07-10
1044Russia2026-07-01
1045Brazil2026-07-03
1046United Kingdom2026-07-15
1047Germany2026-07-12
1048France2026-07-15
1049Italy2026-07-17

On-Demand Data

NameIdCountryDate
Cody H Saylors1000Canada2026-07-25
Alejandro L Glick1001Italy2026-07-23
Jefferson Z Doe1002Germany2026-07-09
Maisha J Stockham1003Japan2026-07-06
Leon L Malet1004Australia2026-07-26
Jefferson F Ferencz1005United Kingdom2026-07-07
Jones O Doe1006Spain2026-07-13
Maria Q Vocelka1007France2026-07-16
James N Butt1008Canada2026-07-22
Tony B Doe1009Russia2026-06-28
Clifford O Shinko1010United Kingdom2026-07-17
Jefferson S Maclead1011Argentina2026-07-13
Adams M Iturbide1012Spain2026-07-02
Antonio X Dilliard1013Russia2026-07-18
Cody D Maclead1014Russia2026-07-22
Rodrigues D Morasca1015Japan2026-07-21
Jennifer L Kusko1016Japan2026-07-12
Adams K Stockham1017Spain2026-07-06
Jennifer P Stockham1018Argentina2026-07-04
Murillo S Glick1019United Kingdom2026-07-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Darci J KuskoFranceElwin Sharvill RENEWAL
Salvatore F SaylorsIndiaStephen Shaw UNQUALIFIED
Aruna E KuskoRussiaAsiya Javayant RENEWAL
Aruna T DarakjyItalyAnna Fali RENEWAL
Francesco H MaletBrazilOnyama Limba NEGOTIATION
Misaki V CaudyAustraliaAnna Fali RENEWAL
Juan M KolmetzArgentinaElwin Sharvill RENEWAL
Aruna Y GlickSpainElwin Sharvill PROPOSAL
Kadeem D InouyeBrazilXuxue Feng RENEWAL
Smith L WhobreyGermanyIvan Magalhaes QUALIFIED
Smith L DoeGermanyElwin Sharvill UNQUALIFIED
Johnson W OstroskyCanadaIoni Bowcher NEGOTIATION
James U MacleadFranceBernardo Dominic PROPOSAL
Cody T FerenczUnited KingdomIoni Bowcher QUALIFIED
Cody D WieserFranceIvan Magalhaes QUALIFIED
Jennifer O CampainUnited KingdomIvan Magalhaes PROPOSAL
Wickens I TollnerUnited KingdomStephen Shaw RENEWAL
Nicolas P InouyeUnited KingdomOnyama Limba PROPOSAL
Ivar Q GarufiCanadaIvan Magalhaes UNQUALIFIED
Greenwood M ShinkoIndiaAmy Elsner UNQUALIFIED
Jones T WaycottUnited KingdomBernardo Dominic NEGOTIATION
Arvin H RoysterRussiaOnyama Limba UNQUALIFIED
Antonio J ChuiCanadaOnyama Limba NEW
Antonio Z NickaJapanIvan Magalhaes UNQUALIFIED
Silvio D KolmetzJapanIoni Bowcher NEW
Darci L MaletIndiaOnyama Limba NEW
Ivar M MacleadFranceBernardo Dominic RENEWAL
Stacey M BriddickIndiaOnyama Limba NEGOTIATION
Ricardo Y FerenczCanadaElwin Sharvill RENEWAL
Izzy U StockhamAustraliaStephen Shaw RENEWAL
Costa J IturbideCanadaAnna Fali QUALIFIED
Rodrigues T MacleadCanadaAnna Fali UNQUALIFIED
Clifford S AlbaresAustraliaIoni Bowcher NEGOTIATION
Tony Y WaycottSpainBernardo Dominic PROPOSAL
Sinclair L BologniaUnited KingdomStephen Shaw PROPOSAL
Tony I ShinkoSpainOnyama Limba NEGOTIATION
Aika T CaudyCanadaIvan Magalhaes UNQUALIFIED
Francesco A FerenczAustraliaStephen Shaw RENEWAL
Maisha B SaylorsGermanyIoni Bowcher RENEWAL
Jennifer D InouyeCanadaAsiya Javayant UNQUALIFIED

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