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
Octavia J GarufiGermanyAnna Fali RENEWAL
Rodrigues Y FlosiAustraliaAnna Fali NEGOTIATION
Mayumi K WieserRussiaAsiya Javayant NEGOTIATION
Jones L GillianGermanyElwin Sharvill UNQUALIFIED
Rodrigues Z AlbaresItalyAnna Fali NEW
Morrow S BowleyGermanyAmy Elsner RENEWAL
Wickens M ShinkoItalyXuxue Feng UNQUALIFIED
Octavia P VenereGermanyIvan Magalhaes NEGOTIATION
Jennifer M StockhamGermanyElwin Sharvill QUALIFIED
Deepesh A NestleRussiaElwin Sharvill NEGOTIATION
Isabel D PerinCanadaIvan Magalhaes UNQUALIFIED
Mayumi U MaletItalyAsiya Javayant NEGOTIATION
Tony G RutaBrazilElwin Sharvill NEW
Johnson U MarrierArgentinaStephen Shaw NEW
Salvatore W KolmetzIndiaIvan Magalhaes UNQUALIFIED
Jennifer A ButtFranceElwin Sharvill QUALIFIED
Wickens U StockhamBrazilStephen Shaw RENEWAL
Claire N RulapaughJapanIoni Bowcher NEGOTIATION
Chavez Q BowleySpainAnna Fali NEGOTIATION
Johnson P ShinkoCanadaElwin Sharvill PROPOSAL
Izzy V BowleyIndiaAsiya Javayant RENEWAL
Maisha G MorascaJapanAmy Elsner QUALIFIED
Maria R ButtCanadaXuxue Feng QUALIFIED
Nicolas N ButtFranceIvan Magalhaes NEGOTIATION
Murillo S DarakjyCanadaStephen Shaw NEGOTIATION
Murillo L NickaIndiaAnna Fali RENEWAL
Faith W MaletFranceOnyama Limba NEGOTIATION
Adams Y RoysterGermanyXuxue Feng PROPOSAL
Francesco J MaletRussiaAsiya Javayant QUALIFIED
Izzy O DilliardBrazilStephen Shaw NEGOTIATION
Adams Q NickaItalyAsiya Javayant RENEWAL
Faith S SchemmerFranceBernardo Dominic NEGOTIATION
Leon F StensethCanadaIoni Bowcher UNQUALIFIED
Leon R WaycottCanadaAnna Fali RENEWAL
Emily W SaylorsIndiaAmy Elsner UNQUALIFIED
Sinclair R ChuiRussiaAnna Fali UNQUALIFIED
Chavez F ShinkoAustraliaElwin Sharvill NEW
Johnson R RulapaughArgentinaXuxue Feng PROPOSAL
Jones S OldroydCanadaAsiya Javayant PROPOSAL
Jeanfrancois P NickaJapanXuxue Feng QUALIFIED
Arvin N SchemmerAustraliaAnna Fali QUALIFIED
Aika U OstroskyArgentinaAnna Fali PROPOSAL
Octavia C FerenczGermanyIoni Bowcher NEGOTIATION
Aditya Y AmigonGermanyAnna Fali PROPOSAL
Leon H MaletCanadaAsiya Javayant NEW
Jefferson W RoysterSpainOnyama Limba PROPOSAL
Julie G ChuiAustraliaStephen Shaw RENEWAL
Emily N PoquetteIndiaElwin Sharvill RENEWAL
Stacey V MaletJapanOnyama Limba UNQUALIFIED
Leja S RutaFranceElwin Sharvill RENEWAL
Horizontal
NameCountryRepresentativeStatus
Aditya A KuskoFranceOnyama Limba UNQUALIFIED
Antonio J FerenczCanadaOnyama Limba QUALIFIED
Cody R DarakjyBrazilIoni Bowcher QUALIFIED
Ricardo J RimBrazilAsiya Javayant PROPOSAL
Alejandro M ChuiItalyOnyama Limba PROPOSAL
Ricardo Z StockhamAustraliaXuxue Feng QUALIFIED
Costa Z PerinRussiaAmy Elsner NEGOTIATION
Kaitlin K OstroskySpainAsiya Javayant RENEWAL
Francesco J SergiSpainOnyama Limba RENEWAL
James G InouyeUnited KingdomIvan Magalhaes NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Murillo R ShinkoJapan2024-04-01Chapman, Ross E Esq RENEWAL46Anna Fali
1001Nicolas W CampainCanada2024-03-20Morlong Associates NEW16Amy Elsner
1002Leja C ShinkoArgentina2024-03-30Rousseaux, Michael Esq NEGOTIATION43Ioni Bowcher
1003Sinclair B FigeroaArgentina2024-03-24Chanay, Jeffrey A Esq NEW93Elwin Sharvill
1004Octavia Z GauchoCanada2024-04-13King, Christopher A Esq UNQUALIFIED34Asiya Javayant
1005Adams A GauchoArgentina2024-04-09Morlong Associates UNQUALIFIED15Onyama Limba
1006Jones J SlusarskiJapan2024-04-13Chemel, James L Cpa NEGOTIATION97Stephen Shaw
1007Smith L CaldareraRussia2024-03-31Chemel, James L Cpa PROPOSAL5Amy Elsner
1008Jones Y MorascaUnited Kingdom2024-03-31Rangoni Of Florence PROPOSAL72Ioni Bowcher
1009Kaitlin U ButtJapan2024-04-11Feiner Bros PROPOSAL15Ivan Magalhaes
1010Misaki P PerinBrazil2024-04-09Chemel, James L Cpa NEGOTIATION94Ivan Magalhaes
1011Ashley A PoquetteFrance2024-03-26Dorl, James J Esq QUALIFIED84Xuxue Feng
1012Ashley T ChuiUnited Kingdom2024-03-31Feltz Printing Service PROPOSAL69Amy Elsner
1013Jones N AmigonBrazil2024-04-07Rousseaux, Michael Esq RENEWAL7Elwin Sharvill
1014Mayumi O MarrierJapan2024-04-11Buckley Miller Wright NEGOTIATION68Elwin Sharvill
1015Kaitlin R SaylorsUnited Kingdom2024-04-05Benton, John B Jr NEW11Stephen Shaw
1016Jones E MarrierAustralia2024-04-11King, Christopher A Esq NEGOTIATION87Anna Fali
1017Aruna P SchemmerCanada2024-04-12Rangoni Of Florence NEGOTIATION90Stephen Shaw
1018Tony O TollnerAustralia2024-04-09Truhlar And Truhlar Attys QUALIFIED29Asiya Javayant
1019Tony C GarufiUnited Kingdom2024-04-06Rangoni Of Florence PROPOSAL3Xuxue Feng
1020Arvin F AlbaresFrance2024-04-16Chemel, James L Cpa PROPOSAL7Onyama Limba
1021Mayumi E OldroydGermany2024-04-04Chemel, James L Cpa UNQUALIFIED88Onyama Limba
1022Kaitlin D VocelkaRussia2024-03-29Chapman, Ross E Esq RENEWAL12Onyama Limba
1023Faith R GarufiBrazil2024-03-24Chemel, James L Cpa NEGOTIATION91Anna Fali
1024Juan S PaprockiSpain2024-04-10Rangoni Of Florence PROPOSAL20Stephen Shaw
1025Octavia R PoquetteSpain2024-03-27Morlong Associates NEGOTIATION81Ivan Magalhaes
1026Misaki F GauchoUnited Kingdom2024-04-16Rangoni Of Florence RENEWAL40Ioni Bowcher
1027Morrow G PerinCanada2024-03-24Rousseaux, Michael Esq NEW55Ioni Bowcher
1028Maria M GauchoSpain2024-04-08Printing Dimensions RENEWAL57Onyama Limba
1029Ivar C GillianRussia2024-03-26King, Christopher A Esq UNQUALIFIED26Asiya Javayant
1030Munro Y VenereCanada2024-03-23Feiner Bros UNQUALIFIED43Amy Elsner
1031Rodrigues J PerinGermany2024-03-27Rousseaux, Michael Esq NEW47Amy Elsner
1032James P SchemmerIndia2024-03-24Rangoni Of Florence PROPOSAL79Asiya Javayant
1033Francesco J AlbaresArgentina2024-04-14King, Christopher A Esq QUALIFIED81Stephen Shaw
1034Wickens P ChuiGermany2024-04-10King, Christopher A Esq UNQUALIFIED30Elwin Sharvill
1035Rodrigues A VenereIndia2024-03-24Buckley Miller Wright QUALIFIED89Ioni Bowcher
1036Julie F MorascaAustralia2024-03-25Truhlar And Truhlar Attys UNQUALIFIED66Ivan Magalhaes
1037Aruna G NickaItaly2024-04-01Dorl, James J Esq PROPOSAL69Ioni Bowcher
1038Sinclair P DilliardArgentina2024-04-09Dorl, James J Esq UNQUALIFIED42Ioni Bowcher
1039Jones M ShinkoItaly2024-04-11Rangoni Of Florence NEGOTIATION60Asiya Javayant
1040Alejandro Z PoquetteBrazil2024-03-30Printing Dimensions NEGOTIATION30Asiya Javayant
1041Antonio W MacleadGermany2024-04-09Benton, John B Jr NEGOTIATION4Stephen Shaw
1042Salvatore I NestleUnited Kingdom2024-03-29Chapman, Ross E Esq NEW97Onyama Limba
1043Jefferson L BriddickUnited Kingdom2024-04-11Rangoni Of Florence NEW30Ivan Magalhaes
1044Kadeem Z SergiCanada2024-03-25Printing Dimensions QUALIFIED24Ivan Magalhaes
1045Clifford E FerenczItaly2024-04-05Morlong Associates PROPOSAL71Xuxue Feng
1046Isabel I AmigonArgentina2024-04-12Chanay, Jeffrey A Esq NEGOTIATION44Xuxue Feng
1047Antonio B GlickCanada2024-03-29Feiner Bros RENEWAL69Xuxue Feng
1048Faith I SergiFrance2024-03-22Feltz Printing Service QUALIFIED46Stephen Shaw
1049James E OstroskyCanada2024-04-02Printing Dimensions NEGOTIATION78Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Arvin N KuskoIndiaIoni Bowcher PROPOSAL
Aditya T InouyeArgentinaBernardo Dominic NEGOTIATION
Maria H SchemmerSpainIvan Magalhaes QUALIFIED
Murillo X BologniaFranceIvan Magalhaes RENEWAL
Mujtaba Y OldroydJapanIoni Bowcher QUALIFIED
Costa T PerinSpainBernardo Dominic NEGOTIATION
Emily W CampainCanadaAnna Fali NEGOTIATION
Misaki J RoysterBrazilAnna Fali RENEWAL
Jennifer C RoysterJapanStephen Shaw NEGOTIATION
Aika P SlusarskiArgentinaIoni Bowcher QUALIFIED
Darci B CaldareraBrazilXuxue Feng NEGOTIATION
Silvio Q StockhamCanadaAnna Fali RENEWAL
Leja G CaudyAustraliaAsiya Javayant RENEWAL
Julie B GlickArgentinaBernardo Dominic PROPOSAL
Maisha B GauchoAustraliaIoni Bowcher RENEWAL
David R MarrierAustraliaAsiya Javayant RENEWAL
Chavez W IturbideSpainElwin Sharvill RENEWAL
Leon A OldroydGermanyOnyama Limba RENEWAL
Claire F GillianIndiaOnyama Limba QUALIFIED
Julie O PerinAustraliaXuxue Feng QUALIFIED
Kaitlin H DilliardGermanyAnna Fali QUALIFIED
Cody I RimIndiaStephen Shaw NEGOTIATION
Aika W CaldareraItalyXuxue Feng UNQUALIFIED
Maria Z RutaSpainOnyama Limba PROPOSAL
Greenwood R AmigonBrazilElwin Sharvill RENEWAL
Stacey I VenereJapanOnyama Limba NEGOTIATION
Leja M WieserSpainXuxue Feng UNQUALIFIED
Kadeem G TollnerAustraliaAnna Fali RENEWAL
Costa Y GarufiArgentinaAsiya Javayant RENEWAL
Wickens J TollnerItalyIvan Magalhaes PROPOSAL
Maisha J CampainFranceStephen Shaw QUALIFIED
Misaki T RoysterFranceAmy Elsner UNQUALIFIED
Johnson J SchemmerArgentinaIoni Bowcher PROPOSAL
Leon K RoysterAustraliaXuxue Feng QUALIFIED
Julie Z GauchoIndiaIvan Magalhaes RENEWAL
Wickens B PerinGermanyAmy Elsner QUALIFIED
Salvatore F KuskoItalyIoni Bowcher NEGOTIATION
Adams W DoeRussiaBernardo Dominic NEW
Johnson E KuskoBrazilBernardo Dominic QUALIFIED
Chavez B CampainArgentinaAsiya Javayant QUALIFIED
Ricardo X OstroskyBrazilIvan Magalhaes RENEWAL
Aika N InouyeGermanyAmy Elsner PROPOSAL
Morrow Y CampainCanadaStephen Shaw PROPOSAL
Deepesh X VenereBrazilStephen Shaw UNQUALIFIED
Costa Z OstroskyRussiaStephen Shaw NEW
Antonio T WhobreyFranceElwin Sharvill NEGOTIATION
Greenwood R NickaFranceOnyama Limba QUALIFIED
Kaitlin C GauchoIndiaXuxue Feng NEW
Nicolas T CampainFranceAsiya Javayant RENEWAL
Jones K SaylorsFranceBernardo Dominic QUALIFIED
Frozen Columns
Name
Stacey K Darakjy
Greenwood V Shinko
Darci B Foller
James S Campain
Smith Z Gillian
Aruna N Rulapaugh
Arvin D Nestle
Silvio H Maclead
Claire J Ruta
Ashley I Foller
Johnson P Gillian
Ivar Y Poquette
Jefferson R Perin
Johnson S Malet
Kaitlin R Doe
Maisha A Wieser
Murillo Y Maclead
Smith R Marrier
Aruna R Iturbide
Clifford M Ruta
Faith F Marrier
Emily D Schemmer
Greenwood J Perin
Greenwood E Malet
Leja X Foller
Munro W Bolognia
Octavia K Whobrey
Wickens R Gaucho
Ashley D Darakjy
Julie T Malet
Salvatore G Ostrosky
Deepesh W Marrier
Kaitlin G Foller
Jennifer N Rulapaugh
Smith J Kolmetz
Salvatore R Ferencz
Misaki W Doe
Ricardo S Garufi
Jennifer C Malet
Ashley X Royster
Izzy C Butt
Leja U Nicka
Deepesh K Glick
Jennifer X Caldarera
Silvio B Malet
Aruna L Waycott
Kaitlin W Stenseth
Mujtaba N Slusarski
Smith H Ruta
Tony M Albares
IdCountryDate
1000Argentina2024-04-04
1001Japan2024-04-13
1002India2024-04-11
1003India2024-03-25
1004Germany2024-03-19
1005France2024-04-09
1006France2024-04-06
1007Argentina2024-04-01
1008Canada2024-03-30
1009Russia2024-03-22
1010United Kingdom2024-04-11
1011Russia2024-03-20
1012Canada2024-04-09
1013Spain2024-03-30
1014Japan2024-04-13
1015Brazil2024-03-22
1016Argentina2024-03-29
1017Russia2024-04-04
1018France2024-04-10
1019Australia2024-03-27
1020Argentina2024-03-28
1021Australia2024-03-26
1022India2024-03-23
1023Australia2024-03-19
1024Italy2024-03-22
1025United Kingdom2024-03-21
1026United Kingdom2024-04-08
1027Brazil2024-03-19
1028Japan2024-04-15
1029United Kingdom2024-03-26
1030Spain2024-03-22
1031Italy2024-03-23
1032Brazil2024-04-04
1033Germany2024-04-11
1034France2024-04-14
1035Argentina2024-03-24
1036Japan2024-04-09
1037United Kingdom2024-04-04
1038Italy2024-04-10
1039Germany2024-04-16
1040Japan2024-03-21
1041Brazil2024-03-20
1042Argentina2024-03-31
1043France2024-04-03
1044Brazil2024-04-04
1045Argentina2024-04-15
1046Russia2024-03-27
1047Japan2024-04-03
1048France2024-04-17
1049Italy2024-03-26

