Locale

Change the locale of the datepicker, schedule and client side validation messages.

Language
English
French
German
Italian
Korean
Spanish
Catalan
Dutch
Portuguese
Portuguese
Arabic
Czech
Greek
Persian
Hindi
Indonesian
Croatian
Japanese
Hungarian
Hebrew
Georgian
Lithuanian
Latvian
Norwegian
Polish
Romanian
Russian
Slovak
Slovenian
Serbian
Swedish
Turkish
Ukrainian
Vietnamese
Chinese
Chinese

Input Style

Free Themes

Built-in component themes created by the PrimeFaces Theme Designer.

PrimeOne Design

Saga Saga
Vela Vela
Arya Arya

Premium Themes

Premium themes are only available exclusively for PrimeFaces Theme Designer subscribers and therefore not included in PrimeFaces core.

Bootstrap light blue and dark blue themes are also included in PrimeFaces 10.x builds for Elite subscribers.

bootstrap4-blue-light Bootstrap Blue
bootstrap4-purple-light Bootstrap Purple
bootstrap4-blue-dark Bootstrap Blue
bootstrap4-purple-dark Bootstrap Purple

Legacy Free Themes

Luna Amber Luna Amber
Luna Blue Luna Blue
Luna Green Luna Green
Luna Pink Luna Pink
Nova Nova
Nova Nova Alt
Nova Nova Accent

PREMIUM TEMPLATES

Create awesome applications in no time using the premium templates and impress your users.

DataTable Scroll

Both vertical and horizontal scrolling of the data is supported with optional frozen rows-columns and on-demand loading features.

