Locale

Language
English
English
English
French
German
German
German
Italian
Korean
Spanish
Catalan
Dutch
Portuguese
Portuguese
Arabic
Arabic
Bulgarian
Bangla
Bosnian
Czech
Greek
Estonian
Persian
Finnish
Danish
Hindi
Indonesian
Icelandic
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
Uzbek
Vietnamese
Chinese
Chinese

Input Style

Free Themes

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

Saga Saga
Vela Vela
Arya Arya

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

DataTable Scroll

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

Vertical
NameCountryRepresentativeStatus
Maria MarrierUnited KingdomXuxue Feng NEW
Smith GlickBrazilIvan Magalhaes NEGOTIATION
Alejandro PerinGermanyAsiya Javayant PROPOSAL
Jefferson SchemmerItalyXuxue Feng RENEWAL
Mayumi KolmetzFranceAsiya Javayant RENEWAL
Aditya KuskoItalyXuxue Feng PROPOSAL
Rodrigues CampainFranceStephen Shaw NEW
Leja CaldareraSpainXuxue Feng RENEWAL
Adams MorascaArgentinaBernardo Dominic NEW
Salvatore StockhamUnited KingdomAsiya Javayant RENEWAL
Ivar PaprockiUnited KingdomBernardo Dominic QUALIFIED
Leon OldroydArgentinaIoni Bowcher NEW
Adams MorascaIndiaXuxue Feng UNQUALIFIED
Alejandro PerinItalyElwin Sharvill QUALIFIED
Morrow RutaCanadaAmy Elsner QUALIFIED
Greenwood BologniaGermanyAnna Fali QUALIFIED
Salvatore StockhamJapanStephen Shaw UNQUALIFIED
Deepesh ChuiCanadaIvan Magalhaes NEW
Salvatore StockhamGermanyAsiya Javayant QUALIFIED
Leja CaldareraRussiaOnyama Limba NEGOTIATION
Smith GlickFranceXuxue Feng NEW
Kadeem FlosiJapanOnyama Limba QUALIFIED
Francesco ShinkoAustraliaElwin Sharvill QUALIFIED
Misaki RoysterIndiaXuxue Feng PROPOSAL
Jeanfrancois VenereFranceAmy Elsner NEGOTIATION
Francesco ShinkoFranceAnna Fali NEW
Kaitlin OstroskyCanadaAnna Fali QUALIFIED
Deepesh ChuiSpainIvan Magalhaes NEGOTIATION
Munro FerenczAustraliaAnna Fali NEW
Tony FollerBrazilXuxue Feng NEGOTIATION
Cody SaylorsBrazilOnyama Limba QUALIFIED
Ricardo GauchoBrazilElwin Sharvill QUALIFIED
Claire TollnerSpainAmy Elsner UNQUALIFIED
Salvatore StockhamGermanyStephen Shaw PROPOSAL
Murillo MaletCanadaAmy Elsner UNQUALIFIED
Jeanfrancois VenereCanadaAmy Elsner NEGOTIATION
Salvatore StockhamAustraliaElwin Sharvill NEW
Murillo MaletRussiaAnna Fali QUALIFIED
Maria MarrierSpainAmy Elsner RENEWAL
Antonio CaudyFranceBernardo Dominic PROPOSAL
Faith GillianFranceAnna Fali PROPOSAL
Morrow RutaSpainIvan Magalhaes RENEWAL
Rodrigues CampainUnited KingdomAnna Fali PROPOSAL
Ivar PaprockiItalyXuxue Feng NEW
Cody SaylorsGermanyAsiya Javayant NEGOTIATION
Ashley DoeBrazilAmy Elsner QUALIFIED
Emily WhobreyArgentinaIvan Magalhaes NEGOTIATION
Morrow RutaBrazilStephen Shaw QUALIFIED
Mujtaba NickaItalyBernardo Dominic RENEWAL
Jefferson SchemmerBrazilIoni Bowcher QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Isabel BowleyJapanAnna Fali UNQUALIFIED
Jones VocelkaArgentinaOnyama Limba UNQUALIFIED
Costa DilliardBrazilIvan Magalhaes UNQUALIFIED
Costa DilliardJapanIvan Magalhaes UNQUALIFIED
Leja CaldareraCanadaBernardo Dominic PROPOSAL
Leon OldroydGermanyAnna Fali UNQUALIFIED
Octavia MaletSpainStephen Shaw PROPOSAL
Clifford RimSpainAmy Elsner UNQUALIFIED
Jefferson SchemmerItalyStephen Shaw QUALIFIED
Silvio SlusarskiArgentinaXuxue Feng NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Nicolas IturbideSpain2026-04-20Printing Dimensions NEW19Onyama Limba
1001David DarakjyAustralia2026-04-18Chapman, Ross E Esq NEW87Bernardo Dominic
1002Aruna FigeroaFrance2026-04-06Feltz Printing Service UNQUALIFIED99Asiya Javayant
1003Maria MarrierFrance2026-03-24Rangoni Of Florence UNQUALIFIED79Stephen Shaw
1004Alejandro PerinCanada2026-04-14Morlong Associates QUALIFIED27Ivan Magalhaes
1005Alejandro PerinArgentina2026-04-13Buckley Miller Wright NEGOTIATION38Amy Elsner
1006Nicolas IturbideRussia2026-03-31Truhlar And Truhlar Attys UNQUALIFIED41Onyama Limba
1007Wickens NestleJapan2026-03-29Commercial Press NEGOTIATION49Ioni Bowcher
1008Aruna FigeroaRussia2026-03-27Chanay, Jeffrey A Esq NEGOTIATION82Amy Elsner
1009Aditya KuskoArgentina2026-03-27Rangoni Of Florence QUALIFIED52Elwin Sharvill
1010Maisha RulapaughArgentina2026-04-01Benton, John B Jr NEGOTIATION57Ioni Bowcher
1011Isabel BowleyFrance2026-04-06Commercial Press UNQUALIFIED29Bernardo Dominic
1012Mayumi KolmetzBrazil2026-03-30Chanay, Jeffrey A Esq UNQUALIFIED36Onyama Limba
1013Alejandro PerinAustralia2026-04-22Feiner Bros QUALIFIED95Elwin Sharvill
1014Ivar PaprockiUnited Kingdom2026-04-14Commercial Press UNQUALIFIED28Asiya Javayant
1015Aditya KuskoItaly2026-04-19Printing Dimensions RENEWAL24Onyama Limba
1016Juan WieserBrazil2026-04-15Commercial Press PROPOSAL5Amy Elsner
1017Silvio SlusarskiSpain2026-04-15Morlong Associates RENEWAL62Bernardo Dominic
1018Jones VocelkaIndia2026-03-25Morlong Associates PROPOSAL71Anna Fali
1019Leja CaldareraRussia2026-04-17Printing Dimensions NEGOTIATION74Onyama Limba
1020Murillo MaletCanada2026-03-29King, Christopher A Esq NEW73Xuxue Feng
1021Tony FollerUnited Kingdom2026-04-08Morlong Associates PROPOSAL45Anna Fali
1022Ashley DoeUnited Kingdom2026-04-05King, Christopher A Esq RENEWAL63Elwin Sharvill
1023Antonio CaudyIndia2026-04-12Morlong Associates UNQUALIFIED23Anna Fali
1024Cody SaylorsArgentina2026-04-10Chemel, James L Cpa UNQUALIFIED90Elwin Sharvill
1025Adams MorascaArgentina2026-04-08Rangoni Of Florence QUALIFIED24Anna Fali
1026Adams MorascaGermany2026-04-16Benton, John B Jr NEW39Amy Elsner
1027Izzy GarufiArgentina2026-04-04Chanay, Jeffrey A Esq RENEWAL40Ivan Magalhaes
1028Emily WhobreyIndia2026-04-19Buckley Miller Wright QUALIFIED76Ivan Magalhaes
1029David DarakjyArgentina2026-03-24Commercial Press RENEWAL9Stephen Shaw
1030Smith GlickGermany2026-03-27Dorl, James J Esq PROPOSAL7Onyama Limba
1031Maisha RulapaughCanada2026-03-31Truhlar And Truhlar Attys RENEWAL16Ioni Bowcher
1032Maisha RulapaughGermany2026-03-25Truhlar And Truhlar Attys NEGOTIATION11Stephen Shaw
1033Arvin AlbaresIndia2026-04-22Feiner Bros QUALIFIED55Bernardo Dominic
1034Kaitlin OstroskyRussia2026-04-09Printing Dimensions RENEWAL65Xuxue Feng
1035Leja CaldareraBrazil2026-04-07Rangoni Of Florence NEW63Elwin Sharvill
1036Stacey MacleadJapan2026-04-07Truhlar And Truhlar Attys PROPOSAL5Stephen Shaw
1037Arvin AlbaresAustralia2026-03-31Buckley Miller Wright NEW50Onyama Limba
1038Julie StensethAustralia2026-03-26Rousseaux, Michael Esq UNQUALIFIED73Stephen Shaw
1039Johnson SergiJapan2026-04-04Truhlar And Truhlar Attys PROPOSAL98Xuxue Feng
1040Izzy GarufiGermany2026-04-22King, Christopher A Esq QUALIFIED32Onyama Limba
1041Rodrigues CampainCanada2026-03-31Truhlar And Truhlar Attys QUALIFIED97Amy Elsner
1042James ButtUnited Kingdom2026-04-04Chapman, Ross E Esq QUALIFIED52Bernardo Dominic
1043Emily WhobreyItaly2026-03-29Rangoni Of Florence NEGOTIATION40Anna Fali
1044Darci PoquetteGermany2026-04-07Feiner Bros PROPOSAL36Onyama Limba
1045Antonio CaudyFrance2026-04-03Chapman, Ross E Esq NEW55Ivan Magalhaes
1046David DarakjyJapan2026-04-13Printing Dimensions UNQUALIFIED47Xuxue Feng
1047Kadeem FlosiCanada2026-04-18Commercial Press QUALIFIED23Ivan Magalhaes
1048Emily WhobreyAustralia2026-03-28Benton, John B Jr UNQUALIFIED11Asiya Javayant
1049Izzy GarufiSpain2026-04-08Rangoni Of Florence RENEWAL5Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Leon OldroydRussiaAmy Elsner QUALIFIED
Sinclair WaycottJapanElwin Sharvill NEW
Jennifer AmigonIndiaAsiya Javayant NEW
Leon OldroydIndiaOnyama Limba QUALIFIED
Arvin AlbaresCanadaAsiya Javayant UNQUALIFIED
Mayumi KolmetzBrazilAsiya Javayant PROPOSAL
Munro FerenczBrazilBernardo Dominic NEW
Juan WieserGermanyIoni Bowcher NEW
Ashley DoeItalyXuxue Feng NEW
Costa DilliardSpainAsiya Javayant RENEWAL
Mayumi KolmetzBrazilIoni Bowcher NEGOTIATION
Silvio SlusarskiArgentinaStephen Shaw QUALIFIED
Julie StensethIndiaAmy Elsner NEGOTIATION
Emily WhobreyItalyAsiya Javayant NEW
David DarakjyIndiaAsiya Javayant PROPOSAL
Julie StensethRussiaAsiya Javayant PROPOSAL
Smith GlickJapanElwin Sharvill RENEWAL
Aruna FigeroaJapanStephen Shaw UNQUALIFIED
Emily WhobreySpainBernardo Dominic PROPOSAL
Mayumi KolmetzUnited KingdomElwin Sharvill RENEWAL
Morrow RutaCanadaAnna Fali NEGOTIATION
Aditya KuskoIndiaXuxue Feng QUALIFIED
Deepesh ChuiRussiaAnna Fali NEW
Faith GillianJapanAsiya Javayant NEGOTIATION
Aika InouyeUnited KingdomBernardo Dominic UNQUALIFIED
Greenwood BologniaCanadaIoni Bowcher RENEWAL
Maisha RulapaughIndiaIoni Bowcher PROPOSAL
Darci PoquetteBrazilElwin Sharvill QUALIFIED
Maria MarrierArgentinaAnna Fali NEGOTIATION
Sinclair WaycottIndiaAsiya Javayant UNQUALIFIED
Silvio SlusarskiArgentinaAnna Fali NEGOTIATION
Johnson SergiJapanAnna Fali UNQUALIFIED
Emily WhobreyJapanStephen Shaw RENEWAL
Mayumi KolmetzCanadaAmy Elsner NEGOTIATION
Cody SaylorsRussiaXuxue Feng UNQUALIFIED
Leja CaldareraGermanyIoni Bowcher NEGOTIATION
Greenwood BologniaCanadaIvan Magalhaes NEGOTIATION
Isabel BowleyJapanAnna Fali NEGOTIATION
Aika InouyeJapanIoni Bowcher UNQUALIFIED
James ButtUnited KingdomAsiya Javayant QUALIFIED
Antonio CaudyUnited KingdomBernardo Dominic NEW
Nicolas IturbideIndiaStephen Shaw QUALIFIED
Murillo MaletItalyBernardo Dominic NEGOTIATION
Jeanfrancois VenereRussiaIoni Bowcher NEW
Nicolas IturbideUnited KingdomXuxue Feng NEW
Francesco ShinkoJapanXuxue Feng NEW
Chavez BriddickArgentinaIvan Magalhaes NEW
Alejandro PerinBrazilStephen Shaw QUALIFIED
Aditya KuskoAustraliaIvan Magalhaes UNQUALIFIED
Ashley DoeJapanXuxue Feng NEW
Frozen Columns
Name
Maisha Rulapaugh
Silvio Slusarski
Mayumi Kolmetz
Smith Glick
Isabel Bowley
Octavia Malet
Aditya Kusko
Salvatore Stockham
Aika Inouye
Greenwood Bolognia
Aruna Figeroa
Darci Poquette
Isabel Bowley
Ivar Paprocki
Ivar Paprocki
Wickens Nestle
Jeanfrancois Venere
Sinclair Waycott
Ricardo Gaucho
Sinclair Waycott
Murillo Malet
Morrow Ruta
James Butt
Ashley Doe
Darci Poquette
Octavia Malet
Smith Glick
Ashley Doe
Jones Vocelka
Clifford Rim
Arvin Albares
Rodrigues Campain
Emily Whobrey
Darci Poquette
Ricardo Gaucho
Leon Oldroyd
Costa Dilliard
Rodrigues Campain
Claire Tollner
Jefferson Schemmer
David Darakjy
Leon Oldroyd
Ashley Doe
Salvatore Stockham
Mayumi Kolmetz
Aditya Kusko
Aruna Figeroa
Maria Marrier
Emily Whobrey
Costa Dilliard
IdCountryDate
1000Spain2026-04-20
1001Brazil2026-04-13
1002France2026-04-13
1003Italy2026-04-15
1004India2026-04-16
1005India2026-04-22
1006France2026-04-21
1007Germany2026-04-20
1008Australia2026-03-31
1009Italy2026-04-05
1010Australia2026-03-30
1011Brazil2026-04-05
1012United Kingdom2026-04-03
1013France2026-03-31
1014Russia2026-04-21
1015India2026-03-29
1016Italy2026-04-08
1017Italy2026-04-12
1018Argentina2026-04-05
1019France2026-04-08
1020Australia2026-03-27
1021Spain2026-04-04
1022Argentina2026-04-11
1023Russia2026-04-02
1024Argentina2026-04-12
1025Italy2026-04-22
1026United Kingdom2026-04-05
1027Spain2026-04-01
1028India2026-04-20
1029India2026-03-27
1030Japan2026-04-22
1031Spain2026-04-22
1032Italy2026-04-04
1033Argentina2026-04-13
1034Argentina2026-04-08
1035Brazil2026-04-21
1036United Kingdom2026-04-13
1037United Kingdom2026-04-12
1038India2026-04-13
1039Canada2026-04-15
1040India2026-04-13
1041France2026-04-05
1042Australia2026-04-17
1043India2026-03-27
1044Spain2026-04-08
1045Argentina2026-04-19
1046Brazil2026-04-14
1047Germany2026-03-27
1048Canada2026-04-17
1049Brazil2026-04-05

