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
Emily L DilliardIndiaAnna Fali RENEWAL
Murillo S OldroydArgentinaOnyama Limba UNQUALIFIED
Johnson I MaletAustraliaAnna Fali PROPOSAL
Izzy P BowleyAustraliaAmy Elsner NEW
Claire O RulapaughRussiaOnyama Limba RENEWAL
Leja D StensethJapanIvan Magalhaes NEGOTIATION
Stacey B IturbideIndiaAnna Fali QUALIFIED
Cody Y GarufiFranceAnna Fali NEW
Greenwood S VocelkaRussiaIvan Magalhaes NEW
James Z NickaSpainXuxue Feng UNQUALIFIED
Kaitlin L RimJapanIvan Magalhaes QUALIFIED
James U MorascaIndiaAsiya Javayant NEGOTIATION
Deepesh F MorascaItalyIvan Magalhaes RENEWAL
Kadeem E GlickRussiaOnyama Limba NEW
Jeanfrancois W WhobreyItalyIvan Magalhaes PROPOSAL
Munro H TollnerJapanOnyama Limba RENEWAL
Munro Q CampainSpainXuxue Feng PROPOSAL
Kadeem J CaldareraJapanOnyama Limba UNQUALIFIED
Maisha W DilliardUnited KingdomElwin Sharvill NEW
Claire N VocelkaUnited KingdomIvan Magalhaes QUALIFIED
Costa C FigeroaUnited KingdomIvan Magalhaes PROPOSAL
Johnson J PoquetteCanadaAnna Fali PROPOSAL
Emily V CaudyItalyOnyama Limba RENEWAL
Claire T MacleadJapanAsiya Javayant UNQUALIFIED
Ricardo Y PoquetteUnited KingdomAmy Elsner NEW
Mujtaba Z MacleadBrazilIoni Bowcher QUALIFIED
Ricardo R OldroydUnited KingdomAmy Elsner NEW
Mujtaba C DilliardArgentinaAsiya Javayant PROPOSAL
Ricardo Q SergiFranceElwin Sharvill QUALIFIED
Morrow Y MaletCanadaStephen Shaw PROPOSAL
Wickens I FigeroaItalyXuxue Feng PROPOSAL
Leon O DilliardArgentinaXuxue Feng NEW
Octavia D ButtAustraliaElwin Sharvill NEGOTIATION
Jennifer C InouyeItalyBernardo Dominic QUALIFIED
Rodrigues R DoeGermanyIoni Bowcher NEW
Julie A WieserJapanBernardo Dominic UNQUALIFIED
Kaitlin O WhobreyCanadaAsiya Javayant NEGOTIATION
Leja V BriddickBrazilAmy Elsner PROPOSAL
Octavia E OstroskyItalyIoni Bowcher NEW
Deepesh L PerinJapanStephen Shaw QUALIFIED
Kaitlin B MaletItalyIvan Magalhaes PROPOSAL
Kaitlin Y SlusarskiIndiaAmy Elsner QUALIFIED
Darci W RimIndiaOnyama Limba NEGOTIATION
Arvin C TollnerUnited KingdomBernardo Dominic NEW
Greenwood Z KuskoBrazilAmy Elsner PROPOSAL
Wickens G BriddickCanadaAmy Elsner NEW
Arvin B NickaAustraliaXuxue Feng RENEWAL
Faith Y DilliardBrazilAsiya Javayant NEW
David X VocelkaIndiaAmy Elsner PROPOSAL
Leja M KuskoIndiaIvan Magalhaes NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Silvio X DilliardIndiaStephen Shaw NEW
Aruna N GillianBrazilAnna Fali UNQUALIFIED
Nicolas M MaletBrazilIoni Bowcher UNQUALIFIED
Stacey K BowleyAustraliaOnyama Limba PROPOSAL
Izzy U PerinCanadaAmy Elsner UNQUALIFIED
Leon C FollerFranceAsiya Javayant NEGOTIATION
Isabel B NickaIndiaStephen Shaw QUALIFIED
Maria Y InouyeItalyAsiya Javayant QUALIFIED
Mayumi J MacleadRussiaIoni Bowcher QUALIFIED
Sinclair J FigeroaUnited KingdomIvan Magalhaes PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Arvin V RutaArgentina2026-06-16Dorl, James J Esq QUALIFIED58Bernardo Dominic
1001Sinclair C OstroskyCanada2026-07-11Feiner Bros UNQUALIFIED0Anna Fali
1002Costa Q FigeroaCanada2026-07-07Benton, John B Jr NEGOTIATION70Onyama Limba
1003Ricardo U CampainIndia2026-07-02Rangoni Of Florence UNQUALIFIED33Stephen Shaw
1004Leon E CaldareraGermany2026-07-05Rousseaux, Michael Esq PROPOSAL33Anna Fali
1005Costa C TollnerAustralia2026-06-29Morlong Associates RENEWAL49Anna Fali
1006David J CaldareraIndia2026-07-03Benton, John B Jr NEW7Ioni Bowcher
1007Misaki P ButtFrance2026-06-16Feltz Printing Service RENEWAL61Ivan Magalhaes
1008Jefferson W FerenczBrazil2026-07-04Commercial Press PROPOSAL20Stephen Shaw
1009Chavez V FigeroaJapan2026-06-22Buckley Miller Wright PROPOSAL14Onyama Limba
1010Maisha Y AmigonGermany2026-06-19Rousseaux, Michael Esq NEGOTIATION40Asiya Javayant
1011Misaki T VocelkaSpain2026-06-23Commercial Press NEGOTIATION97Elwin Sharvill
1012Jones D KolmetzFrance2026-06-25Feiner Bros NEGOTIATION65Ioni Bowcher
1013Kaitlin B DarakjyRussia2026-07-04Benton, John B Jr NEW40Elwin Sharvill
1014Sinclair D PaprockiJapan2026-07-02Chanay, Jeffrey A Esq RENEWAL21Bernardo Dominic
1015Smith O AmigonAustralia2026-07-07Chapman, Ross E Esq RENEWAL97Bernardo Dominic
1016Ashley Q PaprockiArgentina2026-06-27Commercial Press RENEWAL65Stephen Shaw
1017Jennifer F BologniaBrazil2026-06-16Commercial Press NEW72Xuxue Feng
1018Silvio B AmigonRussia2026-07-12Buckley Miller Wright NEGOTIATION7Stephen Shaw
1019Francesco L DarakjyArgentina2026-06-25Buckley Miller Wright UNQUALIFIED95Amy Elsner
1020Aditya K FerenczUnited Kingdom2026-07-11Chanay, Jeffrey A Esq NEGOTIATION9Asiya Javayant
1021Ivar C StockhamGermany2026-07-12Printing Dimensions QUALIFIED29Anna Fali
1022Munro E GauchoFrance2026-06-26Commercial Press PROPOSAL4Onyama Limba
1023Misaki D FigeroaUnited Kingdom2026-06-28King, Christopher A Esq NEW59Asiya Javayant
1024Cody W NestleFrance2026-07-06Printing Dimensions NEGOTIATION60Stephen Shaw
1025Smith L SlusarskiSpain2026-07-10Rangoni Of Florence NEW96Bernardo Dominic
1026David P KuskoBrazil2026-07-15Commercial Press QUALIFIED17Ioni Bowcher
1027Julie M DilliardSpain2026-07-09Rousseaux, Michael Esq PROPOSAL98Anna Fali
1028Antonio U WhobreySpain2026-07-04Truhlar And Truhlar Attys UNQUALIFIED89Ioni Bowcher
1029Aruna Q WieserJapan2026-07-01Commercial Press PROPOSAL63Ioni Bowcher
1030Jones F StensethJapan2026-07-15Rousseaux, Michael Esq UNQUALIFIED39Asiya Javayant
1031Jeanfrancois E MorascaItaly2026-07-12Feiner Bros NEGOTIATION8Onyama Limba
1032Munro A RoysterSpain2026-07-15Morlong Associates NEGOTIATION91Anna Fali
1033Francesco F PaprockiUnited Kingdom2026-07-07Chemel, James L Cpa NEW89Xuxue Feng
1034Arvin W ChuiFrance2026-07-08Buckley Miller Wright QUALIFIED31Amy Elsner
1035Clifford J CampainAustralia2026-07-15Chapman, Ross E Esq NEW55Ioni Bowcher
1036Adams D IturbideSpain2026-06-24Chanay, Jeffrey A Esq RENEWAL13Asiya Javayant
1037Costa X OstroskyIndia2026-06-17Chapman, Ross E Esq UNQUALIFIED66Asiya Javayant
1038Johnson K GauchoJapan2026-06-16Dorl, James J Esq QUALIFIED13Xuxue Feng
1039Munro M BowleyUnited Kingdom2026-07-01Chapman, Ross E Esq PROPOSAL78Ivan Magalhaes
1040Mujtaba G PerinAustralia2026-06-24Truhlar And Truhlar Attys QUALIFIED8Onyama Limba
1041Adams J RutaIndia2026-06-17Benton, John B Jr UNQUALIFIED42Ivan Magalhaes
1042Cody P RutaFrance2026-06-19Morlong Associates NEW67Elwin Sharvill
1043Alejandro Y RoysterJapan2026-06-20Commercial Press UNQUALIFIED47Anna Fali
1044Leja M MaletJapan2026-07-04Chemel, James L Cpa NEGOTIATION92Amy Elsner
1045Kaitlin S RimIndia2026-07-12Chapman, Ross E Esq NEGOTIATION50Bernardo Dominic
1046Alejandro V KolmetzItaly2026-07-13Feltz Printing Service NEW45Stephen Shaw
1047Jefferson W BriddickRussia2026-07-05Chemel, James L Cpa NEW71Ioni Bowcher
1048Johnson B BowleyFrance2026-07-11Feiner Bros QUALIFIED83Xuxue Feng
1049Rodrigues J PoquetteRussia2026-07-13Rousseaux, Michael Esq UNQUALIFIED34Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Sinclair B GillianFranceStephen Shaw NEW
Stacey Q WaycottArgentinaAnna Fali UNQUALIFIED
Wickens C RutaUnited KingdomIvan Magalhaes NEGOTIATION
Arvin A MaletIndiaStephen Shaw NEW
Claire S ButtBrazilBernardo Dominic QUALIFIED
Greenwood H FigeroaUnited KingdomStephen Shaw NEGOTIATION
Stacey H SaylorsSpainAsiya Javayant UNQUALIFIED
Murillo X RoysterItalyElwin Sharvill UNQUALIFIED
Johnson T SaylorsGermanyOnyama Limba QUALIFIED
Antonio B WaycottSpainXuxue Feng QUALIFIED
James W StockhamUnited KingdomXuxue Feng NEW
Arvin B DarakjyRussiaXuxue Feng PROPOSAL
Cody H RimCanadaElwin Sharvill UNQUALIFIED
Costa Y MaletJapanElwin Sharvill NEW
Jones W BowleyCanadaStephen Shaw NEW
Faith F PoquetteCanadaOnyama Limba NEW
Claire B GarufiFranceBernardo Dominic UNQUALIFIED
Leja Y KolmetzUnited KingdomAsiya Javayant RENEWAL
Mayumi S FigeroaFranceStephen Shaw NEW
Adams U BologniaGermanyElwin Sharvill QUALIFIED
Emily O DilliardRussiaIvan Magalhaes PROPOSAL
Munro O KuskoUnited KingdomIvan Magalhaes UNQUALIFIED
Francesco T ShinkoRussiaXuxue Feng NEW
Maria A FlosiIndiaElwin Sharvill NEGOTIATION
Jones A PoquetteFranceXuxue Feng UNQUALIFIED
Mayumi D BologniaItalyElwin Sharvill RENEWAL
Arvin G MarrierUnited KingdomAnna Fali QUALIFIED
Arvin U GlickArgentinaElwin Sharvill UNQUALIFIED
Izzy E FigeroaSpainIvan Magalhaes NEGOTIATION
Leon F MaletCanadaAnna Fali QUALIFIED
David Y FollerArgentinaAmy Elsner NEW
Munro Z VocelkaSpainXuxue Feng RENEWAL
Stacey T KolmetzJapanIoni Bowcher NEW
Aditya T CampainRussiaIvan Magalhaes UNQUALIFIED
Salvatore G WhobreyItalyIvan Magalhaes UNQUALIFIED
Maisha W TollnerJapanAmy Elsner PROPOSAL
Darci C RulapaughCanadaAmy Elsner NEGOTIATION
Mayumi I BriddickSpainStephen Shaw NEGOTIATION
Adams E IturbideSpainBernardo Dominic NEGOTIATION
Stacey G KolmetzAustraliaOnyama Limba NEGOTIATION
Chavez O RoysterItalyAsiya Javayant NEGOTIATION
Cody Z InouyeAustraliaAsiya Javayant NEGOTIATION
Adams B GlickFranceAnna Fali RENEWAL
Smith F DilliardBrazilXuxue Feng NEW
Misaki X RutaIndiaXuxue Feng QUALIFIED
Mayumi N FigeroaArgentinaStephen Shaw PROPOSAL
Ricardo A WaycottJapanAnna Fali PROPOSAL
Tony C MaletSpainIvan Magalhaes NEW
Alejandro M FlosiArgentinaElwin Sharvill QUALIFIED
Darci H DilliardItalyBernardo Dominic NEGOTIATION
Frozen Columns
Name
Cody P Morasca
Munro K Perin
Cody V Poquette
Cody L Ruta
Maisha O Garufi
Arvin L Garufi
Murillo K Stenseth
Morrow Z Vocelka
Isabel A Wieser
Greenwood F Rim
Faith R Chui
Maisha B Bowley
Kadeem E Glick
Aika F Nicka
Johnson L Malet
Ashley A Inouye
Misaki V Kolmetz
Antonio C Garufi
Arvin P Marrier
Octavia V Briddick
Francesco U Garufi
Munro J Waycott
Arvin L Kolmetz
James Z Malet
Nicolas Z Bolognia
Emily E Nicka
Antonio N Kusko
Kaitlin X Stenseth
Kaitlin P Albares
Arvin J Malet
Chavez I Waycott
Ricardo K Briddick
Leon F Poquette
Kadeem F Stockham
Tony D Whobrey
Salvatore T Inouye
Aditya U Tollner
Isabel N Flosi
Stacey W Nestle
Morrow J Iturbide
Izzy P Sergi
Sinclair V Stockham
Deepesh E Campain
Jeanfrancois P Glick
Cody B Iturbide
Darci J Whobrey
Izzy T Waycott
Julie Q Tollner
Leja T Garufi
Nicolas G Morasca
IdCountryDate
1000France2026-06-26
1001United Kingdom2026-07-06
1002Spain2026-06-18
1003France2026-07-10
1004Italy2026-07-15
1005Spain2026-07-06
1006Japan2026-07-13
1007Germany2026-07-01
1008Brazil2026-07-11
1009Russia2026-06-17
1010India2026-07-10
1011Argentina2026-06-19
1012Australia2026-06-26
1013Japan2026-07-01
1014Argentina2026-06-30
1015India2026-07-04
1016India2026-07-11
1017Japan2026-07-04
1018Spain2026-07-12
1019Italy2026-07-05
1020United Kingdom2026-07-15
1021United Kingdom2026-06-24
1022Canada2026-07-09
1023Germany2026-06-26
1024Canada2026-07-06
1025Argentina2026-07-06
1026Australia2026-06-26
1027Canada2026-06-19
1028France2026-07-03
1029Russia2026-07-03
1030Spain2026-07-03
1031Russia2026-07-13
1032Germany2026-07-10
1033France2026-06-28
1034Canada2026-07-12
1035United Kingdom2026-06-17
1036Canada2026-07-05
1037Japan2026-07-04
1038India2026-07-11
1039France2026-06-26
1040Spain2026-06-16
1041Italy2026-07-11
1042Spain2026-06-17
1043United Kingdom2026-07-13
1044Germany2026-06-18
1045United Kingdom2026-07-06
1046Spain2026-07-05
1047France2026-06-26
1048Russia2026-06-20
1049Italy2026-07-07