On-Demand Data

NameIdCountryDate
Salvatore C Oldroyd1000Spain2024-03-28
Morrow U Sergi1001Spain2024-04-14
Greenwood F Caldarera1002Russia2024-04-11
Greenwood R Venere1003Spain2024-04-15
Kadeem W Slusarski1004France2024-04-15
Antonio L Ferencz1005Argentina2024-03-26
Francesco T Venere1006United Kingdom2024-04-15
Tony D Amigon1007Italy2024-03-31
Leon N Rim1008Russia2024-04-06
Ivar C Tollner1009Brazil2024-03-20
Aika N Flosi1010Australia2024-03-27
Octavia T Perin1011India2024-04-17
Emily Y Nicka1012Spain2024-04-03
Jones I Butt1013India2024-03-21
Deepesh G Albares1014Italy2024-04-15
Cody W Paprocki1015France2024-04-08
Aika S Malet1016Australia2024-03-30
Costa Y Kusko1017Spain2024-04-10
Darci E Garufi1018United Kingdom2024-04-07
Aditya X Maclead1019Brazil2024-04-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Munro Q VocelkaUnited KingdomAmy Elsner PROPOSAL
Munro W PoquetteItalyOnyama Limba NEW
Antonio Q GillianFranceXuxue Feng UNQUALIFIED
Clifford T OstroskyAustraliaIvan Magalhaes NEW
Tony L MaletIndiaBernardo Dominic UNQUALIFIED
Aditya X MaletBrazilIvan Magalhaes NEGOTIATION
Darci S BologniaArgentinaAsiya Javayant RENEWAL
Sinclair F VocelkaGermanyAsiya Javayant QUALIFIED
Julie B TollnerAustraliaStephen Shaw PROPOSAL
Aditya Q GauchoBrazilAsiya Javayant NEGOTIATION
Jennifer B BowleySpainXuxue Feng QUALIFIED
Clifford X KolmetzCanadaIoni Bowcher RENEWAL
Deepesh Y OldroydItalyAnna Fali QUALIFIED
Darci J BologniaBrazilIvan Magalhaes PROPOSAL
Mayumi N TollnerGermanyIoni Bowcher NEGOTIATION
Jefferson Y MorascaArgentinaIoni Bowcher QUALIFIED
Johnson U BologniaIndiaIvan Magalhaes PROPOSAL
Maisha V ChuiFranceAnna Fali UNQUALIFIED
Kadeem M RimFranceIvan Magalhaes NEW
Tony O RulapaughArgentinaBernardo Dominic NEW
Misaki F BowleyAustraliaStephen Shaw NEW
Juan P FerenczSpainAmy Elsner NEGOTIATION
Maria P IturbideGermanyBernardo Dominic RENEWAL
Stacey I DoeGermanyElwin Sharvill PROPOSAL
Isabel G SaylorsIndiaAmy Elsner QUALIFIED
Stacey T InouyeUnited KingdomAnna Fali RENEWAL
Greenwood Z InouyeUnited KingdomStephen Shaw PROPOSAL
Cody V MaletAustraliaAsiya Javayant QUALIFIED
Aditya G RimIndiaAsiya Javayant UNQUALIFIED
Isabel V GillianAustraliaOnyama Limba NEGOTIATION
Greenwood B StockhamFranceOnyama Limba QUALIFIED
Juan A ShinkoFranceAnna Fali UNQUALIFIED
Mayumi S PerinBrazilXuxue Feng QUALIFIED
Alejandro J GauchoSpainElwin Sharvill PROPOSAL
Ivar P SchemmerFranceXuxue Feng NEW
Salvatore X WieserArgentinaAmy Elsner UNQUALIFIED
Ricardo M StensethUnited KingdomElwin Sharvill NEW
Ricardo D BowleyBrazilAnna Fali RENEWAL
Ricardo S SaylorsArgentinaIoni Bowcher NEW
Jefferson O FigeroaItalyAmy Elsner 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>