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
Kaitlin V KolmetzJapanOnyama Limba QUALIFIED
Juan W WaycottFranceOnyama Limba RENEWAL
Morrow I BowleyIndiaBernardo Dominic NEGOTIATION
Murillo S ShinkoSpainIvan Magalhaes UNQUALIFIED
Rodrigues O PoquetteGermanyAsiya Javayant RENEWAL
Izzy R BriddickRussiaOnyama Limba PROPOSAL
Stacey J PoquetteIndiaAsiya Javayant PROPOSAL
Jones S AlbaresAustraliaIoni Bowcher NEGOTIATION
Deepesh U WhobreyUnited KingdomAmy Elsner NEGOTIATION
Murillo C CaldareraArgentinaXuxue Feng PROPOSAL
Faith W GarufiUnited KingdomIoni Bowcher RENEWAL
Stacey V GauchoUnited KingdomAnna Fali NEGOTIATION
Ivar J SergiRussiaBernardo Dominic NEGOTIATION
Misaki X NickaUnited KingdomElwin Sharvill RENEWAL
Jeanfrancois C VocelkaGermanyOnyama Limba NEW
Mujtaba W RimFranceAsiya Javayant NEGOTIATION
Faith R FlosiAustraliaOnyama Limba NEW
Johnson Y RoysterCanadaBernardo Dominic NEW
James C GarufiCanadaIvan Magalhaes RENEWAL
Ricardo R RoysterArgentinaXuxue Feng UNQUALIFIED
Emily Q AmigonUnited KingdomAsiya Javayant QUALIFIED
Aditya O AlbaresGermanyAnna Fali RENEWAL
Deepesh E WhobreyFranceBernardo Dominic PROPOSAL
Salvatore E DilliardGermanyStephen Shaw PROPOSAL
Claire A ButtJapanAmy Elsner NEW
Alejandro W PaprockiGermanyIvan Magalhaes RENEWAL
Izzy M AlbaresArgentinaIvan Magalhaes QUALIFIED
Darci M MacleadBrazilXuxue Feng NEGOTIATION
Greenwood E SchemmerAustraliaIoni Bowcher UNQUALIFIED
Mayumi J StensethUnited KingdomAmy Elsner QUALIFIED
Maisha R KolmetzFranceBernardo Dominic UNQUALIFIED
James N FollerJapanIvan Magalhaes QUALIFIED
Juan P MacleadArgentinaStephen Shaw NEGOTIATION
James L DilliardAustraliaBernardo Dominic PROPOSAL
Mayumi A AlbaresBrazilAsiya Javayant NEGOTIATION
Sinclair S CaldareraItalyAnna Fali NEW
Chavez H FigeroaBrazilOnyama Limba UNQUALIFIED
Aruna T VenereItalyIvan Magalhaes PROPOSAL
Morrow G ShinkoUnited KingdomElwin Sharvill NEW
Ivar E StockhamAustraliaXuxue Feng QUALIFIED
Aruna W CaudyRussiaAnna Fali UNQUALIFIED
James A TollnerUnited KingdomStephen Shaw UNQUALIFIED
Julie H GauchoCanadaIoni Bowcher UNQUALIFIED
Salvatore Q KolmetzIndiaAsiya Javayant NEW
Isabel H BowleyUnited KingdomBernardo Dominic NEGOTIATION
Darci C DoeUnited KingdomAnna Fali NEGOTIATION
Smith Z StockhamArgentinaAmy Elsner PROPOSAL
Maria M RoysterArgentinaStephen Shaw RENEWAL
Cody K NickaFranceAnna Fali NEGOTIATION
Murillo S InouyeArgentinaStephen Shaw NEW
Horizontal
NameCountryRepresentativeStatus
Jones J CampainCanadaStephen Shaw UNQUALIFIED
Maria T RimFranceIvan Magalhaes NEW
Antonio E VenereArgentinaBernardo Dominic RENEWAL
Mujtaba A MacleadJapanAmy Elsner NEW
Faith J MaletIndiaStephen Shaw UNQUALIFIED
Jennifer L BriddickIndiaXuxue Feng PROPOSAL
Ricardo V RoysterFranceElwin Sharvill PROPOSAL
Stacey W NickaCanadaBernardo Dominic NEW
Costa X FerenczCanadaBernardo Dominic UNQUALIFIED
Silvio U NickaGermanyAnna Fali NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Mayumi R KolmetzArgentina2026-08-24Benton, John B Jr RENEWAL1Ivan Magalhaes
1001Ricardo E StockhamIndia2026-08-11Commercial Press NEGOTIATION47Elwin Sharvill
1002Octavia F RulapaughGermany2026-08-16Feltz Printing Service NEW88Onyama Limba
1003Stacey I SaylorsItaly2026-08-29Chemel, James L Cpa QUALIFIED35Asiya Javayant
1004Sinclair G NestleItaly2026-08-21Truhlar And Truhlar Attys QUALIFIED46Xuxue Feng
1005Darci G SchemmerItaly2026-08-30Feiner Bros NEW30Anna Fali
1006Tony D SergiFrance2026-08-12Printing Dimensions RENEWAL38Amy Elsner
1007Aika G WaycottBrazil2026-08-29Chemel, James L Cpa UNQUALIFIED12Stephen Shaw
1008Juan K FerenczGermany2026-08-16Buckley Miller Wright RENEWAL41Elwin Sharvill
1009Nicolas Z KolmetzBrazil2026-08-28Morlong Associates NEW76Anna Fali
1010Murillo W CaldareraArgentina2026-08-27Chemel, James L Cpa PROPOSAL20Bernardo Dominic
1011Jefferson I FerenczAustralia2026-08-19Buckley Miller Wright UNQUALIFIED0Ioni Bowcher
1012Aika N VocelkaIndia2026-08-10Buckley Miller Wright RENEWAL15Ioni Bowcher
1013Darci S BriddickItaly2026-08-26Printing Dimensions PROPOSAL38Asiya Javayant
1014Rodrigues H GauchoCanada2026-08-28Chapman, Ross E Esq PROPOSAL21Bernardo Dominic
1015Jefferson Q TollnerCanada2026-08-06Printing Dimensions RENEWAL30Ivan Magalhaes
1016Costa C KuskoUnited Kingdom2026-08-04Rangoni Of Florence NEW25Elwin Sharvill
1017Isabel S RimArgentina2026-08-17Truhlar And Truhlar Attys RENEWAL18Xuxue Feng
1018Francesco H BriddickSpain2026-08-23Rangoni Of Florence QUALIFIED38Asiya Javayant
1019Mujtaba E NickaBrazil2026-08-19King, Christopher A Esq UNQUALIFIED5Anna Fali
1020Maisha V FerenczRussia2026-08-24Morlong Associates NEW68Bernardo Dominic
1021Morrow E StockhamAustralia2026-08-15King, Christopher A Esq QUALIFIED88Stephen Shaw
1022Mayumi D DilliardBrazil2026-08-29Feiner Bros PROPOSAL13Xuxue Feng
1023Munro G IturbideFrance2026-08-27Feiner Bros QUALIFIED89Stephen Shaw
1024Maria X DilliardArgentina2026-08-10Chapman, Ross E Esq QUALIFIED26Anna Fali
1025Leon S GauchoJapan2026-08-29Rousseaux, Michael Esq UNQUALIFIED13Xuxue Feng
1026Morrow H ChuiRussia2026-08-23Buckley Miller Wright NEGOTIATION56Stephen Shaw
1027Julie Z RimUnited Kingdom2026-08-18Rousseaux, Michael Esq UNQUALIFIED20Elwin Sharvill
1028Julie H RutaJapan2026-08-30Feiner Bros RENEWAL24Ivan Magalhaes
1029Izzy A GillianAustralia2026-08-25Morlong Associates QUALIFIED15Onyama Limba
1030Cody Z VocelkaJapan2026-08-15Truhlar And Truhlar Attys UNQUALIFIED5Ivan Magalhaes
1031Maisha U AlbaresSpain2026-08-04Chapman, Ross E Esq PROPOSAL12Ivan Magalhaes
1032Jones D AlbaresIndia2026-08-13King, Christopher A Esq RENEWAL43Stephen Shaw
1033Jones T NickaRussia2026-08-05Chemel, James L Cpa RENEWAL54Amy Elsner
1034Kaitlin E InouyeRussia2026-08-13Buckley Miller Wright PROPOSAL73Ioni Bowcher
1035Ashley S MaletUnited Kingdom2026-08-19Dorl, James J Esq NEGOTIATION84Ivan Magalhaes
1036Costa O MacleadCanada2026-08-12Truhlar And Truhlar Attys RENEWAL75Anna Fali
1037Murillo R PaprockiArgentina2026-08-25Chemel, James L Cpa NEGOTIATION26Ioni Bowcher
1038Munro E RoysterItaly2026-08-24Feltz Printing Service NEW7Anna Fali
1039Morrow N GillianCanada2026-08-02Benton, John B Jr NEGOTIATION36Anna Fali
1040Costa M DarakjyItaly2026-08-15Truhlar And Truhlar Attys RENEWAL10Onyama Limba
1041Aika M CaldareraRussia2026-08-24Chemel, James L Cpa UNQUALIFIED32Onyama Limba
1042Alejandro C DarakjyIndia2026-08-30Chemel, James L Cpa NEGOTIATION19Onyama Limba
1043Maria C TollnerGermany2026-08-06Truhlar And Truhlar Attys QUALIFIED17Amy Elsner
1044Chavez R NestleUnited Kingdom2026-08-27Chanay, Jeffrey A Esq NEW34Ioni Bowcher
1045Wickens V MarrierGermany2026-08-24Rangoni Of Florence UNQUALIFIED58Ioni Bowcher
1046Juan V TollnerArgentina2026-08-28Dorl, James J Esq RENEWAL83Anna Fali
1047Kadeem C WhobreyAustralia2026-08-19King, Christopher A Esq PROPOSAL14Elwin Sharvill
1048Arvin C SergiJapan2026-08-22Commercial Press UNQUALIFIED99Elwin Sharvill
1049Jeanfrancois J IturbideCanada2026-08-21Chemel, James L Cpa NEGOTIATION71Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Ricardo O GlickUnited KingdomOnyama Limba NEW
Alejandro V TollnerSpainElwin Sharvill NEGOTIATION
Juan X ShinkoUnited KingdomOnyama Limba PROPOSAL
Julie J CampainCanadaAnna Fali NEW
Wickens N FlosiJapanBernardo Dominic UNQUALIFIED
Ashley S BowleyItalyOnyama Limba UNQUALIFIED
Cody Q RulapaughJapanAnna Fali NEW
Costa E StockhamSpainAsiya Javayant PROPOSAL
Ricardo H NestleAustraliaXuxue Feng NEW
Aruna C OldroydJapanAnna Fali RENEWAL
Mujtaba O GlickRussiaXuxue Feng NEGOTIATION
Salvatore L FollerFranceAmy Elsner PROPOSAL
Jeanfrancois R ShinkoIndiaXuxue Feng NEGOTIATION
Cody V MacleadItalyAmy Elsner UNQUALIFIED
Kadeem V StockhamSpainOnyama Limba NEW
Adams N InouyeItalyBernardo Dominic UNQUALIFIED
Darci Z OldroydSpainAsiya Javayant PROPOSAL
Chavez Z WaycottAustraliaStephen Shaw QUALIFIED
Rodrigues L VocelkaRussiaIvan Magalhaes UNQUALIFIED
Maisha B FerenczItalyOnyama Limba RENEWAL
James X ShinkoFranceAmy Elsner RENEWAL
Aditya C AlbaresJapanBernardo Dominic PROPOSAL
Jennifer C SaylorsItalyIvan Magalhaes PROPOSAL
Munro N WieserFranceBernardo Dominic NEW
Arvin N MorascaJapanElwin Sharvill QUALIFIED
Aika U MarrierAustraliaAnna Fali QUALIFIED
Ricardo P FigeroaGermanyElwin Sharvill NEW
Emily U KuskoJapanElwin Sharvill RENEWAL
Julie F VocelkaCanadaAmy Elsner NEW
Aruna W PoquetteCanadaOnyama Limba PROPOSAL
Jones J MaletIndiaIvan Magalhaes UNQUALIFIED
Faith A IturbideFranceElwin Sharvill UNQUALIFIED
Claire S RulapaughFranceXuxue Feng NEGOTIATION
Alejandro N MaletBrazilStephen Shaw RENEWAL
Francesco X NestleUnited KingdomElwin Sharvill UNQUALIFIED
Maria U InouyeItalyOnyama Limba NEGOTIATION
Nicolas A GlickBrazilBernardo Dominic NEW
Faith Q CaldareraRussiaOnyama Limba UNQUALIFIED
Murillo S FlosiItalyIoni Bowcher PROPOSAL
Wickens K BowleyIndiaAmy Elsner PROPOSAL
Misaki Z MorascaSpainIvan Magalhaes RENEWAL
Misaki R MacleadItalyBernardo Dominic NEGOTIATION
Mayumi E IturbideBrazilAmy Elsner PROPOSAL
Stacey R GlickAustraliaXuxue Feng NEW
Mayumi Z WhobreyAustraliaBernardo Dominic NEW
Nicolas M WieserSpainAnna Fali UNQUALIFIED
Emily M WieserArgentinaIvan Magalhaes UNQUALIFIED
Darci Q IturbideBrazilElwin Sharvill NEW
Ivar M ShinkoRussiaAnna Fali UNQUALIFIED
David Q TollnerUnited KingdomXuxue Feng NEGOTIATION
Frozen Columns
Name
Munro Z Ostrosky
Morrow E Royster
Leja G Wieser
Mujtaba F Maclead
Octavia L Malet
Costa Q Iturbide
Izzy T Bolognia
Aruna Y Wieser
Aika E Paprocki
Antonio Y Caldarera
Alejandro W Dilliard
Stacey A Campain
Mujtaba C Nicka
Leon T Caudy
Jefferson V Nicka
Emily A Marrier
Sinclair W Ferencz
Mujtaba E Tollner
Deepesh M Shinko
Ivar M Tollner
James G Garufi
Stacey S Flosi
Kaitlin W Gaucho
Chavez X Whobrey
Nicolas P Wieser
Maria Q Glick
Morrow S Rulapaugh
Salvatore B Dilliard
David Y Ostrosky
Ricardo L Garufi
Jefferson B Vocelka
Arvin K Schemmer
Jones C Saylors
Octavia O Amigon
Kadeem K Gaucho
Kadeem W Saylors
Misaki H Slusarski
Kaitlin D Sergi
Morrow L Marrier
Kaitlin D Royster
Deepesh M Saylors
Kaitlin Q Maclead
Adams B Chui
Silvio H Saylors
Sinclair Q Inouye
Antonio E Oldroyd
Nicolas W Poquette
Clifford Y Morasca
Sinclair L Tollner
James V Poquette
IdCountryDate
1000India2026-08-05
1001Italy2026-08-14
1002Italy2026-08-31
1003France2026-08-17
1004Brazil2026-08-13
1005India2026-08-16
1006Canada2026-08-02
1007Spain2026-08-27
1008United Kingdom2026-08-19
1009Japan2026-08-25
1010Russia2026-08-08
1011United Kingdom2026-08-27
1012Italy2026-08-02
1013Australia2026-08-13
1014France2026-08-12
1015Spain2026-08-27
1016Italy2026-08-20
1017Brazil2026-08-04
1018India2026-08-28
1019India2026-08-22
1020Japan2026-08-06
1021Germany2026-08-17
1022Germany2026-08-27
1023Russia2026-08-19
1024Brazil2026-08-18
1025Brazil2026-08-24
1026France2026-08-07
1027Brazil2026-08-02
1028Brazil2026-08-18
1029Australia2026-08-12
1030Australia2026-08-02
1031Australia2026-08-28
1032Germany2026-08-18
1033Canada2026-08-12
1034Spain2026-08-08
1035France2026-08-17
1036Spain2026-08-06
1037Argentina2026-08-13
1038Germany2026-08-13
1039Spain2026-08-15
1040Japan2026-08-04
1041Italy2026-08-09
1042Brazil2026-08-11
1043India2026-08-30
1044United Kingdom2026-08-16
1045India2026-08-09
1046Brazil2026-08-03
1047Argentina2026-08-29
1048Spain2026-08-10
1049France2026-08-12

