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
Izzy Q GillianAustraliaAsiya Javayant NEW
Cody S GarufiSpainOnyama Limba PROPOSAL
Costa B GlickIndiaXuxue Feng UNQUALIFIED
Jeanfrancois G StockhamItalyElwin Sharvill UNQUALIFIED
Silvio J PerinFranceAmy Elsner NEW
Nicolas F WaycottJapanAnna Fali QUALIFIED
Alejandro D StensethIndiaXuxue Feng UNQUALIFIED
Emily A ButtArgentinaXuxue Feng QUALIFIED
Emily L KuskoGermanyAmy Elsner UNQUALIFIED
Cody Z FollerJapanAmy Elsner UNQUALIFIED
Silvio H SaylorsGermanyAsiya Javayant RENEWAL
Rodrigues P PerinUnited KingdomIvan Magalhaes QUALIFIED
Wickens L ChuiItalyStephen Shaw QUALIFIED
Kaitlin H PerinSpainAsiya Javayant NEW
Stacey H PerinIndiaBernardo Dominic NEW
Salvatore U WieserArgentinaBernardo Dominic RENEWAL
Leon A RutaBrazilStephen Shaw UNQUALIFIED
Deepesh Q VocelkaGermanyAmy Elsner QUALIFIED
Arvin L SaylorsAustraliaAmy Elsner NEGOTIATION
Claire A BowleyFranceAmy Elsner NEW
Ashley E MacleadIndiaXuxue Feng QUALIFIED
Chavez L SlusarskiIndiaStephen Shaw QUALIFIED
Salvatore P MaletUnited KingdomAsiya Javayant NEW
Wickens Q BologniaCanadaOnyama Limba RENEWAL
Sinclair G SchemmerItalyAnna Fali QUALIFIED
Ricardo Q TollnerItalyXuxue Feng QUALIFIED
Kaitlin V BowleyFranceElwin Sharvill NEGOTIATION
Alejandro P GauchoGermanyIoni Bowcher NEW
Stacey G SlusarskiAustraliaIoni Bowcher NEGOTIATION
Claire D MaletGermanyAmy Elsner NEGOTIATION
Alejandro X RoysterIndiaAsiya Javayant NEGOTIATION
Mayumi P MaletCanadaIoni Bowcher NEW
James P CampainGermanyBernardo Dominic NEGOTIATION
Faith N OstroskyBrazilXuxue Feng UNQUALIFIED
Octavia O ChuiArgentinaElwin Sharvill RENEWAL
Leon Z GillianFranceXuxue Feng PROPOSAL
Ashley N PoquetteIndiaBernardo Dominic UNQUALIFIED
Leja T MaletItalyXuxue Feng NEW
Ivar J FollerUnited KingdomAmy Elsner NEW
Claire N PoquetteRussiaAmy Elsner PROPOSAL
Faith E BowleyAustraliaOnyama Limba NEGOTIATION
James B FollerSpainBernardo Dominic NEGOTIATION
Chavez B GillianArgentinaIoni Bowcher PROPOSAL
Stacey Q MarrierGermanyBernardo Dominic NEW
Stacey Y InouyeUnited KingdomXuxue Feng NEW
Nicolas P CampainUnited KingdomIvan Magalhaes NEGOTIATION
Maria K WhobreyAustraliaAsiya Javayant QUALIFIED
Mujtaba V KuskoUnited KingdomOnyama Limba QUALIFIED
Morrow R OldroydBrazilAnna Fali QUALIFIED
Jeanfrancois M SaylorsBrazilElwin Sharvill QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Francesco P GillianBrazilIoni Bowcher NEW
Francesco T FlosiFranceAmy Elsner QUALIFIED
Munro G GarufiItalyOnyama Limba PROPOSAL
Antonio Y ChuiSpainStephen Shaw NEGOTIATION
Aika A GauchoRussiaOnyama Limba QUALIFIED
Leon F ButtArgentinaAnna Fali QUALIFIED
Izzy O BriddickJapanIvan Magalhaes RENEWAL
Sinclair K NestleGermanyAsiya Javayant RENEWAL
Emily I MaletRussiaAnna Fali PROPOSAL
David X GillianArgentinaStephen Shaw RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Emily H DilliardBrazil2026-06-30Benton, John B Jr RENEWAL35Xuxue Feng
1001Silvio H FerenczItaly2026-07-07Dorl, James J Esq RENEWAL78Ivan Magalhaes
1002Octavia R MorascaArgentina2026-06-12Benton, John B Jr NEGOTIATION52Anna Fali
1003Claire G DilliardUnited Kingdom2026-06-15Morlong Associates QUALIFIED45Bernardo Dominic
1004Nicolas Y WieserCanada2026-07-07Buckley Miller Wright UNQUALIFIED0Ivan Magalhaes
1005Francesco R CaudyIndia2026-06-22Buckley Miller Wright RENEWAL33Stephen Shaw
1006Isabel C RoysterIndia2026-06-27Feiner Bros QUALIFIED67Stephen Shaw
1007Izzy S MarrierFrance2026-06-29Buckley Miller Wright QUALIFIED43Ioni Bowcher
1008Juan J KolmetzUnited Kingdom2026-07-01Rousseaux, Michael Esq NEW27Xuxue Feng
1009Mujtaba X GarufiCanada2026-07-05Buckley Miller Wright PROPOSAL26Ivan Magalhaes
1010Deepesh F MorascaIndia2026-07-07Truhlar And Truhlar Attys RENEWAL86Anna Fali
1011Maria I PerinFrance2026-06-17Buckley Miller Wright NEW98Stephen Shaw
1012Aruna Z FollerArgentina2026-06-20Printing Dimensions PROPOSAL97Onyama Limba
1013Tony A GillianFrance2026-06-12Buckley Miller Wright NEGOTIATION15Amy Elsner
1014Francesco M AmigonItaly2026-07-04Buckley Miller Wright QUALIFIED20Amy Elsner
1015Aruna J BriddickBrazil2026-07-04Rangoni Of Florence QUALIFIED12Anna Fali
1016Ashley T OstroskyArgentina2026-07-08Feiner Bros UNQUALIFIED77Amy Elsner
1017Leja G CampainIndia2026-06-16Chanay, Jeffrey A Esq QUALIFIED87Xuxue Feng
1018Deepesh T VenereIndia2026-06-11King, Christopher A Esq UNQUALIFIED44Elwin Sharvill
1019Johnson I OstroskyAustralia2026-06-15Feiner Bros NEGOTIATION19Ioni Bowcher
1020Morrow E DoeSpain2026-06-12Feiner Bros UNQUALIFIED98Bernardo Dominic
1021Cody D CaudyItaly2026-06-24Commercial Press NEGOTIATION17Anna Fali
1022Isabel Q KolmetzBrazil2026-07-03Rangoni Of Florence QUALIFIED85Asiya Javayant
1023Ashley D MaletIndia2026-06-11Commercial Press NEW99Bernardo Dominic
1024Claire O InouyeBrazil2026-06-09Printing Dimensions UNQUALIFIED16Bernardo Dominic
1025Greenwood Z DilliardArgentina2026-06-15Chemel, James L Cpa RENEWAL99Elwin Sharvill
1026Morrow G FerenczArgentina2026-06-24Commercial Press PROPOSAL39Ioni Bowcher
1027Maisha Q SaylorsUnited Kingdom2026-07-04Truhlar And Truhlar Attys UNQUALIFIED98Onyama Limba
1028Johnson U FlosiGermany2026-07-04Chapman, Ross E Esq QUALIFIED16Ioni Bowcher
1029Ashley P SergiRussia2026-06-15Benton, John B Jr QUALIFIED63Amy Elsner
1030Chavez M GauchoSpain2026-07-01Commercial Press RENEWAL8Ioni Bowcher
1031Jefferson O FerenczItaly2026-06-24Feltz Printing Service QUALIFIED66Anna Fali
1032Deepesh J SchemmerJapan2026-06-16Rangoni Of Florence UNQUALIFIED78Asiya Javayant
1033Misaki M CaldareraGermany2026-06-19Chapman, Ross E Esq NEGOTIATION77Onyama Limba
1034Greenwood O FollerJapan2026-06-11Chapman, Ross E Esq UNQUALIFIED55Ioni Bowcher
1035Julie I VocelkaItaly2026-06-28Morlong Associates NEGOTIATION93Amy Elsner
1036Misaki R SlusarskiAustralia2026-07-05Benton, John B Jr NEGOTIATION26Asiya Javayant
1037Adams D DoeIndia2026-06-13Chapman, Ross E Esq PROPOSAL57Onyama Limba
1038Aika G SchemmerItaly2026-06-20Benton, John B Jr RENEWAL14Amy Elsner
1039Izzy S NickaItaly2026-07-03Morlong Associates RENEWAL63Ioni Bowcher
1040Izzy K ShinkoItaly2026-06-27Feltz Printing Service NEW71Xuxue Feng
1041Sinclair G PoquetteRussia2026-06-25Rangoni Of Florence RENEWAL49Amy Elsner
1042Julie Q IturbideFrance2026-06-15Truhlar And Truhlar Attys NEW29Ivan Magalhaes
1043Stacey K StockhamUnited Kingdom2026-07-08Truhlar And Truhlar Attys UNQUALIFIED97Xuxue Feng
1044Deepesh H BriddickFrance2026-06-16Commercial Press NEW29Ivan Magalhaes
1045Maria N BologniaRussia2026-07-07Morlong Associates NEW42Xuxue Feng
1046Claire V RimIndia2026-06-29Feltz Printing Service NEW93Ivan Magalhaes
1047Antonio M AmigonAustralia2026-06-29Feiner Bros NEGOTIATION13Anna Fali
1048Silvio I OldroydGermany2026-07-07Feltz Printing Service QUALIFIED70Ioni Bowcher
1049Jennifer O MacleadJapan2026-06-20Printing Dimensions UNQUALIFIED97Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
James H GlickArgentinaStephen Shaw RENEWAL
Octavia P AmigonBrazilIoni Bowcher NEGOTIATION
Julie Q MarrierCanadaAnna Fali RENEWAL
Emily G SchemmerItalyIvan Magalhaes NEGOTIATION
Mayumi X MaletFranceIoni Bowcher RENEWAL
Aditya K CaldareraGermanyBernardo Dominic NEW
Johnson H GauchoFranceIvan Magalhaes NEW
Tony I ChuiJapanIvan Magalhaes RENEWAL
Julie J FlosiSpainAsiya Javayant NEW
Isabel Q RulapaughGermanyIoni Bowcher PROPOSAL
Aditya J MorascaArgentinaBernardo Dominic RENEWAL
Ashley O FlosiBrazilBernardo Dominic UNQUALIFIED
Leon P RutaRussiaBernardo Dominic NEGOTIATION
David R PoquetteCanadaIoni Bowcher NEGOTIATION
Stacey D MaletBrazilIvan Magalhaes PROPOSAL
Smith X BowleyIndiaAnna Fali RENEWAL
Misaki J RimAustraliaAnna Fali RENEWAL
Izzy N MaletJapanOnyama Limba RENEWAL
Costa J IturbideItalyAmy Elsner PROPOSAL
Alejandro R MaletItalyStephen Shaw RENEWAL
Aditya E GauchoIndiaAnna Fali NEGOTIATION
Morrow Z DilliardCanadaXuxue Feng NEGOTIATION
Antonio C StockhamItalyXuxue Feng RENEWAL
Tony I RulapaughAustraliaAmy Elsner QUALIFIED
Aruna G BowleyJapanAsiya Javayant NEW
Deepesh V FlosiFranceIvan Magalhaes NEW
Antonio Q NestleJapanIoni Bowcher UNQUALIFIED
James O MarrierSpainAsiya Javayant NEGOTIATION
Greenwood C SchemmerJapanStephen Shaw UNQUALIFIED
Leon J ButtArgentinaIvan Magalhaes NEW
Johnson T OldroydArgentinaStephen Shaw RENEWAL
Morrow I MorascaGermanyOnyama Limba UNQUALIFIED
Jeanfrancois S GlickArgentinaAsiya Javayant PROPOSAL
Cody K NickaGermanyElwin Sharvill NEGOTIATION
Aditya Y FlosiArgentinaAsiya Javayant PROPOSAL
Mayumi F GauchoFranceAsiya Javayant RENEWAL
Izzy D IturbideItalyAmy Elsner NEW
Arvin J CaldareraBrazilStephen Shaw UNQUALIFIED
Leja Q InouyeAustraliaStephen Shaw NEGOTIATION
Greenwood S GlickSpainAmy Elsner NEW
Greenwood Q InouyeUnited KingdomElwin Sharvill PROPOSAL
Jefferson P GillianFranceIoni Bowcher QUALIFIED
Juan Z SlusarskiArgentinaAsiya Javayant QUALIFIED
Emily Z OldroydSpainAsiya Javayant NEW
Chavez B ChuiItalyIvan Magalhaes QUALIFIED
Aditya G FollerBrazilAnna Fali UNQUALIFIED
Jones U FlosiIndiaStephen Shaw RENEWAL
Greenwood A SaylorsSpainIvan Magalhaes RENEWAL
Maria N RutaRussiaOnyama Limba QUALIFIED
Francesco W RutaJapanAmy Elsner NEGOTIATION
Frozen Columns
Name
Mayumi B Butt
Jennifer W Campain
Morrow C Poquette
Octavia S Nicka
Leon R Whobrey
Kaitlin U Doe
Izzy R Stockham
Salvatore D Saylors
Salvatore R Foller
Sinclair Q Venere
Misaki I Foller
Jeanfrancois F Saylors
Mujtaba R Oldroyd
Salvatore C Chui
Arvin V Inouye
Aditya O Garufi
Rodrigues D Oldroyd
Isabel I Stenseth
Aika Q Stockham
Smith J Foller
Maria W Vocelka
Deepesh J Saylors
Jefferson P Inouye
Juan G Bolognia
Aruna E Waycott
Adams L Glick
Murillo P Stockham
Tony G Royster
Jennifer T Malet
Johnson I Briddick
Greenwood X Campain
Greenwood H Sergi
Maisha N Kusko
Leon S Darakjy
Darci X Nicka
Wickens R Iturbide
Faith I Slusarski
Greenwood C Figeroa
Greenwood Z Flosi
Costa V Saylors
Adams Y Bolognia
David H Gaucho
Leon F Schemmer
Arvin T Bolognia
Claire Q Ostrosky
Aruna M Flosi
Aruna J Royster
Jefferson I Waycott
Costa F Oldroyd
Maria K Royster
IdCountryDate
1000Argentina2026-06-11
1001Australia2026-07-07
1002Russia2026-06-12
1003Brazil2026-06-19
1004Canada2026-06-24
1005Brazil2026-06-24
1006Russia2026-06-26
1007Australia2026-06-22
1008Brazil2026-06-28
1009United Kingdom2026-06-15
1010Italy2026-06-09
1011Spain2026-06-29
1012Australia2026-06-13
1013India2026-06-17
1014France2026-06-11
1015Italy2026-06-25
1016India2026-06-29
1017Russia2026-07-01
1018Spain2026-07-07
1019Australia2026-06-09
1020Japan2026-06-30
1021Brazil2026-06-19
1022Canada2026-06-29
1023Australia2026-07-06
1024Russia2026-06-19
1025Spain2026-06-24
1026India2026-06-12
1027France2026-07-04
1028United Kingdom2026-06-15
1029Australia2026-06-15
1030Australia2026-06-24
1031Argentina2026-06-22
1032Japan2026-06-13
1033Canada2026-06-20
1034Spain2026-06-26
1035Spain2026-06-12
1036Spain2026-06-20
1037India2026-07-08
1038Russia2026-07-07
1039France2026-06-26
1040Germany2026-07-07
1041Spain2026-06-12
1042Argentina2026-06-26
1043Japan2026-06-19
1044Argentina2026-06-30
1045Japan2026-07-01
1046Russia2026-06-22
1047Germany2026-06-20
1048Italy2026-06-24
1049Australia2026-06-29