On-Demand Data

NameIdCountryDate
Adams Morasca1000Spain2026-03-24
Ricardo Gaucho1001Germany2026-03-27
Kaitlin Ostrosky1002Argentina2026-03-28
Francesco Shinko1003United Kingdom2026-04-16
Ricardo Gaucho1004Italy2026-04-01
Rodrigues Campain1005Brazil2026-04-17
Antonio Caudy1006Japan2026-04-12
Cody Saylors1007Brazil2026-04-04
Misaki Royster1008Argentina2026-04-01
James Butt1009Argentina2026-04-09
Mayumi Kolmetz1010United Kingdom2026-04-13
Costa Dilliard1011Russia2026-03-24
Jennifer Amigon1012Australia2026-03-28
Aditya Kusko1013Spain2026-04-18
Jefferson Schemmer1014India2026-04-01
Julie Stenseth1015Germany2026-03-28
Alejandro Perin1016Canada2026-03-30
Misaki Royster1017Germany2026-03-29
David Darakjy1018Canada2026-03-29
Octavia Malet1019Argentina2026-04-01
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Johnson SergiFranceStephen Shaw NEGOTIATION
Claire TollnerFranceBernardo Dominic NEGOTIATION
Nicolas IturbideSpainOnyama Limba QUALIFIED
Tony FollerGermanyStephen Shaw QUALIFIED
Clifford RimJapanXuxue Feng NEGOTIATION
Misaki RoysterSpainElwin Sharvill QUALIFIED
Aditya KuskoCanadaElwin Sharvill RENEWAL
Claire TollnerIndiaIoni Bowcher NEGOTIATION
Adams MorascaIndiaAmy Elsner RENEWAL
Johnson SergiIndiaIvan Magalhaes NEGOTIATION
Leja CaldareraJapanStephen Shaw NEGOTIATION
Jefferson SchemmerUnited KingdomOnyama Limba UNQUALIFIED
Francesco ShinkoBrazilXuxue Feng QUALIFIED
Jennifer AmigonCanadaBernardo Dominic UNQUALIFIED
Aditya KuskoCanadaBernardo Dominic QUALIFIED
Morrow RutaRussiaIvan Magalhaes RENEWAL
Aditya KuskoUnited KingdomBernardo Dominic QUALIFIED
Jefferson SchemmerSpainOnyama Limba NEW
Tony FollerIndiaAmy Elsner PROPOSAL
Antonio CaudySpainElwin Sharvill NEGOTIATION
Aditya KuskoIndiaStephen Shaw RENEWAL
Stacey MacleadFranceAmy Elsner UNQUALIFIED
Juan WieserIndiaBernardo Dominic UNQUALIFIED
Salvatore StockhamCanadaIoni Bowcher RENEWAL
Maisha RulapaughFranceXuxue Feng PROPOSAL
Ricardo GauchoJapanElwin Sharvill UNQUALIFIED
Deepesh ChuiFranceStephen Shaw RENEWAL
Stacey MacleadUnited KingdomStephen Shaw PROPOSAL
Salvatore StockhamGermanyOnyama Limba PROPOSAL
Salvatore StockhamFranceXuxue Feng PROPOSAL
Sinclair WaycottItalyAnna Fali RENEWAL
Ivar PaprockiIndiaXuxue Feng UNQUALIFIED
Munro FerenczItalyIvan Magalhaes NEW
Isabel BowleyItalyAsiya Javayant RENEWAL
Tony FollerJapanBernardo Dominic PROPOSAL
Juan WieserRussiaXuxue Feng NEGOTIATION
Kadeem FlosiSpainStephen Shaw QUALIFIED
Wickens NestleBrazilElwin Sharvill NEGOTIATION
Aika InouyeIndiaBernardo Dominic UNQUALIFIED
Claire TollnerIndiaStephen Shaw NEGOTIATION

<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.statusName}">#{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.statusName}">#{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.statusName}">#{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.statusName}">#{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.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

</h:form>