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
Johnson O RutaGermanyAmy Elsner PROPOSAL
Juan Z RoysterGermanyXuxue Feng RENEWAL
Rodrigues D RoysterItalyStephen Shaw UNQUALIFIED
Alejandro M MaletAustraliaElwin Sharvill NEGOTIATION
Jennifer X DilliardBrazilAmy Elsner NEGOTIATION
Kadeem A WieserItalyBernardo Dominic NEW
Nicolas G CampainRussiaIoni Bowcher NEW
Faith C FollerSpainIvan Magalhaes PROPOSAL
Cody R MacleadJapanStephen Shaw UNQUALIFIED
Stacey T ChuiArgentinaIvan Magalhaes RENEWAL
Mayumi G GauchoSpainStephen Shaw NEGOTIATION
Adams R SergiFranceXuxue Feng RENEWAL
Claire E AmigonGermanyElwin Sharvill NEW
Jefferson C KuskoFranceIoni Bowcher NEGOTIATION
Faith P RoysterRussiaAnna Fali NEW
Juan B GlickArgentinaElwin Sharvill NEW
Rodrigues Y GlickBrazilIvan Magalhaes NEW
Ricardo U WaycottGermanyBernardo Dominic NEW
Antonio A BowleyRussiaAsiya Javayant QUALIFIED
Jones O SchemmerSpainOnyama Limba RENEWAL
Darci G WhobreyFranceElwin Sharvill QUALIFIED
Tony M MaletItalyXuxue Feng NEGOTIATION
Antonio T SchemmerFranceBernardo Dominic RENEWAL
Julie M PerinAustraliaStephen Shaw UNQUALIFIED
Deepesh U NickaCanadaAmy Elsner PROPOSAL
Arvin D KolmetzJapanElwin Sharvill PROPOSAL
Leon G CampainGermanyIvan Magalhaes RENEWAL
James Z PaprockiBrazilIoni Bowcher UNQUALIFIED
Julie I WieserRussiaAmy Elsner QUALIFIED
Leja D OldroydUnited KingdomAnna Fali RENEWAL
Kadeem O DilliardBrazilAnna Fali RENEWAL
Misaki V RulapaughCanadaAsiya Javayant UNQUALIFIED
Costa N TollnerItalyAsiya Javayant NEGOTIATION
Mayumi F IturbideIndiaElwin Sharvill NEW
David S NickaSpainBernardo Dominic PROPOSAL
Claire U AlbaresUnited KingdomAsiya Javayant NEGOTIATION
Mayumi J PerinJapanOnyama Limba QUALIFIED
Cody F GarufiBrazilIvan Magalhaes PROPOSAL
Julie D SlusarskiArgentinaOnyama Limba QUALIFIED
Cody K RimAustraliaXuxue Feng NEW
Izzy D OstroskyAustraliaIoni Bowcher QUALIFIED
David T FlosiArgentinaIvan Magalhaes NEW
Cody R AlbaresFranceStephen Shaw NEW
Tony R AmigonCanadaOnyama Limba PROPOSAL
Alejandro X StensethSpainXuxue Feng QUALIFIED
Julie U FigeroaAustraliaStephen Shaw PROPOSAL
Antonio B AlbaresItalyIvan Magalhaes NEW
James D MaletUnited KingdomAnna Fali PROPOSAL
Ashley C OstroskyRussiaAnna Fali UNQUALIFIED
Emily B FigeroaSpainAsiya Javayant QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Izzy A FollerBrazilAmy Elsner PROPOSAL
Ricardo G WhobreyCanadaStephen Shaw PROPOSAL
Octavia C DarakjyAustraliaIvan Magalhaes NEGOTIATION
Antonio M SlusarskiAustraliaAsiya Javayant QUALIFIED
Jennifer I SchemmerGermanyStephen Shaw QUALIFIED
Ivar A DarakjyArgentinaAsiya Javayant NEW
Aika U BowleyUnited KingdomIvan Magalhaes NEW
Cody R KolmetzBrazilOnyama Limba RENEWAL
Salvatore S VocelkaRussiaBernardo Dominic QUALIFIED
Morrow C VocelkaFranceIoni Bowcher PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Wickens K BriddickIndia2024-03-31King, Christopher A Esq NEGOTIATION7Amy Elsner
1001Silvio U NestleItaly2024-04-09King, Christopher A Esq QUALIFIED78Stephen Shaw
1002Jones Q NickaSpain2024-04-21Truhlar And Truhlar Attys UNQUALIFIED92Xuxue Feng
1003David D ButtUnited Kingdom2024-04-02Chemel, James L Cpa UNQUALIFIED36Bernardo Dominic
1004Sinclair R GillianArgentina2024-04-01Benton, John B Jr NEGOTIATION77Bernardo Dominic
1005Salvatore X CaudyBrazil2024-03-29Commercial Press PROPOSAL13Ioni Bowcher
1006Misaki L TollnerArgentina2024-03-28King, Christopher A Esq NEW12Ivan Magalhaes
1007Jones Z VenereArgentina2024-04-04Rangoni Of Florence PROPOSAL23Elwin Sharvill
1008Mayumi J BriddickGermany2024-04-16Chanay, Jeffrey A Esq RENEWAL31Stephen Shaw
1009Jones S StensethArgentina2024-03-27Feiner Bros QUALIFIED72Ivan Magalhaes
1010Jefferson O WieserBrazil2024-04-18Chanay, Jeffrey A Esq RENEWAL50Elwin Sharvill
1011Wickens P PoquetteRussia2024-04-22Morlong Associates RENEWAL3Anna Fali
1012Isabel S StockhamArgentina2024-04-07Commercial Press UNQUALIFIED13Bernardo Dominic
1013Mujtaba K ChuiJapan2024-04-18Buckley Miller Wright UNQUALIFIED69Ivan Magalhaes
1014Wickens S DoeCanada2024-04-18Rousseaux, Michael Esq NEW9Ioni Bowcher
1015Sinclair Z PerinIndia2024-04-10Printing Dimensions QUALIFIED60Asiya Javayant
1016Juan O RutaJapan2024-04-22Dorl, James J Esq UNQUALIFIED54Xuxue Feng
1017Julie R FlosiIndia2024-03-30Chemel, James L Cpa NEGOTIATION7Bernardo Dominic
1018Arvin X MaletItaly2024-04-23Commercial Press QUALIFIED58Elwin Sharvill
1019Tony C MorascaItaly2024-04-19Feltz Printing Service RENEWAL83Elwin Sharvill
1020Ivar M DoeArgentina2024-04-08Dorl, James J Esq NEGOTIATION55Asiya Javayant
1021Leon V MaletJapan2024-04-18Rousseaux, Michael Esq NEW85Amy Elsner
1022Jefferson V KolmetzAustralia2024-04-01Dorl, James J Esq RENEWAL11Ivan Magalhaes
1023Antonio Q RulapaughBrazil2024-04-22Buckley Miller Wright PROPOSAL50Asiya Javayant
1024Jones S SaylorsIndia2024-04-09Chemel, James L Cpa QUALIFIED31Stephen Shaw
1025Wickens P InouyeArgentina2024-04-13Printing Dimensions PROPOSAL34Anna Fali
1026Costa U GillianAustralia2024-04-16King, Christopher A Esq QUALIFIED75Elwin Sharvill
1027Leon W OstroskyItaly2024-04-20Chanay, Jeffrey A Esq UNQUALIFIED56Asiya Javayant
1028Adams Z PerinIndia2024-04-08Benton, John B Jr PROPOSAL55Elwin Sharvill
1029Stacey K StensethFrance2024-04-25Dorl, James J Esq QUALIFIED96Amy Elsner
1030Alejandro F FlosiArgentina2024-03-28Chanay, Jeffrey A Esq NEW78Anna Fali
1031Darci J WaycottSpain2024-04-05Dorl, James J Esq QUALIFIED89Elwin Sharvill
1032Maria Z MorascaFrance2024-03-27Morlong Associates UNQUALIFIED93Onyama Limba
1033Jeanfrancois A SaylorsSpain2024-04-06Feltz Printing Service QUALIFIED86Stephen Shaw
1034Ivar H OstroskyBrazil2024-04-23Chapman, Ross E Esq RENEWAL24Stephen Shaw
1035Wickens C WieserRussia2024-04-21Dorl, James J Esq NEW9Ivan Magalhaes
1036James B FerenczRussia2024-04-05Buckley Miller Wright PROPOSAL83Stephen Shaw
1037Morrow N FigeroaIndia2024-04-23Chapman, Ross E Esq UNQUALIFIED87Stephen Shaw
1038Francesco K SaylorsCanada2024-04-05Chanay, Jeffrey A Esq RENEWAL97Bernardo Dominic
1039Julie C GauchoUnited Kingdom2024-04-13Chapman, Ross E Esq RENEWAL6Onyama Limba
1040Kaitlin D SlusarskiFrance2024-03-28Truhlar And Truhlar Attys QUALIFIED80Onyama Limba
1041Alejandro A ShinkoBrazil2024-04-12Buckley Miller Wright UNQUALIFIED50Xuxue Feng
1042Ricardo T ShinkoBrazil2024-04-02Buckley Miller Wright QUALIFIED27Anna Fali
1043Mayumi Y KolmetzRussia2024-04-14Feltz Printing Service NEW65Xuxue Feng
1044Alejandro F BriddickUnited Kingdom2024-03-28Feltz Printing Service PROPOSAL86Bernardo Dominic
1045James L CaldareraBrazil2024-04-03Truhlar And Truhlar Attys RENEWAL23Asiya Javayant
1046Aruna P DoeSpain2024-04-17Printing Dimensions UNQUALIFIED46Bernardo Dominic
1047Maria U PaprockiFrance2024-04-20Rousseaux, Michael Esq QUALIFIED62Stephen Shaw
1048Silvio N MaletIndia2024-04-18Feltz Printing Service UNQUALIFIED38Amy Elsner
1049Maria W RimSpain2024-04-14Rousseaux, Michael Esq QUALIFIED49Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Ivar U MarrierCanadaOnyama Limba UNQUALIFIED
Cody M SergiCanadaIoni Bowcher NEGOTIATION
Alejandro W PerinUnited KingdomBernardo Dominic UNQUALIFIED
Munro Y BriddickUnited KingdomBernardo Dominic RENEWAL
Ivar N VocelkaJapanIoni Bowcher PROPOSAL
Octavia A RutaArgentinaAmy Elsner UNQUALIFIED
Jennifer N SchemmerRussiaAsiya Javayant QUALIFIED
Clifford C FigeroaRussiaAsiya Javayant QUALIFIED
Francesco T BowleyGermanyAnna Fali NEGOTIATION
Ashley Z DilliardRussiaAsiya Javayant UNQUALIFIED
David K RimBrazilBernardo Dominic RENEWAL
Jefferson Y SaylorsItalyXuxue Feng RENEWAL
Jeanfrancois E RoysterItalyAmy Elsner NEGOTIATION
Ricardo M PerinAustraliaElwin Sharvill NEGOTIATION
Stacey B VenereArgentinaIoni Bowcher NEGOTIATION
Smith M FollerCanadaXuxue Feng QUALIFIED
Murillo S SchemmerGermanyOnyama Limba NEGOTIATION
Julie O SergiGermanyXuxue Feng NEW
Greenwood R BologniaUnited KingdomAmy Elsner PROPOSAL
Julie T IturbideRussiaIoni Bowcher NEW
Munro Z GarufiArgentinaBernardo Dominic NEW
James I RimSpainAnna Fali PROPOSAL
Kaitlin S VocelkaGermanyAsiya Javayant NEGOTIATION
Cody D VenereItalyAsiya Javayant RENEWAL
Morrow K FollerSpainIoni Bowcher NEGOTIATION
Isabel V BowleyAustraliaStephen Shaw RENEWAL
Arvin C VocelkaArgentinaOnyama Limba UNQUALIFIED
Izzy I FigeroaBrazilXuxue Feng NEGOTIATION
Maisha R SergiJapanAmy Elsner NEGOTIATION
Jennifer L BowleySpainIoni Bowcher UNQUALIFIED
Johnson M RoysterCanadaXuxue Feng NEW
Francesco U RutaGermanyOnyama Limba NEW
Deepesh C RutaAustraliaBernardo Dominic NEW
Wickens Z MaletItalyAnna Fali QUALIFIED
Chavez A KolmetzFranceStephen Shaw UNQUALIFIED
Tony D IturbideGermanyAsiya Javayant UNQUALIFIED
Murillo W KolmetzIndiaIvan Magalhaes PROPOSAL
David G ShinkoIndiaIoni Bowcher NEW
Rodrigues A FollerAustraliaAsiya Javayant RENEWAL
Salvatore T AmigonSpainIvan Magalhaes PROPOSAL
Silvio O MorascaBrazilIoni Bowcher RENEWAL
Silvio X ChuiRussiaXuxue Feng RENEWAL
Arvin Q MarrierIndiaAsiya Javayant NEGOTIATION
Munro O NestleFranceAnna Fali UNQUALIFIED
Morrow L OldroydAustraliaIoni Bowcher NEW
Cody P PerinFranceAsiya Javayant RENEWAL
Ivar K WaycottCanadaAmy Elsner UNQUALIFIED
Jones A GlickRussiaElwin Sharvill RENEWAL
Stacey P WieserSpainAsiya Javayant UNQUALIFIED
Chavez R RutaUnited KingdomIvan Magalhaes NEW
Frozen Columns
Name
Mujtaba K Kolmetz
Francesco V Darakjy
Alejandro I Waycott
Maria P Darakjy
Julie F Amigon
Jones D Whobrey
Adams D Royster
Aruna J Tollner
Rodrigues U Chui
Izzy B Sergi
Kaitlin G Nicka
James G Caudy
Jennifer R Poquette
Smith G Caudy
Misaki J Slusarski
Leja F Waycott
Misaki F Rulapaugh
Rodrigues Y Malet
Stacey H Perin
Aditya J Dilliard
Jones Q Poquette
Cody H Gaucho
Greenwood Q Kusko
Adams Q Caudy
Izzy W Paprocki
Darci X Morasca
Munro T Doe
Chavez W Waycott
Smith K Gillian
Costa Z Waycott
Sinclair X Malet
Cody F Amigon
Aika C Tollner
Antonio P Glick
Jeanfrancois Q Iturbide
Alejandro L Inouye
Stacey I Rim
Nicolas Y Campain
Clifford E Nestle
Sinclair C Butt
Julie K Royster
Mujtaba W Rulapaugh
Greenwood G Wieser
Silvio Z Foller
Aditya G Tollner
Johnson L Darakjy
Antonio I Waycott
Cody R Maclead
James A Garufi
Aika B Stockham
IdCountryDate
1000Italy2024-04-16
1001Argentina2024-04-04
1002Italy2024-04-23
1003Russia2024-04-16
1004Brazil2024-04-01
1005France2024-04-24
1006Spain2024-03-30
1007Spain2024-04-25
1008Canada2024-04-13
1009Spain2024-03-29
1010Brazil2024-04-03
1011Russia2024-04-06
1012Spain2024-04-15
1013United Kingdom2024-04-11
1014United Kingdom2024-04-08
1015Spain2024-04-13
1016Japan2024-03-31
1017Argentina2024-04-23
1018India2024-04-09
1019Brazil2024-04-14
1020Argentina2024-04-16
1021Spain2024-04-04
1022France2024-04-19
1023United Kingdom2024-04-17
1024Russia2024-04-16
1025Japan2024-03-31
1026Argentina2024-04-01
1027Australia2024-04-07
1028Germany2024-04-05
1029Brazil2024-04-03
1030Germany2024-04-06
1031Australia2024-04-06
1032Russia2024-04-21
1033India2024-04-25
1034Argentina2024-04-25
1035Australia2024-04-16
1036Italy2024-04-19
1037Australia2024-04-13
1038United Kingdom2024-03-29
1039Australia2024-04-05
1040Brazil2024-04-15
1041Germany2024-04-10
1042India2024-04-22
1043Argentina2024-04-17
1044Japan2024-04-07
1045Australia2024-04-14
1046Italy2024-03-31
1047Spain2024-04-15
1048Italy2024-04-10
1049Argentina2024-04-02

