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
Greenwood T GillianUnited KingdomIoni Bowcher NEW
Izzy Z GarufiUnited KingdomIoni Bowcher NEW
Darci N DoeUnited KingdomIoni Bowcher NEW
Aditya T BologniaBrazilAsiya Javayant UNQUALIFIED
Mujtaba J NickaJapanStephen Shaw QUALIFIED
Johnson O GillianItalyAnna Fali UNQUALIFIED
Juan A FerenczCanadaElwin Sharvill RENEWAL
Francesco T GarufiUnited KingdomOnyama Limba QUALIFIED
Emily T RutaArgentinaAnna Fali QUALIFIED
Morrow R RulapaughCanadaBernardo Dominic RENEWAL
Arvin I BowleyJapanIoni Bowcher QUALIFIED
Isabel Z NestleGermanyBernardo Dominic PROPOSAL
Sinclair I SchemmerCanadaIoni Bowcher PROPOSAL
Morrow G GarufiIndiaBernardo Dominic UNQUALIFIED
Smith U OldroydFranceIoni Bowcher NEGOTIATION
Tony R FollerGermanyAmy Elsner NEW
Misaki T CaudyRussiaIoni Bowcher PROPOSAL
Ricardo H GauchoJapanAmy Elsner RENEWAL
Ashley L BologniaSpainElwin Sharvill NEW
Clifford B RulapaughSpainOnyama Limba QUALIFIED
Clifford G CaldareraRussiaAsiya Javayant PROPOSAL
Leja Z RutaRussiaIoni Bowcher NEGOTIATION
Alejandro Q BologniaGermanyStephen Shaw RENEWAL
Murillo W SaylorsAustraliaElwin Sharvill QUALIFIED
Antonio P BriddickAustraliaXuxue Feng UNQUALIFIED
Wickens G FlosiUnited KingdomStephen Shaw NEGOTIATION
Ricardo G DilliardIndiaBernardo Dominic PROPOSAL
Kadeem O IturbideBrazilXuxue Feng NEW
Faith E InouyeCanadaAnna Fali UNQUALIFIED
Wickens C SergiIndiaIoni Bowcher UNQUALIFIED
Ashley C MarrierItalyAnna Fali NEGOTIATION
James I PaprockiRussiaAmy Elsner NEW
Alejandro M GlickArgentinaIvan Magalhaes UNQUALIFIED
Silvio H InouyeItalyIoni Bowcher NEGOTIATION
Claire S OstroskyBrazilIvan Magalhaes QUALIFIED
Wickens W BriddickRussiaAnna Fali QUALIFIED
Rodrigues A RulapaughRussiaStephen Shaw RENEWAL
Kaitlin Y GauchoArgentinaIvan Magalhaes QUALIFIED
Morrow Z FollerFranceIvan Magalhaes PROPOSAL
Munro G ShinkoRussiaStephen Shaw NEGOTIATION
David T SaylorsArgentinaBernardo Dominic UNQUALIFIED
Smith A AlbaresUnited KingdomBernardo Dominic NEW
Kadeem P VenereGermanyIoni Bowcher NEGOTIATION
Smith T GauchoUnited KingdomBernardo Dominic QUALIFIED
Ashley T SaylorsArgentinaAsiya Javayant NEGOTIATION
Arvin Z CampainSpainElwin Sharvill QUALIFIED
Darci D OstroskyArgentinaAnna Fali PROPOSAL
Jefferson S CaudyAustraliaIvan Magalhaes RENEWAL
Francesco Z SaylorsIndiaIvan Magalhaes PROPOSAL
Salvatore I FollerArgentinaIoni Bowcher QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Mujtaba S GlickArgentinaOnyama Limba RENEWAL
Tony A VenereRussiaAsiya Javayant RENEWAL
Nicolas S FigeroaItalyOnyama Limba NEW
Ashley J ChuiArgentinaBernardo Dominic NEW
Rodrigues G DilliardCanadaBernardo Dominic QUALIFIED
Leja I WieserArgentinaXuxue Feng UNQUALIFIED
Mujtaba F MarrierFranceStephen Shaw RENEWAL
Sinclair S VenereArgentinaOnyama Limba PROPOSAL
Clifford C CaudyItalyAsiya Javayant QUALIFIED
Claire V InouyeBrazilIoni Bowcher QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aditya M WaycottIndia2026-08-03Feiner Bros QUALIFIED50Bernardo Dominic
1001Jefferson T GarufiCanada2026-07-21King, Christopher A Esq NEGOTIATION91Ivan Magalhaes
1002Cody U StensethFrance2026-08-10Benton, John B Jr PROPOSAL73Elwin Sharvill
1003Claire P KuskoSpain2026-07-31Feltz Printing Service PROPOSAL28Stephen Shaw
1004Isabel P FerenczRussia2026-07-22Chapman, Ross E Esq PROPOSAL87Xuxue Feng
1005Kaitlin F FollerItaly2026-07-19Chapman, Ross E Esq NEGOTIATION68Onyama Limba
1006Jefferson B VenereGermany2026-07-29Truhlar And Truhlar Attys UNQUALIFIED49Anna Fali
1007Faith D NestleFrance2026-07-27Buckley Miller Wright NEW77Bernardo Dominic
1008Maisha T WhobreyRussia2026-07-29Chapman, Ross E Esq RENEWAL63Anna Fali
1009Isabel E VocelkaArgentina2026-07-27Chemel, James L Cpa NEGOTIATION94Stephen Shaw
1010Julie A GlickIndia2026-08-03Rousseaux, Michael Esq NEW17Asiya Javayant
1011Isabel O WieserGermany2026-07-26Chanay, Jeffrey A Esq UNQUALIFIED13Ivan Magalhaes
1012Leon N SchemmerJapan2026-07-21Chapman, Ross E Esq PROPOSAL73Onyama Limba
1013Leja T MaletRussia2026-08-09Commercial Press RENEWAL13Ioni Bowcher
1014Juan J GauchoSpain2026-08-10King, Christopher A Esq RENEWAL42Amy Elsner
1015Kaitlin B SaylorsArgentina2026-07-29Rousseaux, Michael Esq NEGOTIATION84Anna Fali
1016Misaki B PerinUnited Kingdom2026-08-14Benton, John B Jr RENEWAL96Elwin Sharvill
1017Mujtaba S SchemmerCanada2026-07-23Chapman, Ross E Esq NEW4Asiya Javayant
1018Arvin X GlickGermany2026-08-08Chapman, Ross E Esq NEW25Ioni Bowcher
1019Aditya A SlusarskiSpain2026-07-17Rousseaux, Michael Esq NEW29Elwin Sharvill
1020Clifford N NickaGermany2026-07-25Feltz Printing Service NEGOTIATION32Stephen Shaw
1021Morrow W FigeroaCanada2026-08-05Benton, John B Jr RENEWAL20Elwin Sharvill
1022Jones S GauchoItaly2026-08-07Printing Dimensions PROPOSAL17Onyama Limba
1023Ricardo J RutaUnited Kingdom2026-08-04Rangoni Of Florence UNQUALIFIED51Xuxue Feng
1024Mujtaba U DarakjyCanada2026-07-21Buckley Miller Wright QUALIFIED55Asiya Javayant
1025Ivar Q OldroydJapan2026-07-21Feltz Printing Service QUALIFIED41Ivan Magalhaes
1026Claire H WhobreyGermany2026-07-18Dorl, James J Esq RENEWAL58Ioni Bowcher
1027Ricardo E MacleadJapan2026-08-11Chemel, James L Cpa UNQUALIFIED19Bernardo Dominic
1028Jeanfrancois X BowleyUnited Kingdom2026-08-02Feltz Printing Service PROPOSAL23Amy Elsner
1029Maisha T BologniaAustralia2026-08-07Chapman, Ross E Esq QUALIFIED51Bernardo Dominic
1030Silvio D SchemmerAustralia2026-07-24Morlong Associates NEGOTIATION97Ioni Bowcher
1031Ricardo J GauchoCanada2026-08-09Chemel, James L Cpa UNQUALIFIED53Stephen Shaw
1032Costa D PerinBrazil2026-07-18Feiner Bros UNQUALIFIED28Stephen Shaw
1033Arvin O WieserArgentina2026-07-25Chemel, James L Cpa PROPOSAL4Ioni Bowcher
1034Rodrigues T OstroskyCanada2026-08-07Feltz Printing Service QUALIFIED70Ivan Magalhaes
1035Jeanfrancois E FerenczBrazil2026-07-19Chanay, Jeffrey A Esq PROPOSAL63Asiya Javayant
1036Mujtaba B SlusarskiItaly2026-07-25King, Christopher A Esq NEW51Bernardo Dominic
1037Clifford G MarrierItaly2026-08-13Rousseaux, Michael Esq QUALIFIED1Stephen Shaw
1038Octavia G FerenczBrazil2026-07-24Printing Dimensions RENEWAL50Elwin Sharvill
1039Alejandro G DoeArgentina2026-07-27Truhlar And Truhlar Attys QUALIFIED79Amy Elsner
1040Isabel Y RimItaly2026-07-17Feltz Printing Service PROPOSAL41Ioni Bowcher
1041Morrow Y PerinBrazil2026-08-06Chanay, Jeffrey A Esq NEW13Onyama Limba
1042Sinclair C GarufiJapan2026-08-05Chanay, Jeffrey A Esq RENEWAL84Ivan Magalhaes
1043Sinclair F IturbideCanada2026-07-18Rousseaux, Michael Esq UNQUALIFIED76Elwin Sharvill
1044Tony S DarakjyArgentina2026-07-21Buckley Miller Wright NEGOTIATION28Xuxue Feng
1045Izzy Y VocelkaArgentina2026-07-25Rousseaux, Michael Esq UNQUALIFIED83Anna Fali
1046Kaitlin S MorascaItaly2026-07-23Commercial Press UNQUALIFIED88Ivan Magalhaes
1047Octavia K ShinkoItaly2026-07-31Rousseaux, Michael Esq UNQUALIFIED24Ivan Magalhaes
1048Johnson T PaprockiFrance2026-08-06Chapman, Ross E Esq QUALIFIED60Elwin Sharvill
1049Clifford V InouyeItaly2026-07-27Rousseaux, Michael Esq QUALIFIED91Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Alejandro I RutaCanadaBernardo Dominic RENEWAL
Kaitlin Z TollnerBrazilXuxue Feng UNQUALIFIED
Johnson G InouyeSpainBernardo Dominic RENEWAL
Mujtaba F OldroydGermanyOnyama Limba RENEWAL
Sinclair H CaldareraUnited KingdomElwin Sharvill PROPOSAL
Kaitlin O RimIndiaBernardo Dominic PROPOSAL
Kaitlin G AmigonUnited KingdomStephen Shaw PROPOSAL
Salvatore Y MacleadItalyElwin Sharvill UNQUALIFIED
Adams C PerinBrazilIvan Magalhaes QUALIFIED
Cody L MaletJapanIoni Bowcher RENEWAL
Aditya N FollerUnited KingdomIvan Magalhaes QUALIFIED
Aika B MacleadIndiaAnna Fali PROPOSAL
Mayumi N StockhamBrazilAmy Elsner NEW
Mayumi E AlbaresAustraliaAsiya Javayant UNQUALIFIED
Emily S DarakjyFranceIvan Magalhaes PROPOSAL
Sinclair Z StensethAustraliaAmy Elsner UNQUALIFIED
Jefferson G PaprockiBrazilAsiya Javayant NEGOTIATION
Jefferson E VocelkaCanadaAnna Fali NEW
Mayumi G MarrierFranceAmy Elsner UNQUALIFIED
Wickens R StensethItalyIoni Bowcher NEW
Leon A TollnerCanadaStephen Shaw QUALIFIED
Murillo X StensethCanadaBernardo Dominic NEGOTIATION
Francesco Q FollerArgentinaXuxue Feng QUALIFIED
Greenwood S PerinSpainBernardo Dominic PROPOSAL
Tony E WaycottBrazilStephen Shaw QUALIFIED
Johnson F OstroskyAustraliaIoni Bowcher UNQUALIFIED
Darci V OldroydGermanyIoni Bowcher NEW
Stacey J MacleadArgentinaStephen Shaw QUALIFIED
Darci F GauchoFranceOnyama Limba NEGOTIATION
Aika R DilliardItalyAnna Fali NEW
Johnson O WaycottGermanyIoni Bowcher RENEWAL
Misaki D ChuiGermanyElwin Sharvill NEW
Faith S SlusarskiRussiaAmy Elsner PROPOSAL
David Q SergiRussiaXuxue Feng NEW
Izzy G ShinkoGermanyAmy Elsner RENEWAL
Octavia C RimJapanIoni Bowcher UNQUALIFIED
Munro K FigeroaFranceOnyama Limba NEW
Chavez Y CaudyBrazilAnna Fali QUALIFIED
Faith U WaycottBrazilBernardo Dominic NEW
Leon V NestleCanadaAnna Fali NEGOTIATION
Alejandro V SergiIndiaElwin Sharvill PROPOSAL
Nicolas Y DoeArgentinaStephen Shaw PROPOSAL
Morrow Z PoquetteRussiaBernardo Dominic UNQUALIFIED
Rodrigues F GarufiUnited KingdomAsiya Javayant NEGOTIATION
Emily K DarakjyItalyIvan Magalhaes PROPOSAL
Kadeem B BowleyGermanyAmy Elsner UNQUALIFIED
Stacey I CampainSpainBernardo Dominic RENEWAL
Morrow E FollerJapanAsiya Javayant UNQUALIFIED
Murillo C RoysterItalyAsiya Javayant NEW
Tony N StockhamRussiaElwin Sharvill NEW
Frozen Columns
Name
Julie G Sergi
Aruna F Glick
Salvatore D Amigon
Nicolas V Rulapaugh
Ivar W Poquette
Francesco V Perin
Mayumi X Darakjy
David N Bowley
Mujtaba T Flosi
Nicolas Y Inouye
Juan R Ostrosky
Emily R Ruta
Stacey Y Tollner
Izzy Z Royster
Faith K Gaucho
James U Ferencz
Maria G Amigon
David O Oldroyd
Cody Z Briddick
Leja P Caudy
James I Perin
Aika T Rulapaugh
Nicolas J Morasca
Jennifer A Inouye
Isabel E Tollner
Misaki W Gaucho
Sinclair I Gaucho
Aika Z Kusko
Jefferson H Doe
Nicolas D Iturbide
Wickens P Ferencz
Aika H Garufi
Stacey N Ruta
Maisha K Sergi
Munro P Waycott
Chavez I Albares
Faith M Rim
Stacey C Paprocki
Isabel L Kusko
Tony G Kolmetz
Ricardo A Ferencz
James Z Oldroyd
Tony Q Waycott
Jeanfrancois B Poquette
Silvio T Waycott
Wickens B Nestle
Ricardo W Briddick
Faith K Poquette
Juan Z Marrier
Jeanfrancois B Whobrey
IdCountryDate
1000Spain2026-07-22
1001Australia2026-07-20
1002Brazil2026-08-07
1003France2026-07-27
1004Russia2026-08-08
1005Spain2026-07-20
1006Canada2026-08-04
1007France2026-08-04
1008India2026-08-05
1009Germany2026-07-19
1010Australia2026-08-14
1011Spain2026-08-11
1012United Kingdom2026-08-02
1013Australia2026-07-20
1014Spain2026-08-13
1015United Kingdom2026-07-31
1016Italy2026-08-06
1017Russia2026-08-02
1018Germany2026-07-25
1019Canada2026-08-13
1020Russia2026-07-22
1021Argentina2026-08-04
1022France2026-08-03
1023Japan2026-07-16
1024Argentina2026-07-28
1025India2026-08-14
1026Canada2026-08-13
1027Spain2026-08-06
1028Argentina2026-07-29
1029India2026-07-30
1030France2026-07-20
1031Spain2026-08-06
1032Italy2026-08-06
1033Spain2026-08-03
1034Argentina2026-08-07
1035Brazil2026-08-02
1036Brazil2026-08-03
1037Japan2026-07-28
1038Italy2026-08-05
1039Australia2026-07-19
1040Spain2026-08-03
1041India2026-07-20
1042United Kingdom2026-08-08
1043United Kingdom2026-07-16
1044Canada2026-08-06
1045Australia2026-08-03
1046Russia2026-08-03
1047Canada2026-08-08
1048Japan2026-07-22
1049United Kingdom2026-08-03

