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
Sinclair C RoysterGermanyXuxue Feng NEW
Kaitlin K FlosiBrazilBernardo Dominic PROPOSAL
Silvio Z VenereAustraliaAnna Fali QUALIFIED
Stacey Y MaletSpainXuxue Feng PROPOSAL
Jones C NickaItalyAmy Elsner UNQUALIFIED
Juan I NestleUnited KingdomElwin Sharvill RENEWAL
Maisha J SchemmerFranceIvan Magalhaes PROPOSAL
Emily W PaprockiBrazilXuxue Feng NEW
Munro H FlosiBrazilIvan Magalhaes NEW
Arvin Q GauchoBrazilStephen Shaw PROPOSAL
Costa K MaletGermanyAsiya Javayant QUALIFIED
Jeanfrancois V SchemmerJapanBernardo Dominic QUALIFIED
Isabel W BowleyGermanyXuxue Feng UNQUALIFIED
Claire C CampainIndiaAnna Fali RENEWAL
Misaki T CaldareraArgentinaAmy Elsner NEGOTIATION
Rodrigues T ChuiUnited KingdomAsiya Javayant UNQUALIFIED
Salvatore W FigeroaAustraliaOnyama Limba RENEWAL
Silvio L MaletItalyIoni Bowcher RENEWAL
Greenwood K TollnerAustraliaAnna Fali NEW
Salvatore Z DarakjyUnited KingdomStephen Shaw UNQUALIFIED
Johnson I CampainUnited KingdomIvan Magalhaes UNQUALIFIED
Izzy J CaldareraAustraliaAnna Fali RENEWAL
Nicolas B SaylorsSpainBernardo Dominic PROPOSAL
Emily Q RulapaughArgentinaBernardo Dominic NEGOTIATION
Alejandro E RimArgentinaXuxue Feng PROPOSAL
Maria K StensethArgentinaIoni Bowcher RENEWAL
Johnson Q CaldareraGermanyOnyama Limba RENEWAL
Claire X NickaItalyXuxue Feng UNQUALIFIED
Kadeem F RutaUnited KingdomElwin Sharvill NEGOTIATION
Sinclair Q ButtUnited KingdomBernardo Dominic QUALIFIED
Wickens T SchemmerRussiaIvan Magalhaes PROPOSAL
Francesco P DarakjyIndiaAmy Elsner RENEWAL
Murillo X VocelkaUnited KingdomAmy Elsner PROPOSAL
Clifford C NickaIndiaOnyama Limba NEGOTIATION
Mujtaba F KolmetzCanadaAmy Elsner QUALIFIED
Tony T FollerFranceIvan Magalhaes QUALIFIED
Salvatore C VocelkaIndiaAmy Elsner NEW
Mayumi M DarakjyBrazilOnyama Limba UNQUALIFIED
Misaki T TollnerSpainOnyama Limba QUALIFIED
Mujtaba P WieserSpainAsiya Javayant NEW
Arvin C MacleadSpainAsiya Javayant PROPOSAL
Murillo K ButtFranceOnyama Limba RENEWAL
Mayumi Y IturbideBrazilIvan Magalhaes NEGOTIATION
Mujtaba Q WaycottCanadaAsiya Javayant UNQUALIFIED
Wickens L DilliardJapanIvan Magalhaes NEW
Jeanfrancois H DoeUnited KingdomAmy Elsner UNQUALIFIED
Nicolas H CaudyBrazilStephen Shaw UNQUALIFIED
Munro H VocelkaAustraliaIoni Bowcher NEW
Tony G NickaBrazilStephen Shaw QUALIFIED
Faith F FerenczRussiaXuxue Feng NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Emily S OstroskyBrazilAsiya Javayant UNQUALIFIED
Kaitlin M VenereUnited KingdomStephen Shaw QUALIFIED
Kadeem E InouyeBrazilAsiya Javayant NEW
Salvatore E MaletJapanIoni Bowcher PROPOSAL
Leon Z GarufiItalyBernardo Dominic NEW
Francesco Z DoeFranceIoni Bowcher UNQUALIFIED
Arvin Z WaycottGermanyAnna Fali UNQUALIFIED
Rodrigues G DoeBrazilAnna Fali QUALIFIED
David I MarrierSpainAmy Elsner PROPOSAL
Adams K WhobreyAustraliaStephen Shaw PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Chavez M RimCanada2024-04-01Dorl, James J Esq RENEWAL70Ivan Magalhaes
1001David H KolmetzSpain2024-04-11Chemel, James L Cpa NEGOTIATION2Amy Elsner
1002Stacey O FollerUnited Kingdom2024-04-16Feiner Bros UNQUALIFIED73Anna Fali
1003Leja M CaudyCanada2024-04-07Feiner Bros QUALIFIED36Amy Elsner
1004Octavia Z ChuiGermany2024-04-12Chapman, Ross E Esq RENEWAL90Ioni Bowcher
1005Munro W KolmetzJapan2024-04-30Printing Dimensions RENEWAL78Ivan Magalhaes
1006Maisha Y SaylorsItaly2024-04-25Feiner Bros RENEWAL57Xuxue Feng
1007Rodrigues B PoquetteItaly2024-04-13Dorl, James J Esq NEW95Amy Elsner
1008Morrow Y SchemmerCanada2024-04-01Rousseaux, Michael Esq RENEWAL44Anna Fali
1009Leja W PerinUnited Kingdom2024-04-30Truhlar And Truhlar Attys PROPOSAL42Ivan Magalhaes
1010Stacey T BowleyJapan2024-04-17Feltz Printing Service NEGOTIATION74Anna Fali
1011Juan N GillianItaly2024-04-26Morlong Associates PROPOSAL39Bernardo Dominic
1012Julie M WhobreyAustralia2024-04-17Rangoni Of Florence NEGOTIATION0Amy Elsner
1013Greenwood F MaletIndia2024-04-17Rangoni Of Florence PROPOSAL58Ioni Bowcher
1014Ivar E IturbideRussia2024-04-02Benton, John B Jr NEW51Amy Elsner
1015Morrow B DoeIndia2024-04-02Rangoni Of Florence NEGOTIATION94Elwin Sharvill
1016Wickens P GarufiSpain2024-04-09Chanay, Jeffrey A Esq NEGOTIATION82Onyama Limba
1017Emily S StensethIndia2024-04-09Chanay, Jeffrey A Esq NEW34Ivan Magalhaes
1018Alejandro U GauchoBrazil2024-04-28Truhlar And Truhlar Attys NEGOTIATION29Ivan Magalhaes
1019Tony W RimSpain2024-04-14Truhlar And Truhlar Attys NEW47Onyama Limba
1020Kadeem S DilliardGermany2024-04-18Rangoni Of Florence NEW51Ioni Bowcher
1021Nicolas I PerinJapan2024-04-12Chemel, James L Cpa NEGOTIATION97Elwin Sharvill
1022Greenwood V FigeroaIndia2024-04-03Truhlar And Truhlar Attys UNQUALIFIED22Anna Fali
1023Munro E BowleySpain2024-04-12Rangoni Of Florence UNQUALIFIED31Asiya Javayant
1024Cody J CampainAustralia2024-04-01Rousseaux, Michael Esq NEW18Elwin Sharvill
1025Jefferson P VenereJapan2024-04-16Morlong Associates QUALIFIED5Onyama Limba
1026Jeanfrancois M GauchoJapan2024-04-26Commercial Press QUALIFIED33Amy Elsner
1027Leja Q PoquetteFrance2024-04-30Chapman, Ross E Esq RENEWAL60Stephen Shaw
1028Kadeem P AlbaresAustralia2024-04-29Rangoni Of Florence UNQUALIFIED79Ioni Bowcher
1029Octavia Q RulapaughIndia2024-04-17Commercial Press NEW78Asiya Javayant
1030Jones O TollnerCanada2024-04-21Buckley Miller Wright PROPOSAL5Xuxue Feng
1031Francesco J RoysterIndia2024-04-15Feiner Bros NEGOTIATION85Asiya Javayant
1032Johnson A DilliardBrazil2024-04-10Rangoni Of Florence QUALIFIED70Ivan Magalhaes
1033Tony C PerinFrance2024-04-04Rangoni Of Florence UNQUALIFIED62Stephen Shaw
1034Jennifer C PaprockiFrance2024-04-24Morlong Associates NEW64Anna Fali
1035Ashley B FollerCanada2024-04-23Rangoni Of Florence PROPOSAL39Elwin Sharvill
1036Alejandro W ChuiRussia2024-04-02Benton, John B Jr NEGOTIATION30Asiya Javayant
1037Kaitlin U CaudyArgentina2024-04-12King, Christopher A Esq NEGOTIATION89Anna Fali
1038Aika L MacleadArgentina2024-04-20Feiner Bros RENEWAL73Bernardo Dominic
1039Mujtaba S CampainFrance2024-04-04Rangoni Of Florence UNQUALIFIED10Onyama Limba
1040Wickens F AlbaresItaly2024-04-12Chanay, Jeffrey A Esq RENEWAL94Bernardo Dominic
1041Antonio N PerinItaly2024-04-21Dorl, James J Esq NEW44Xuxue Feng
1042Kaitlin J DilliardArgentina2024-04-21Dorl, James J Esq QUALIFIED41Stephen Shaw
1043Morrow H NickaFrance2024-04-19Chemel, James L Cpa NEW75Ivan Magalhaes
1044Aruna K AmigonFrance2024-04-08Feltz Printing Service PROPOSAL53Anna Fali
1045Costa H WaycottJapan2024-04-19Benton, John B Jr QUALIFIED60Onyama Limba
1046Johnson M BologniaRussia2024-04-25Feiner Bros QUALIFIED18Onyama Limba
1047Chavez A FigeroaBrazil2024-04-09Rangoni Of Florence NEGOTIATION18Stephen Shaw
1048Rodrigues V GillianGermany2024-04-24King, Christopher A Esq QUALIFIED98Ioni Bowcher
1049Leja Q MarrierSpain2024-04-16Buckley Miller Wright RENEWAL21Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Aditya A IturbideAustraliaXuxue Feng NEGOTIATION
Chavez T ButtArgentinaStephen Shaw PROPOSAL
Nicolas A VocelkaUnited KingdomElwin Sharvill QUALIFIED
James A AlbaresCanadaAmy Elsner UNQUALIFIED
Smith O ShinkoUnited KingdomAmy Elsner UNQUALIFIED
Clifford X StockhamArgentinaBernardo Dominic NEGOTIATION
Emily L GauchoSpainOnyama Limba NEW
Sinclair B MaletGermanyStephen Shaw UNQUALIFIED
Leja T AmigonAustraliaStephen Shaw QUALIFIED
Greenwood T CampainGermanyOnyama Limba RENEWAL
Emily V ButtRussiaIoni Bowcher QUALIFIED
James E NestleBrazilElwin Sharvill PROPOSAL
Leon C AlbaresFranceAmy Elsner PROPOSAL
Silvio S RimCanadaAmy Elsner UNQUALIFIED
Aika B SaylorsIndiaBernardo Dominic PROPOSAL
Sinclair I FigeroaItalyIoni Bowcher NEGOTIATION
Izzy G InouyeFranceBernardo Dominic RENEWAL
James O AmigonItalyAmy Elsner NEGOTIATION
Francesco M MarrierCanadaIoni Bowcher RENEWAL
Ricardo L GillianItalyIvan Magalhaes NEW
James W CaldareraRussiaElwin Sharvill UNQUALIFIED
Wickens H VenereItalyElwin Sharvill QUALIFIED
Aruna B GarufiGermanyStephen Shaw NEW
Munro A MaletIndiaAmy Elsner RENEWAL
Izzy A RimCanadaXuxue Feng RENEWAL
Silvio F KuskoGermanyIvan Magalhaes PROPOSAL
Jeanfrancois K ButtRussiaBernardo Dominic NEGOTIATION
Izzy R AmigonRussiaXuxue Feng QUALIFIED
Wickens G PerinIndiaStephen Shaw QUALIFIED
Izzy D CampainBrazilBernardo Dominic NEGOTIATION
Sinclair T FollerRussiaStephen Shaw NEW
Arvin O BriddickRussiaAnna Fali QUALIFIED
Juan D RulapaughUnited KingdomAsiya Javayant RENEWAL
Jeanfrancois C DilliardArgentinaBernardo Dominic QUALIFIED
Leon E PerinIndiaXuxue Feng UNQUALIFIED
Cody H OldroydUnited KingdomAsiya Javayant PROPOSAL
Ivar L BologniaSpainOnyama Limba NEW
Deepesh G CampainBrazilBernardo Dominic UNQUALIFIED
Faith J GarufiGermanyBernardo Dominic NEGOTIATION
Maisha I StensethFranceXuxue Feng NEW
Jefferson U CampainArgentinaStephen Shaw PROPOSAL
Adams P TollnerAustraliaAnna Fali PROPOSAL
Silvio F FollerUnited KingdomIoni Bowcher NEW
Claire S VocelkaRussiaStephen Shaw PROPOSAL
David Z SaylorsItalyBernardo Dominic UNQUALIFIED
Arvin V RulapaughCanadaAnna Fali NEGOTIATION
Costa D PaprockiJapanBernardo Dominic UNQUALIFIED
Jefferson B KolmetzArgentinaIoni Bowcher NEW
Francesco E OldroydSpainXuxue Feng PROPOSAL
Jeanfrancois Y BowleyUnited KingdomBernardo Dominic NEW
Frozen Columns
Name
Antonio U Poquette
Antonio F Poquette
Kaitlin T Paprocki
Tony N Sergi
Maria M Nestle
Misaki R Rulapaugh
Munro E Butt
David X Foller
Adams Z Albares
Faith J Chui
Nicolas Q Kusko
Adams M Kusko
Jennifer W Albares
Smith O Schemmer
Stacey D Amigon
Aika Z Glick
Claire Y Garufi
Silvio L Waycott
Julie X Bolognia
Cody X Oldroyd
Wickens C Paprocki
Kadeem X Chui
Aika H Slusarski
Jennifer H Slusarski
Tony X Ferencz
Maria Z Maclead
Faith M Nestle
Clifford I Doe
Stacey A Waycott
Izzy X Foller
Julie Z Oldroyd
Adams Y Perin
Maisha U Garufi
Ricardo B Rim
Greenwood L Kolmetz
Jones L Whobrey
Izzy A Garufi
Ivar V Dilliard
Nicolas E Albares
Mayumi J Stenseth
Juan Y Waycott
Claire H Whobrey
Munro P Kolmetz
Maisha V Shinko
Silvio N Darakjy
Darci R Doe
Francesco H Waycott
Ivar B Slusarski
Faith I Waycott
Faith D Gaucho
IdCountryDate
1000Argentina2024-04-16
1001France2024-04-16
1002United Kingdom2024-04-13
1003United Kingdom2024-04-04
1004India2024-04-20
1005France2024-04-13
1006Brazil2024-04-03
1007Italy2024-04-10
1008Italy2024-04-05
1009Argentina2024-04-24
1010Italy2024-04-12
1011France2024-04-24
1012Spain2024-04-27
1013Australia2024-04-17
1014Italy2024-04-18
1015India2024-04-04
1016Argentina2024-04-27
1017Russia2024-04-18
1018France2024-04-26
1019Japan2024-04-14
1020Italy2024-04-02
1021Russia2024-04-01
1022Japan2024-04-14
1023Italy2024-04-14
1024Russia2024-04-28
1025Italy2024-04-03
1026Australia2024-04-21
1027Germany2024-04-17
1028Canada2024-04-16
1029Italy2024-04-30
1030Argentina2024-04-19
1031United Kingdom2024-04-17
1032Russia2024-04-11
1033Germany2024-04-18
1034Brazil2024-04-07
1035Canada2024-04-18
1036France2024-04-08
1037France2024-04-02
1038France2024-04-16
1039France2024-04-27
1040Spain2024-04-29
1041Australia2024-04-01
1042France2024-04-06
1043Canada2024-04-25
1044United Kingdom2024-04-09
1045Germany2024-04-20
1046United Kingdom2024-04-12
1047United Kingdom2024-04-23
1048Germany2024-04-10
1049United Kingdom2024-04-12