On-Demand Data

NameIdCountryDate
Cody M Whobrey1000Italy2026-06-13
Tony N Waycott1001Brazil2026-06-23
Tony Z Flosi1002Brazil2026-06-28
Julie F Dilliard1003Russia2026-06-29
Maisha U Stockham1004France2026-07-07
Claire F Foller1005Japan2026-06-14
Wickens Z Iturbide1006Italy2026-06-15
Julie C Ostrosky1007India2026-06-11
Leja B Doe1008Argentina2026-07-01
James I Ferencz1009France2026-06-22
Stacey A Nestle1010Spain2026-06-14
Misaki T Butt1011Brazil2026-06-27
Leja G Morasca1012United Kingdom2026-06-28
Nicolas A Garufi1013India2026-06-27
Kadeem O Slusarski1014Japan2026-07-02
Isabel H Rulapaugh1015Canada2026-07-04
Maisha V Inouye1016Japan2026-07-03
Aika C Bolognia1017Canada2026-07-07
Ashley N Marrier1018Russia2026-07-06
Izzy I Kusko1019Brazil2026-06-11
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Alejandro X MaletAustraliaStephen Shaw NEGOTIATION
Jeanfrancois E PaprockiIndiaStephen Shaw QUALIFIED
Sinclair T PaprockiGermanyIvan Magalhaes PROPOSAL
Maisha F MarrierGermanyAmy Elsner UNQUALIFIED
Cody P PaprockiBrazilBernardo Dominic UNQUALIFIED
Leon Z DilliardJapanOnyama Limba QUALIFIED
Mujtaba G BowleyCanadaAmy Elsner PROPOSAL
Rodrigues U RimSpainAmy Elsner UNQUALIFIED
Chavez V ButtAustraliaBernardo Dominic NEGOTIATION
Ashley V MaletIndiaBernardo Dominic RENEWAL
David I ButtGermanyStephen Shaw NEW
Mujtaba K KolmetzIndiaIvan Magalhaes NEW
Alejandro V IturbideArgentinaBernardo Dominic PROPOSAL
Ivar E OstroskyRussiaAnna Fali NEW
Murillo B InouyeGermanyBernardo Dominic PROPOSAL
Munro T GillianArgentinaAnna Fali PROPOSAL
Arvin O InouyeItalyAsiya Javayant QUALIFIED
Johnson L SergiIndiaStephen Shaw PROPOSAL
Arvin Y PoquetteIndiaXuxue Feng QUALIFIED
Aika O IturbideCanadaElwin Sharvill QUALIFIED
Darci G DilliardItalyIvan Magalhaes RENEWAL
Juan V OstroskyFranceXuxue Feng PROPOSAL
Misaki Y IturbideBrazilAmy Elsner NEW
Izzy X WaycottJapanBernardo Dominic NEGOTIATION
Salvatore D BowleyRussiaAsiya Javayant QUALIFIED
Greenwood A WieserSpainStephen Shaw NEW
Munro Y ButtFranceElwin Sharvill QUALIFIED
Nicolas I MarrierGermanyIvan Magalhaes NEW
Adams A AmigonJapanBernardo Dominic UNQUALIFIED
Cody J BowleyAustraliaStephen Shaw NEGOTIATION
Jefferson Q OldroydGermanyElwin Sharvill RENEWAL
Nicolas T RutaSpainIvan Magalhaes NEW
Chavez Y GarufiGermanyBernardo Dominic QUALIFIED
Stacey P StockhamJapanXuxue Feng UNQUALIFIED
Clifford T RoysterRussiaAmy Elsner PROPOSAL
Clifford G MacleadItalyAnna Fali UNQUALIFIED
Maria D FerenczRussiaStephen Shaw NEGOTIATION
David X DoeCanadaAmy Elsner RENEWAL
Clifford H BriddickBrazilIoni Bowcher RENEWAL
Arvin D InouyeAustraliaAnna Fali 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>