On-Demand Data

NameIdCountryDate
Jones W Waycott1000Japan2024-04-25
Misaki W Darakjy1001United Kingdom2024-03-29
Clifford H Stockham1002Australia2024-04-16
Murillo Z Sergi1003Australia2024-03-29
Arvin D Amigon1004Brazil2024-04-11
David T Dilliard1005France2024-04-12
Ivar S Rulapaugh1006Japan2024-04-21
Salvatore H Venere1007Brazil2024-04-14
Rodrigues F Gillian1008India2024-04-17
Jones O Shinko1009France2024-04-20
Misaki Q Flosi1010Canada2024-04-01
Alejandro K Glick1011Japan2024-04-01
Salvatore Y Butt1012Germany2024-04-22
Leja Q Bolognia1013Argentina2024-04-18
Antonio K Stenseth1014Japan2024-04-15
Costa I Venere1015India2024-04-20
James O Shinko1016France2024-04-17
Julie N Stockham1017Australia2024-04-25
Cody F Whobrey1018France2024-04-06
Aditya W Perin1019Argentina2024-04-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Arvin G DilliardRussiaStephen Shaw UNQUALIFIED
David C SlusarskiArgentinaAsiya Javayant PROPOSAL
Ashley L RimSpainBernardo Dominic NEW
Munro M WieserUnited KingdomOnyama Limba PROPOSAL
Jones G MaletSpainAnna Fali NEGOTIATION
Arvin F StensethIndiaXuxue Feng NEW
Jefferson L MorascaCanadaElwin Sharvill QUALIFIED
Adams G GarufiUnited KingdomOnyama Limba NEGOTIATION
Darci X CaldareraArgentinaStephen Shaw UNQUALIFIED
Jennifer T PoquetteSpainStephen Shaw NEW
Izzy B DoeRussiaOnyama Limba RENEWAL
Octavia C MarrierBrazilIvan Magalhaes NEGOTIATION
Antonio J GillianGermanyIoni Bowcher NEGOTIATION
Rodrigues K RutaFranceAnna Fali QUALIFIED
Jefferson E RutaArgentinaOnyama Limba RENEWAL
Antonio L OldroydBrazilAnna Fali QUALIFIED
Francesco H FerenczArgentinaOnyama Limba PROPOSAL
Deepesh Q StensethGermanyAnna Fali QUALIFIED
Chavez K DoeFranceXuxue Feng UNQUALIFIED
Kaitlin S FigeroaFranceIoni Bowcher RENEWAL
Adams W GillianAustraliaElwin Sharvill UNQUALIFIED
Costa N WaycottArgentinaAmy Elsner PROPOSAL
Jones T MaletCanadaStephen Shaw PROPOSAL
Octavia F StockhamAustraliaAmy Elsner PROPOSAL
Smith M WieserIndiaElwin Sharvill NEW
Antonio P RutaArgentinaAmy Elsner NEW
Claire P CampainIndiaAsiya Javayant UNQUALIFIED
Jeanfrancois J BologniaUnited KingdomIoni Bowcher QUALIFIED
Tony U BowleyRussiaStephen Shaw QUALIFIED
Deepesh Q VocelkaItalyOnyama Limba RENEWAL
Stacey T VenereAustraliaIoni Bowcher QUALIFIED
Misaki D NestleIndiaOnyama Limba PROPOSAL
Maria A MarrierUnited KingdomAnna Fali QUALIFIED
Darci I GauchoGermanyIoni Bowcher QUALIFIED
Juan T PerinGermanyIoni Bowcher PROPOSAL
Adams J OldroydFranceAsiya Javayant QUALIFIED
Aika G DoeGermanyStephen Shaw NEGOTIATION
Adams O SlusarskiRussiaXuxue Feng UNQUALIFIED
Jones U GillianCanadaStephen Shaw RENEWAL
Izzy F RulapaughGermanyStephen Shaw QUALIFIED

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