On-Demand Data

NameIdCountryDate
Morrow C Figeroa1000Canada2026-06-16
Isabel B Perin1001Italy2026-07-06
Isabel R Glick1002Brazil2026-06-20
Murillo Y Glick1003Canada2026-06-22
Chavez L Kolmetz1004Germany2026-07-09
Ivar R Oldroyd1005Japan2026-07-04
Aditya K Venere1006France2026-06-27
Deepesh A Nestle1007Argentina2026-06-26
David M Paprocki1008India2026-07-04
Octavia X Malet1009India2026-07-04
Maria L Maclead1010Argentina2026-07-12
Faith K Venere1011Brazil2026-07-13
Jennifer V Glick1012Canada2026-06-20
Rodrigues F Ostrosky1013Australia2026-07-02
Julie P Marrier1014Australia2026-06-18
Adams L Saylors1015Canada2026-06-19
Emily K Wieser1016Russia2026-07-09
Johnson B Albares1017Canada2026-07-14
Adams D Wieser1018Brazil2026-07-06
Stacey N Inouye1019Russia2026-07-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Cody R FigeroaArgentinaAnna Fali UNQUALIFIED
Aruna U FollerBrazilBernardo Dominic QUALIFIED
Maisha T GlickIndiaAsiya Javayant NEGOTIATION
David Q ChuiBrazilBernardo Dominic NEGOTIATION
Jones J KolmetzBrazilAsiya Javayant RENEWAL
Leja M IturbideGermanyAmy Elsner NEW
Mayumi W BowleyCanadaStephen Shaw QUALIFIED
Faith L FlosiArgentinaAnna Fali QUALIFIED
Ricardo N CampainItalyIoni Bowcher QUALIFIED
Antonio H FlosiJapanElwin Sharvill UNQUALIFIED
Maisha K TollnerItalyIvan Magalhaes RENEWAL
Silvio H KuskoArgentinaIvan Magalhaes RENEWAL
Deepesh H RutaJapanOnyama Limba NEW
Juan W NestleAustraliaIvan Magalhaes NEW
Wickens T IturbideSpainIvan Magalhaes QUALIFIED
Jennifer U WieserCanadaAmy Elsner RENEWAL
Izzy O BowleyCanadaIoni Bowcher NEW
David A FlosiFranceAmy Elsner RENEWAL
Murillo Y WhobreySpainElwin Sharvill NEGOTIATION
Aditya V WieserCanadaOnyama Limba NEW
Octavia Z KolmetzUnited KingdomElwin Sharvill NEW
Adams B GlickIndiaElwin Sharvill UNQUALIFIED
Smith B DilliardFranceStephen Shaw QUALIFIED
Smith K DilliardUnited KingdomOnyama Limba PROPOSAL
Tony I ChuiCanadaIvan Magalhaes RENEWAL
Aika N SchemmerJapanOnyama Limba QUALIFIED
Alejandro J FigeroaCanadaAnna Fali PROPOSAL
Leja Z CaldareraRussiaAmy Elsner QUALIFIED
Arvin K GillianSpainBernardo Dominic PROPOSAL
Costa M DarakjyBrazilXuxue Feng RENEWAL
Arvin V FigeroaArgentinaIoni Bowcher RENEWAL
Ivar S RimSpainElwin Sharvill NEGOTIATION
Chavez E RutaGermanyElwin Sharvill NEGOTIATION
Salvatore S SaylorsJapanAsiya Javayant UNQUALIFIED
Salvatore E ShinkoGermanyBernardo Dominic RENEWAL
Juan F TollnerBrazilElwin Sharvill NEW
Clifford A OldroydCanadaIoni Bowcher NEW
Jennifer P OstroskyFranceBernardo Dominic NEW
Adams E SaylorsFranceAmy Elsner NEGOTIATION
Murillo W GillianGermanyStephen 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>