Vertical
NameCountryRepresentativeStatus
Francesco K StensethSpainBernardo Dominic UNQUALIFIED
Isabel J WhobreyIndiaBernardo Dominic NEW
Arvin F OstroskySpainAnna Fali NEW
Jeanfrancois W AlbaresArgentinaAsiya Javayant UNQUALIFIED
Silvio P MarrierRussiaBernardo Dominic RENEWAL
Leon O ChuiCanadaOnyama Limba PROPOSAL
Sinclair D ButtAustraliaOnyama Limba QUALIFIED
Smith S VenereJapanAnna Fali PROPOSAL
James M WhobreyUnited KingdomStephen Shaw UNQUALIFIED
Ashley E WaycottArgentinaIvan Magalhaes UNQUALIFIED
Arvin C CaldareraRussiaBernardo Dominic NEW
Octavia X FlosiFranceAsiya Javayant NEGOTIATION
Octavia I KolmetzArgentinaXuxue Feng NEW
Chavez T ShinkoJapanAmy Elsner RENEWAL
Chavez K FlosiFranceBernardo Dominic NEGOTIATION
Tony U BowleySpainOnyama Limba NEW
Arvin M VocelkaUnited KingdomXuxue Feng RENEWAL
Morrow C StensethCanadaXuxue Feng NEGOTIATION
Cody B BriddickUnited KingdomIoni Bowcher QUALIFIED
Greenwood H WieserFranceOnyama Limba QUALIFIED
Francesco Q CaudyGermanyElwin Sharvill NEW
Mujtaba G AmigonSpainOnyama Limba UNQUALIFIED
Ricardo S WaycottArgentinaAmy Elsner RENEWAL
Antonio F WhobreyUnited KingdomBernardo Dominic PROPOSAL
Adams F VocelkaSpainBernardo Dominic QUALIFIED
Maisha X CampainArgentinaAnna Fali RENEWAL
Antonio O MacleadUnited KingdomOnyama Limba RENEWAL
Kadeem H FerenczBrazilXuxue Feng UNQUALIFIED
Leja J OstroskyCanadaAnna Fali PROPOSAL
Juan N VocelkaItalyAsiya Javayant QUALIFIED
Tony G NestleItalyIvan Magalhaes NEW
Aika F KuskoIndiaAmy Elsner NEGOTIATION
Arvin C IturbideRussiaElwin Sharvill NEW
Kadeem U PerinSpainAsiya Javayant PROPOSAL
Cody E MaletArgentinaAsiya Javayant NEW
Adams V WaycottCanadaBernardo Dominic NEGOTIATION
Rodrigues P GlickArgentinaAnna Fali NEGOTIATION
Tony B OstroskyCanadaOnyama Limba UNQUALIFIED
Aditya E RutaGermanyAmy Elsner NEW
Morrow G ShinkoCanadaAmy Elsner NEW
Jeanfrancois O MaletItalyStephen Shaw PROPOSAL
Kaitlin X FigeroaFranceOnyama Limba QUALIFIED
Jefferson A IturbideBrazilBernardo Dominic NEW
Clifford I ChuiIndiaXuxue Feng RENEWAL
Tony E BriddickSpainXuxue Feng NEW
Emily J DilliardAustraliaIoni Bowcher NEW
Nicolas Z TollnerCanadaElwin Sharvill RENEWAL
Antonio X MaletArgentinaAnna Fali PROPOSAL
Emily V FerenczFranceAnna Fali QUALIFIED
Claire S VenereFranceStephen Shaw QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Kadeem O ShinkoAustraliaStephen Shaw UNQUALIFIED
Jennifer W BowleyArgentinaIvan Magalhaes QUALIFIED
Stacey C MorascaAustraliaAmy Elsner NEW
Silvio I RoysterArgentinaOnyama Limba UNQUALIFIED
Ashley N GarufiJapanAmy Elsner RENEWAL
Stacey N RimCanadaIvan Magalhaes QUALIFIED
Morrow H FlosiRussiaBernardo Dominic RENEWAL
Costa E MarrierBrazilOnyama Limba UNQUALIFIED
Munro G ChuiItalyAnna Fali PROPOSAL
Arvin W RoysterArgentinaAsiya Javayant NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maisha Q AmigonFrance2024-04-20Rousseaux, Michael Esq PROPOSAL60Asiya Javayant
1001Aruna N TollnerFrance2024-04-15Chapman, Ross E Esq NEGOTIATION73Ioni Bowcher
1002Emily H KuskoAustralia2024-04-15Chemel, James L Cpa RENEWAL75Amy Elsner
1003Rodrigues J BriddickFrance2024-04-13Feltz Printing Service PROPOSAL40Amy Elsner
1004Arvin X DoeAustralia2024-04-27Printing Dimensions NEGOTIATION45Amy Elsner
1005Isabel O SlusarskiIndia2024-04-14Benton, John B Jr PROPOSAL78Ioni Bowcher
1006David A ButtUnited Kingdom2024-05-02Chapman, Ross E Esq QUALIFIED60Xuxue Feng
1007Silvio L GillianJapan2024-04-28Chanay, Jeffrey A Esq QUALIFIED73Ioni Bowcher
1008Octavia R ChuiIndia2024-05-05Rousseaux, Michael Esq NEGOTIATION94Ivan Magalhaes
1009Aika B BriddickIndia2024-04-24Truhlar And Truhlar Attys RENEWAL59Elwin Sharvill
1010Jeanfrancois L DarakjyArgentina2024-04-30Truhlar And Truhlar Attys RENEWAL97Ioni Bowcher
1011Smith Y MarrierBrazil2024-04-21Chapman, Ross E Esq PROPOSAL81Ioni Bowcher
1012Isabel W MarrierAustralia2024-04-28King, Christopher A Esq QUALIFIED6Stephen Shaw
1013Mayumi W MarrierSpain2024-05-06Printing Dimensions PROPOSAL30Xuxue Feng
1014Johnson E RulapaughRussia2024-04-21Morlong Associates NEW35Xuxue Feng
1015Aika T GillianFrance2024-04-13Chemel, James L Cpa UNQUALIFIED80Elwin Sharvill
1016Ashley P DilliardBrazil2024-04-28Chanay, Jeffrey A Esq PROPOSAL59Anna Fali
1017Arvin G BowleyAustralia2024-05-11Morlong Associates UNQUALIFIED88Onyama Limba
1018Jeanfrancois T RutaFrance2024-05-05Buckley Miller Wright RENEWAL5Xuxue Feng
1019Octavia M OldroydGermany2024-04-13Feiner Bros NEGOTIATION23Onyama Limba
1020James C CaldareraArgentina2024-05-09Chapman, Ross E Esq RENEWAL25Stephen Shaw
1021Mayumi U PoquetteIndia2024-04-27Commercial Press RENEWAL84Stephen Shaw
1022Jeanfrancois R GlickCanada2024-04-23King, Christopher A Esq NEW50Asiya Javayant
1023Jones K RutaAustralia2024-04-26Chapman, Ross E Esq NEGOTIATION84Elwin Sharvill
1024Francesco L ShinkoRussia2024-05-03Chemel, James L Cpa PROPOSAL70Ioni Bowcher
1025Darci P SaylorsArgentina2024-05-09Chanay, Jeffrey A Esq UNQUALIFIED51Anna Fali
1026Silvio K MorascaUnited Kingdom2024-05-06Feiner Bros QUALIFIED69Onyama Limba
1027Juan D NestleJapan2024-04-25Feiner Bros NEGOTIATION77Bernardo Dominic
1028Izzy G MaletItaly2024-05-07Feltz Printing Service PROPOSAL2Amy Elsner
1029Misaki U GlickItaly2024-05-10Commercial Press QUALIFIED65Onyama Limba
1030Jefferson N BologniaCanada2024-05-07Chanay, Jeffrey A Esq NEW62Asiya Javayant
1031Darci X RimGermany2024-04-26Printing Dimensions NEW22Bernardo Dominic
1032Johnson I MacleadFrance2024-04-28Buckley Miller Wright PROPOSAL23Asiya Javayant
1033Cody M FerenczSpain2024-04-25Printing Dimensions NEGOTIATION11Ivan Magalhaes
1034Silvio V OstroskyIndia2024-04-17Printing Dimensions NEGOTIATION71Asiya Javayant
1035Chavez M CaldareraArgentina2024-04-23King, Christopher A Esq NEGOTIATION88Bernardo Dominic
1036Ricardo U ShinkoJapan2024-05-04Buckley Miller Wright UNQUALIFIED61Amy Elsner
1037Smith U FlosiFrance2024-04-13Feiner Bros NEW41Xuxue Feng
1038Munro K OldroydAustralia2024-04-28Feiner Bros NEW87Anna Fali
1039Silvio O AlbaresFrance2024-04-20Feiner Bros NEW93Onyama Limba
1040Greenwood K InouyeJapan2024-05-10Feiner Bros NEGOTIATION47Onyama Limba
1041Darci S SlusarskiAustralia2024-04-19Chapman, Ross E Esq UNQUALIFIED56Anna Fali
1042Clifford C FlosiCanada2024-04-28Morlong Associates QUALIFIED51Bernardo Dominic
1043Mayumi M VocelkaItaly2024-04-26Rousseaux, Michael Esq PROPOSAL80Onyama Limba
1044Maisha O MaletJapan2024-04-19Buckley Miller Wright RENEWAL94Ivan Magalhaes
1045Faith H FollerIndia2024-05-10King, Christopher A Esq NEW48Onyama Limba
1046Ricardo L BriddickJapan2024-05-04Benton, John B Jr QUALIFIED27Stephen Shaw
1047Silvio Z ButtUnited Kingdom2024-04-17Chanay, Jeffrey A Esq NEGOTIATION79Xuxue Feng
1048Maisha O DarakjyBrazil2024-05-03Truhlar And Truhlar Attys RENEWAL31Ioni Bowcher
1049Kaitlin H RutaJapan2024-04-13Chapman, Ross E Esq RENEWAL29Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Nicolas U SergiJapanIvan Magalhaes RENEWAL
Salvatore U CaudyFranceXuxue Feng PROPOSAL
Izzy B DoeUnited KingdomStephen Shaw UNQUALIFIED
Aruna I RutaGermanyIvan Magalhaes QUALIFIED
Octavia O GillianSpainAsiya Javayant NEW
Jennifer G ButtRussiaElwin Sharvill NEGOTIATION
Tony M FigeroaItalyStephen Shaw QUALIFIED
Kaitlin I VocelkaRussiaIvan Magalhaes NEW
Deepesh U GlickCanadaOnyama Limba NEW
Claire G TollnerUnited KingdomIoni Bowcher NEGOTIATION
Aruna Q WaycottAustraliaOnyama Limba RENEWAL
Greenwood E SchemmerBrazilStephen Shaw UNQUALIFIED
Antonio I WieserCanadaAsiya Javayant RENEWAL
Misaki G MacleadArgentinaAsiya Javayant NEW
Izzy D NestleArgentinaOnyama Limba NEW
Leja G SergiGermanyXuxue Feng PROPOSAL
Maisha V FigeroaIndiaIvan Magalhaes NEGOTIATION
Costa V RulapaughAustraliaAmy Elsner PROPOSAL
Mujtaba N CampainJapanAnna Fali QUALIFIED
Smith R IturbideBrazilXuxue Feng UNQUALIFIED
Leja E MacleadRussiaAsiya Javayant QUALIFIED
Rodrigues M StensethFranceAmy Elsner QUALIFIED
Misaki F MacleadRussiaAmy Elsner RENEWAL
Kadeem H MorascaRussiaBernardo Dominic NEW
Mayumi Y FollerSpainElwin Sharvill RENEWAL
Aditya I StensethRussiaAmy Elsner NEW
Salvatore W MarrierFranceElwin Sharvill RENEWAL
Juan F RimJapanBernardo Dominic UNQUALIFIED
Salvatore N SaylorsAustraliaStephen Shaw RENEWAL
Kaitlin V RimUnited KingdomIoni Bowcher PROPOSAL
Julie W KolmetzUnited KingdomBernardo Dominic UNQUALIFIED
Francesco Q GlickGermanyBernardo Dominic NEW
Juan W PoquetteGermanyIvan Magalhaes PROPOSAL
Morrow F StockhamBrazilAsiya Javayant NEW
Maisha T ButtCanadaIoni Bowcher QUALIFIED
Rodrigues E CaudyJapanAnna Fali QUALIFIED
Jeanfrancois T PoquetteBrazilStephen Shaw QUALIFIED
Clifford E DilliardAustraliaStephen Shaw NEW
Mujtaba L PerinGermanyXuxue Feng UNQUALIFIED
Tony A IturbideCanadaBernardo Dominic NEGOTIATION
Juan O DarakjyJapanIvan Magalhaes RENEWAL
Aika K VocelkaAustraliaAnna Fali RENEWAL
Isabel J ShinkoGermanyAmy Elsner QUALIFIED
Antonio A MacleadIndiaElwin Sharvill RENEWAL
Kadeem X FerenczGermanyIoni Bowcher RENEWAL
Greenwood Z PoquetteGermanyAsiya Javayant NEGOTIATION
Aika G RulapaughSpainIvan Magalhaes NEW
Julie S VocelkaJapanIvan Magalhaes QUALIFIED
Claire Z KuskoUnited KingdomElwin Sharvill PROPOSAL
Ivar G MaletArgentinaAsiya Javayant QUALIFIED
Frozen Columns
Name
Johnson N Butt
Nicolas W Glick
Jones P Tollner
Munro W Caudy
Mayumi C Malet
Sinclair H Wieser
Isabel V Caldarera
Mujtaba J Oldroyd
Faith W Butt
Aruna L Rim
Silvio K Poquette
Sinclair N Slusarski
Antonio E Iturbide
Munro L Slusarski
Munro D Vocelka
Julie W Gaucho
Leja A Slusarski
Jefferson I Vocelka
Johnson Z Figeroa
Munro A Venere
Greenwood A Foller
Izzy R Glick
Rodrigues R Foller
Smith Z Kolmetz
Ricardo F Bowley
Munro L Marrier
Aditya F Nestle
Darci X Wieser
Aika A Vocelka
Clifford D Ostrosky
Mayumi W Kolmetz
Kadeem K Briddick
Francesco X Bowley
Izzy J Vocelka
Johnson N Caldarera
Leja D Rulapaugh
Maria P Oldroyd
Maria I Gillian
Izzy C Stockham
Munro D Malet
Wickens W Waycott
Stacey P Caudy
Rodrigues Y Caldarera
Silvio E Saylors
Kadeem Q Perin
Kaitlin Q Malet
Cody C Ruta
Deepesh P Stenseth
Ivar W Chui
Jones S Marrier
IdCountryDate
1000Germany2024-04-15
1001Australia2024-04-23
1002Japan2024-05-07
1003Brazil2024-04-17
1004Russia2024-04-15
1005Australia2024-04-15
1006Russia2024-04-17
1007Germany2024-05-06
1008Germany2024-04-17
1009United Kingdom2024-04-25
1010Australia2024-05-12
1011Australia2024-05-10
1012Germany2024-04-25
1013Italy2024-05-10
1014Canada2024-05-02
1015Argentina2024-05-04
1016Brazil2024-04-20
1017Argentina2024-04-13
1018Italy2024-04-29
1019India2024-04-19
1020India2024-04-22
1021Italy2024-04-30
1022Japan2024-04-19
1023Japan2024-05-06
1024Japan2024-04-16
1025India2024-04-29
1026Argentina2024-04-24
1027Argentina2024-04-29
1028Australia2024-04-24
1029India2024-04-22
1030Russia2024-04-25
1031Brazil2024-04-26
1032Australia2024-05-03
1033Spain2024-04-13
1034Canada2024-04-24
1035United Kingdom2024-05-10
1036United Kingdom2024-04-25
1037Japan2024-05-01
1038Australia2024-04-15
1039Canada2024-05-07
1040Italy2024-04-24
1041India2024-04-23
1042Russia2024-04-16
1043United Kingdom2024-04-25
1044Canada2024-04-20
1045United Kingdom2024-04-27
1046Canada2024-05-01
1047Germany2024-04-20
1048India2024-05-03
1049India2024-04-14