On-Demand Data

NameIdCountryDate
Jefferson D Albares1000Australia2026-07-27
Stacey R Royster1001Argentina2026-08-09
Greenwood D Bolognia1002Italy2026-08-05
Isabel H Vocelka1003Australia2026-07-30
Arvin T Butt1004Canada2026-07-27
Johnson I Gillian1005Italy2026-08-12
Ashley Z Sergi1006Germany2026-08-08
Mayumi V Vocelka1007Argentina2026-08-10
Salvatore Q Inouye1008Argentina2026-08-02
David V Chui1009France2026-08-03
Kaitlin G Rim1010France2026-07-21
Ivar H Paprocki1011Australia2026-07-29
Ricardo C Nestle1012Japan2026-07-22
Cody H Sergi1013Japan2026-07-24
Johnson S Royster1014Japan2026-07-18
Tony J Stenseth1015Spain2026-08-11
Greenwood M Paprocki1016Canada2026-07-28
Izzy N Oldroyd1017Canada2026-07-16
Rodrigues T Wieser1018India2026-07-27
Julie N Doe1019Australia2026-08-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aditya T WieserArgentinaStephen Shaw NEW
Izzy D MacleadArgentinaAsiya Javayant PROPOSAL
Juan O MarrierIndiaAmy Elsner PROPOSAL
Arvin A FerenczItalyElwin Sharvill NEGOTIATION
Leon I CampainAustraliaAnna Fali PROPOSAL
Morrow X StockhamItalyOnyama Limba UNQUALIFIED
Murillo K MaletSpainOnyama Limba RENEWAL
Mayumi Z RoysterItalyAmy Elsner NEGOTIATION
Alejandro Q NickaIndiaStephen Shaw NEGOTIATION
Juan K BriddickUnited KingdomXuxue Feng PROPOSAL
Rodrigues Q SchemmerItalyIoni Bowcher PROPOSAL
Ashley B RoysterBrazilOnyama Limba NEGOTIATION
Cody D MaletJapanXuxue Feng NEGOTIATION
Stacey Z DarakjyJapanAmy Elsner UNQUALIFIED
Deepesh X PaprockiFranceIvan Magalhaes RENEWAL
Jefferson D NickaItalyOnyama Limba UNQUALIFIED
Cody C NickaArgentinaBernardo Dominic NEGOTIATION
Isabel L ButtArgentinaOnyama Limba QUALIFIED
Munro D SaylorsFranceIoni Bowcher RENEWAL
Cody L AmigonItalyOnyama Limba NEW
James H FigeroaFranceXuxue Feng UNQUALIFIED
Greenwood Y CampainBrazilAsiya Javayant QUALIFIED
Antonio O PoquetteItalyAmy Elsner UNQUALIFIED
Adams R InouyeFranceXuxue Feng UNQUALIFIED
Jones L FlosiAustraliaElwin Sharvill UNQUALIFIED
Jefferson Q CaldareraSpainElwin Sharvill NEW
Antonio G ButtArgentinaStephen Shaw NEGOTIATION
Julie Y IturbideAustraliaBernardo Dominic PROPOSAL
Adams K WaycottUnited KingdomXuxue Feng RENEWAL
Morrow Q StockhamSpainElwin Sharvill UNQUALIFIED
Silvio N RimArgentinaBernardo Dominic NEW
Morrow G FigeroaItalyOnyama Limba QUALIFIED
Silvio U MacleadSpainAnna Fali NEW
Faith Y ShinkoGermanyAsiya Javayant NEGOTIATION
Francesco C BriddickItalyOnyama Limba PROPOSAL
Mujtaba E MaletSpainBernardo Dominic RENEWAL
Isabel R PaprockiFranceElwin Sharvill QUALIFIED
Isabel N DilliardJapanOnyama Limba RENEWAL
Nicolas Z WieserSpainIoni Bowcher NEGOTIATION
Julie S CaudyJapanStephen 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>