On-Demand Data

NameIdCountryDate
Deepesh L Caldarera1000Spain2024-04-27
Stacey H Caldarera1001India2024-04-26
Emily T Glick1002Japan2024-04-13
Francesco D Maclead1003Argentina2024-04-09
Faith Y Garufi1004Australia2024-04-26
Munro G Inouye1005Argentina2024-04-21
Chavez Y Dilliard1006Italy2024-04-24
Aika B Figeroa1007India2024-04-08
Maisha T Doe1008United Kingdom2024-04-22
Faith X Chui1009Australia2024-04-11
Maria M Waycott1010United Kingdom2024-04-02
Izzy U Paprocki1011Japan2024-04-02
Jones Z Stockham1012Russia2024-04-15
Kaitlin I Whobrey1013Germany2024-04-29
Alejandro B Foller1014Russia2024-04-27
Morrow Y Amigon1015Canada2024-04-21
Faith L Perin1016Australia2024-04-11
Clifford L Kolmetz1017Brazil2024-04-06
Juan W Nicka1018Spain2024-04-19
Kaitlin T Perin1019India2024-04-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ivar Q ChuiItalyIoni Bowcher QUALIFIED
Izzy J KolmetzAustraliaAsiya Javayant NEW
Salvatore O AmigonIndiaIvan Magalhaes NEW
Mujtaba R KolmetzSpainAmy Elsner RENEWAL
Julie Q FigeroaSpainIoni Bowcher NEW
Mujtaba W WhobreyBrazilAsiya Javayant NEGOTIATION
Ivar Q TollnerIndiaIvan Magalhaes QUALIFIED
Faith H FollerBrazilAnna Fali NEW
Leon T FlosiFranceElwin Sharvill NEGOTIATION
Costa N ChuiBrazilIoni Bowcher PROPOSAL
Clifford G SergiUnited KingdomOnyama Limba QUALIFIED
Antonio C CampainUnited KingdomOnyama Limba RENEWAL
Emily L MaletBrazilAsiya Javayant QUALIFIED
Isabel M StockhamUnited KingdomStephen Shaw UNQUALIFIED
Johnson B CaudyAustraliaIoni Bowcher RENEWAL
Salvatore Q AlbaresJapanAnna Fali RENEWAL
Izzy Y StockhamJapanAsiya Javayant QUALIFIED
Ashley B PerinUnited KingdomXuxue Feng QUALIFIED
Salvatore J RulapaughUnited KingdomStephen Shaw UNQUALIFIED
Maria H ButtAustraliaAnna Fali NEW
Ivar O FlosiUnited KingdomXuxue Feng QUALIFIED
Sinclair L FlosiBrazilXuxue Feng UNQUALIFIED
Morrow I SlusarskiGermanyStephen Shaw QUALIFIED
Juan O MaletItalyBernardo Dominic NEGOTIATION
Costa D BowleyIndiaAmy Elsner PROPOSAL
Rodrigues E WhobreyBrazilElwin Sharvill NEW
Arvin M AlbaresCanadaAnna Fali PROPOSAL
Aditya N OldroydBrazilAsiya Javayant UNQUALIFIED
Rodrigues T RutaAustraliaBernardo Dominic NEW
Johnson A FigeroaAustraliaIvan Magalhaes RENEWAL
Murillo C FollerGermanyXuxue Feng UNQUALIFIED
Octavia G RutaAustraliaIoni Bowcher RENEWAL
Clifford N RimFranceAnna Fali QUALIFIED
James Q VocelkaItalyAmy Elsner NEGOTIATION
Alejandro Q StockhamAustraliaElwin Sharvill NEGOTIATION
Antonio J RoysterCanadaAsiya Javayant QUALIFIED
Alejandro J PerinItalyIoni Bowcher NEGOTIATION
Mujtaba F MorascaAustraliaAmy Elsner RENEWAL
Clifford Z DoeIndiaXuxue Feng QUALIFIED
Stacey K PoquetteItalyElwin Sharvill 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>