On-Demand Data

NameIdCountryDate
Salvatore D Kusko1000Italy2024-04-13
Maisha D Marrier1001United Kingdom2024-05-06
Maria P Bolognia1002Canada2024-05-11
David A Whobrey1003India2024-04-28
Rodrigues I Tollner1004India2024-04-20
Francesco N Inouye1005Russia2024-05-04
Maria Z Doe1006Canada2024-05-07
Francesco M Morasca1007India2024-05-07
Costa C Briddick1008Italy2024-04-23
Kadeem D Darakjy1009Spain2024-05-11
Murillo V Butt1010Brazil2024-04-15
James U Marrier1011India2024-04-15
Mujtaba B Caldarera1012Australia2024-05-05
Claire F Amigon1013Argentina2024-04-29
Faith O Venere1014France2024-04-23
Aruna N Albares1015Australia2024-05-01
Kaitlin D Caudy1016Argentina2024-04-18
Salvatore J Perin1017Spain2024-05-12
Francesco Z Bowley1018Spain2024-04-19
Smith A Venere1019France2024-04-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ivar U GillianJapanAnna Fali QUALIFIED
Misaki S WaycottJapanAmy Elsner UNQUALIFIED
Leon T NestleArgentinaAnna Fali NEGOTIATION
Octavia X GillianArgentinaBernardo Dominic NEW
Clifford K PaprockiFranceAmy Elsner PROPOSAL
Silvio A WieserUnited KingdomIvan Magalhaes RENEWAL
Costa L SaylorsRussiaOnyama Limba UNQUALIFIED
Adams L BologniaArgentinaBernardo Dominic QUALIFIED
Francesco L StockhamUnited KingdomIoni Bowcher PROPOSAL
Rodrigues J GillianJapanAsiya Javayant NEGOTIATION
Julie V DoeAustraliaXuxue Feng NEGOTIATION
Misaki Y MorascaFranceOnyama Limba NEW
Octavia C MaletCanadaIoni Bowcher NEGOTIATION
Johnson G GlickItalyAmy Elsner QUALIFIED
Juan S DoeArgentinaOnyama Limba NEW
Silvio G TollnerFranceXuxue Feng UNQUALIFIED
Maria R GillianGermanyStephen Shaw NEW
Darci V BologniaJapanAsiya Javayant RENEWAL
Aruna Z SaylorsCanadaIvan Magalhaes RENEWAL
Rodrigues V CaudyGermanyAsiya Javayant PROPOSAL
Mayumi I BowleyGermanyIoni Bowcher NEGOTIATION
Isabel O MacleadArgentinaXuxue Feng QUALIFIED
Arvin N AlbaresCanadaAmy Elsner UNQUALIFIED
Silvio Z OstroskyCanadaIoni Bowcher PROPOSAL
Aruna T PaprockiIndiaElwin Sharvill NEW
Jefferson J ShinkoFranceElwin Sharvill NEW
Claire Y AlbaresJapanAmy Elsner NEW
Costa R GauchoJapanAmy Elsner PROPOSAL
Tony H RoysterIndiaStephen Shaw UNQUALIFIED
Izzy C InouyeBrazilStephen Shaw PROPOSAL
Leja X BowleyUnited KingdomIvan Magalhaes RENEWAL
Jones Y FlosiRussiaAmy Elsner UNQUALIFIED
Silvio I CaldareraRussiaOnyama Limba NEGOTIATION
Deepesh F VenereUnited KingdomAnna Fali NEW
Arvin E ShinkoArgentinaAsiya Javayant NEGOTIATION
Octavia P RimGermanyIoni Bowcher PROPOSAL
Morrow W FlosiGermanyOnyama Limba PROPOSAL
Emily Q KuskoIndiaElwin Sharvill NEW
Antonio O GarufiItalyAmy Elsner RENEWAL
Sinclair S GarufiBrazilAnna Fali PROPOSAL

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