On-Demand Data

NameIdCountryDate
Greenwood D Glick1000France2026-08-05
Silvio F Wieser1001Spain2026-08-09
Jeanfrancois Q Doe1002Australia2026-08-17
Jennifer R Campain1003Canada2026-08-27
Costa K Ferencz1004France2026-08-21
Tony N Gillian1005Canada2026-08-09
Misaki V Bolognia1006Canada2026-08-02
Jefferson L Waycott1007Brazil2026-08-10
Ivar V Briddick1008Australia2026-08-27
Aditya N Chui1009Italy2026-08-27
Aika Q Amigon1010Japan2026-08-07
Alejandro C Chui1011United Kingdom2026-08-18
Ivar Y Foller1012Japan2026-08-24
Leja O Venere1013France2026-08-14
Kadeem O Briddick1014Brazil2026-08-08
Octavia A Kusko1015Canada2026-08-05
Jefferson F Waycott1016Argentina2026-08-20
Mujtaba Z Waycott1017Argentina2026-08-29
Adams Z Garufi1018Russia2026-08-23
Morrow K Garufi1019Australia2026-08-21
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Silvio R RutaCanadaOnyama Limba RENEWAL
Misaki Q MaletArgentinaAmy Elsner NEW
Jones H OstroskyFranceIoni Bowcher UNQUALIFIED
Emily Z VenereIndiaIvan Magalhaes QUALIFIED
Costa G FollerAustraliaBernardo Dominic PROPOSAL
Faith G DoeGermanyStephen Shaw UNQUALIFIED
Arvin T GillianCanadaXuxue Feng UNQUALIFIED
Octavia H NestleAustraliaOnyama Limba NEW
Leon X AmigonItalyAnna Fali QUALIFIED
Ivar T MorascaArgentinaIoni Bowcher RENEWAL
Ashley T VenereUnited KingdomStephen Shaw QUALIFIED
Aditya Q BowleyItalyBernardo Dominic PROPOSAL
Aika Q OldroydRussiaIoni Bowcher QUALIFIED
Tony B FlosiAustraliaAsiya Javayant NEW
Johnson R WhobreyCanadaBernardo Dominic NEGOTIATION
Francesco R MaletItalyElwin Sharvill RENEWAL
Morrow E CampainBrazilIvan Magalhaes PROPOSAL
James Q ShinkoJapanAmy Elsner UNQUALIFIED
Maisha E BriddickItalyIvan Magalhaes PROPOSAL
Juan Q BologniaUnited KingdomStephen Shaw QUALIFIED
Jones I OstroskyFranceIvan Magalhaes PROPOSAL
Ashley U FerenczBrazilAsiya Javayant NEW
Costa A FollerItalyStephen Shaw NEGOTIATION
Claire I PoquetteRussiaAmy Elsner UNQUALIFIED
Ivar N KuskoJapanElwin Sharvill NEGOTIATION
Salvatore J DilliardBrazilXuxue Feng PROPOSAL
Silvio D RoysterFranceStephen Shaw NEW
Deepesh D OstroskyArgentinaElwin Sharvill NEW
Jeanfrancois V SaylorsAustraliaIvan Magalhaes NEGOTIATION
Claire V MacleadJapanAsiya Javayant PROPOSAL
Kadeem U FigeroaItalyAsiya Javayant RENEWAL
Faith D TollnerItalyAsiya Javayant PROPOSAL
Munro X BologniaBrazilStephen Shaw UNQUALIFIED
Aika H MaletFranceXuxue Feng QUALIFIED
Jones T NickaFranceXuxue Feng NEGOTIATION
Murillo F CaldareraCanadaStephen Shaw NEW
Antonio S PoquetteUnited KingdomAmy Elsner NEW
Faith F AmigonSpainAnna Fali RENEWAL
Juan P MorascaBrazilStephen Shaw PROPOSAL
Alejandro D WhobreyItalyAmy Elsner 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>