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
Rodrigues CampainJapanAmy Elsner RENEWAL
Antonio CaudyIndiaStephen Shaw QUALIFIED
Mujtaba NickaBrazilAnna Fali NEW
Johnson SergiItalyElwin Sharvill UNQUALIFIED
Tony FollerCanadaOnyama Limba NEW
Emily WhobreyCanadaBernardo Dominic UNQUALIFIED
Cody SaylorsRussiaElwin Sharvill NEGOTIATION
James ButtJapanBernardo Dominic NEGOTIATION
Misaki RoysterAustraliaAmy Elsner RENEWAL
Clifford RimItalyAsiya Javayant RENEWAL
David DarakjySpainAsiya Javayant UNQUALIFIED
Salvatore StockhamGermanyXuxue Feng NEGOTIATION
Mayumi KolmetzItalyOnyama Limba UNQUALIFIED
Jones VocelkaJapanIoni Bowcher PROPOSAL
Murillo MaletGermanyOnyama Limba UNQUALIFIED
Isabel BowleyAustraliaStephen Shaw UNQUALIFIED
Wickens NestleCanadaIvan Magalhaes RENEWAL
Murillo MaletIndiaAsiya Javayant NEW
Murillo MaletUnited KingdomAnna Fali QUALIFIED
Arvin AlbaresItalyAmy Elsner NEGOTIATION
Antonio CaudyArgentinaOnyama Limba PROPOSAL
Sinclair WaycottBrazilAnna Fali NEGOTIATION
Jennifer AmigonArgentinaAsiya Javayant NEGOTIATION
Adams MorascaRussiaOnyama Limba UNQUALIFIED
Clifford RimAustraliaStephen Shaw NEGOTIATION
Jennifer AmigonArgentinaBernardo Dominic RENEWAL
Kadeem FlosiCanadaXuxue Feng QUALIFIED
Ashley DoeBrazilIoni Bowcher QUALIFIED
Aika InouyeCanadaAsiya Javayant RENEWAL
Leja CaldareraFranceXuxue Feng NEGOTIATION
Smith GlickJapanElwin Sharvill NEW
Ivar PaprockiIndiaStephen Shaw PROPOSAL
Adams MorascaSpainBernardo Dominic UNQUALIFIED
Sinclair WaycottIndiaOnyama Limba NEW
Adams MorascaBrazilAsiya Javayant UNQUALIFIED
Izzy GarufiJapanAnna Fali PROPOSAL
Adams MorascaBrazilOnyama Limba UNQUALIFIED
Mujtaba NickaCanadaStephen Shaw UNQUALIFIED
Alejandro PerinUnited KingdomAnna Fali NEGOTIATION
Smith GlickJapanAsiya Javayant NEW
Leon OldroydCanadaIvan Magalhaes UNQUALIFIED
Jennifer AmigonSpainOnyama Limba RENEWAL
Aditya KuskoArgentinaStephen Shaw PROPOSAL
Ashley DoeBrazilAsiya Javayant NEGOTIATION
Octavia MaletGermanyIvan Magalhaes RENEWAL
Morrow RutaBrazilIoni Bowcher QUALIFIED
Arvin AlbaresItalyAnna Fali PROPOSAL
Jones VocelkaIndiaOnyama Limba QUALIFIED
Darci PoquetteIndiaIoni Bowcher NEGOTIATION
Nicolas IturbideIndiaElwin Sharvill PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Chavez BriddickAustraliaIoni Bowcher NEGOTIATION
Greenwood BologniaBrazilOnyama Limba QUALIFIED
Leon OldroydItalyBernardo Dominic RENEWAL
Emily WhobreyFranceStephen Shaw UNQUALIFIED
Morrow RutaAustraliaStephen Shaw NEGOTIATION
Stacey MacleadCanadaOnyama Limba QUALIFIED
Emily WhobreyItalyBernardo Dominic UNQUALIFIED
Misaki RoysterBrazilBernardo Dominic UNQUALIFIED
Smith GlickItalyXuxue Feng QUALIFIED
Salvatore StockhamArgentinaOnyama Limba RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maisha RulapaughUnited Kingdom2025-08-13Rousseaux, Michael Esq NEW97Stephen Shaw
1001Octavia MaletSpain2025-09-01Truhlar And Truhlar Attys QUALIFIED26Onyama Limba
1002Murillo MaletSpain2025-08-10Truhlar And Truhlar Attys NEW51Elwin Sharvill
1003Chavez BriddickJapan2025-08-11Buckley Miller Wright UNQUALIFIED85Ivan Magalhaes
1004Johnson SergiUnited Kingdom2025-08-09King, Christopher A Esq PROPOSAL99Ivan Magalhaes
1005Claire TollnerGermany2025-08-24Dorl, James J Esq PROPOSAL97Ioni Bowcher
1006Maisha RulapaughFrance2025-08-10Morlong Associates QUALIFIED27Ivan Magalhaes
1007Misaki RoysterGermany2025-08-08Dorl, James J Esq RENEWAL52Asiya Javayant
1008Jennifer AmigonJapan2025-08-31Chanay, Jeffrey A Esq RENEWAL86Bernardo Dominic
1009Ivar PaprockiRussia2025-08-19Commercial Press QUALIFIED11Stephen Shaw
1010Smith GlickArgentina2025-08-07Chapman, Ross E Esq RENEWAL80Stephen Shaw
1011Greenwood BologniaSpain2025-08-09Benton, John B Jr NEW15Amy Elsner
1012Sinclair WaycottBrazil2025-08-13Commercial Press PROPOSAL73Ioni Bowcher
1013Munro FerenczJapan2025-08-14Chemel, James L Cpa PROPOSAL64Ioni Bowcher
1014Munro FerenczIndia2025-08-14King, Christopher A Esq UNQUALIFIED49Stephen Shaw
1015Aika InouyeJapan2025-08-08Feiner Bros NEW43Ivan Magalhaes
1016James ButtBrazil2025-08-29Chemel, James L Cpa NEW25Onyama Limba
1017Jennifer AmigonGermany2025-08-11King, Christopher A Esq NEGOTIATION32Ivan Magalhaes
1018Francesco ShinkoBrazil2025-08-10Feiner Bros PROPOSAL20Bernardo Dominic
1019Aditya KuskoFrance2025-08-12Buckley Miller Wright RENEWAL46Ivan Magalhaes
1020Murillo MaletJapan2025-08-30Chemel, James L Cpa NEW22Bernardo Dominic
1021Jefferson SchemmerRussia2025-08-26King, Christopher A Esq UNQUALIFIED31Onyama Limba
1022Silvio SlusarskiArgentina2025-08-17Chanay, Jeffrey A Esq RENEWAL64Ivan Magalhaes
1023Deepesh ChuiArgentina2025-08-06Morlong Associates NEW64Asiya Javayant
1024Claire TollnerGermany2025-08-13Dorl, James J Esq UNQUALIFIED34Elwin Sharvill
1025Aruna FigeroaArgentina2025-08-19Chemel, James L Cpa UNQUALIFIED27Amy Elsner
1026Wickens NestleBrazil2025-08-16Feiner Bros UNQUALIFIED94Asiya Javayant
1027Sinclair WaycottFrance2025-08-08King, Christopher A Esq UNQUALIFIED51Asiya Javayant
1028Cody SaylorsRussia2025-08-08Chanay, Jeffrey A Esq QUALIFIED74Asiya Javayant
1029Francesco ShinkoJapan2025-08-19Chapman, Ross E Esq NEGOTIATION20Onyama Limba
1030Deepesh ChuiAustralia2025-08-24Chemel, James L Cpa RENEWAL90Bernardo Dominic
1031Kadeem FlosiGermany2025-08-15Benton, John B Jr NEGOTIATION70Xuxue Feng
1032Francesco ShinkoItaly2025-08-04Commercial Press RENEWAL13Ioni Bowcher
1033Aruna FigeroaGermany2025-08-14Benton, John B Jr RENEWAL32Xuxue Feng
1034Clifford RimGermany2025-08-14Truhlar And Truhlar Attys RENEWAL56Amy Elsner
1035Antonio CaudyAustralia2025-08-13Feiner Bros NEGOTIATION6Anna Fali
1036Antonio CaudyIndia2025-09-01Rangoni Of Florence PROPOSAL5Asiya Javayant
1037Maria MarrierAustralia2025-08-12Benton, John B Jr NEW29Ioni Bowcher
1038Kaitlin OstroskySpain2025-08-14Chapman, Ross E Esq QUALIFIED5Stephen Shaw
1039Johnson SergiUnited Kingdom2025-08-30Rousseaux, Michael Esq RENEWAL9Asiya Javayant
1040Jefferson SchemmerJapan2025-08-23Benton, John B Jr QUALIFIED21Xuxue Feng
1041Misaki RoysterUnited Kingdom2025-08-09Chanay, Jeffrey A Esq NEGOTIATION65Onyama Limba
1042Greenwood BologniaArgentina2025-08-08Buckley Miller Wright PROPOSAL41Anna Fali
1043Misaki RoysterSpain2025-08-05Chapman, Ross E Esq NEGOTIATION33Xuxue Feng
1044Jefferson SchemmerGermany2025-08-12Printing Dimensions UNQUALIFIED40Xuxue Feng
1045Deepesh ChuiJapan2025-08-16Rousseaux, Michael Esq NEW96Stephen Shaw
1046Darci PoquetteBrazil2025-08-19Benton, John B Jr PROPOSAL25Stephen Shaw
1047Isabel BowleyIndia2025-08-19Printing Dimensions UNQUALIFIED25Xuxue Feng
1048Jeanfrancois VenereFrance2025-08-23Commercial Press PROPOSAL14Asiya Javayant
1049Ivar PaprockiIndia2025-08-13Buckley Miller Wright PROPOSAL42Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Isabel BowleyItalyAnna Fali NEGOTIATION
Sinclair WaycottUnited KingdomElwin Sharvill PROPOSAL
Faith GillianRussiaIvan Magalhaes NEW
Jones VocelkaArgentinaAmy Elsner RENEWAL
Aika InouyeAustraliaBernardo Dominic RENEWAL
Leon OldroydItalyElwin Sharvill UNQUALIFIED
Jeanfrancois VenereSpainAnna Fali UNQUALIFIED
Arvin AlbaresGermanyIvan Magalhaes NEW
Deepesh ChuiUnited KingdomOnyama Limba NEGOTIATION
Aditya KuskoSpainStephen Shaw NEW
Ashley DoeRussiaAsiya Javayant PROPOSAL
Kaitlin OstroskyJapanAnna Fali UNQUALIFIED
Ricardo GauchoGermanyAsiya Javayant UNQUALIFIED
Nicolas IturbideCanadaAmy Elsner PROPOSAL
Munro FerenczItalyIoni Bowcher PROPOSAL
Greenwood BologniaFranceStephen Shaw PROPOSAL
Isabel BowleySpainIoni Bowcher NEGOTIATION
Jeanfrancois VenereRussiaAsiya Javayant NEGOTIATION
Johnson SergiBrazilIoni Bowcher UNQUALIFIED
Jefferson SchemmerIndiaIvan Magalhaes NEGOTIATION
Deepesh ChuiSpainIoni Bowcher UNQUALIFIED
Sinclair WaycottCanadaAsiya Javayant RENEWAL
Morrow RutaArgentinaAnna Fali NEGOTIATION
Johnson SergiCanadaAmy Elsner PROPOSAL
Salvatore StockhamJapanBernardo Dominic QUALIFIED
Aika InouyeFranceBernardo Dominic UNQUALIFIED
Emily WhobreyFranceElwin Sharvill NEW
Clifford RimRussiaAsiya Javayant RENEWAL
Wickens NestleCanadaBernardo Dominic UNQUALIFIED
Ivar PaprockiItalyAsiya Javayant PROPOSAL
Clifford RimItalyAmy Elsner UNQUALIFIED
Deepesh ChuiUnited KingdomIoni Bowcher QUALIFIED
Ricardo GauchoCanadaElwin Sharvill QUALIFIED
Leon OldroydSpainAsiya Javayant UNQUALIFIED
Clifford RimArgentinaElwin Sharvill NEGOTIATION
Leon OldroydUnited KingdomAsiya Javayant PROPOSAL
Mujtaba NickaCanadaIoni Bowcher NEGOTIATION
Munro FerenczFranceElwin Sharvill NEW
Claire TollnerBrazilElwin Sharvill PROPOSAL
Octavia MaletFranceIvan Magalhaes QUALIFIED
Clifford RimItalyAmy Elsner RENEWAL
Ivar PaprockiGermanyStephen Shaw PROPOSAL
Clifford RimJapanOnyama Limba UNQUALIFIED
Kaitlin OstroskyBrazilAnna Fali NEW
Aditya KuskoAustraliaIvan Magalhaes PROPOSAL
Kaitlin OstroskyBrazilAsiya Javayant QUALIFIED
Octavia MaletIndiaStephen Shaw NEW
Leon OldroydGermanyAsiya Javayant NEW
Isabel BowleyAustraliaBernardo Dominic PROPOSAL
David DarakjyArgentinaAsiya Javayant NEGOTIATION
Frozen Columns
Name
Clifford Rim
Kadeem Flosi
Tony Foller
Costa Dilliard
Silvio Slusarski
Leon Oldroyd
Leja Caldarera
Alejandro Perin
Faith Gillian
Sinclair Waycott
Costa Dilliard
Mayumi Kolmetz
Jefferson Schemmer
Wickens Nestle
Antonio Caudy
Juan Wieser
Johnson Sergi
Kaitlin Ostrosky
Wickens Nestle
Claire Tollner
Julie Stenseth
Claire Tollner
David Darakjy
David Darakjy
Arvin Albares
Aruna Figeroa
Ivar Paprocki
Octavia Malet
Munro Ferencz
Claire Tollner
Juan Wieser
Faith Gillian
Ashley Doe
Maisha Rulapaugh
Isabel Bowley
Sinclair Waycott
Rodrigues Campain
Juan Wieser
Morrow Ruta
Arvin Albares
Kaitlin Ostrosky
Antonio Caudy
Greenwood Bolognia
Chavez Briddick
Arvin Albares
Aruna Figeroa
Costa Dilliard
Aruna Figeroa
Alejandro Perin
Stacey Maclead
IdCountryDate
1000Russia2025-08-04
1001India2025-08-27
1002Canada2025-08-24
1003Brazil2025-08-26
1004Japan2025-08-09
1005Canada2025-08-29
1006Japan2025-08-26
1007Brazil2025-08-07
1008Australia2025-08-25
1009Russia2025-08-11
1010Germany2025-08-05
1011Italy2025-08-28
1012Spain2025-08-25
1013Russia2025-09-02
1014Germany2025-08-07
1015Argentina2025-08-20
1016Australia2025-08-18
1017India2025-08-16
1018Brazil2025-08-07
1019United Kingdom2025-08-05
1020Japan2025-08-23
1021Australia2025-08-28
1022France2025-09-01
1023Japan2025-08-05
1024Italy2025-08-27
1025Argentina2025-08-06
1026India2025-08-13
1027Australia2025-09-02
1028Brazil2025-08-19
1029Germany2025-08-31
1030Russia2025-08-31
1031India2025-08-17
1032Russia2025-08-23
1033Japan2025-08-04
1034Italy2025-08-21
1035Argentina2025-08-06
1036France2025-08-05
1037Canada2025-08-07
1038United Kingdom2025-08-31
1039Italy2025-08-21
1040Australia2025-08-04
1041Canada2025-08-11
1042France2025-08-08
1043Argentina2025-08-29
1044Japan2025-09-01
1045Germany2025-08-06
1046Australia2025-08-16
1047Japan2025-08-21
1048Spain2025-08-10
1049Germany2025-08-08

On-Demand Data

NameIdCountryDate
Francesco Shinko1000Germany2025-08-21
Johnson Sergi1001France2025-08-22
Salvatore Stockham1002Canada2025-08-15
Aditya Kusko1003Italy2025-08-26
Francesco Shinko1004France2025-08-10
Misaki Royster1005Spain2025-08-21
Aruna Figeroa1006Argentina2025-08-27
Maisha Rulapaugh1007Russia2025-08-21
Jones Vocelka1008Brazil2025-08-08
Emily Whobrey1009Germany2025-08-20
Isabel Bowley1010Brazil2025-08-04
Claire Tollner1011Spain2025-08-11
Jones Vocelka1012Canada2025-08-21
Salvatore Stockham1013Australia2025-08-08
Ivar Paprocki1014Italy2025-08-24
Jennifer Amigon1015Argentina2025-08-26
David Darakjy1016Spain2025-08-27
James Butt1017Russia2025-09-02
Isabel Bowley1018Italy2025-08-30
Cody Saylors1019Brazil2025-08-19
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Munro FerenczIndiaAsiya Javayant NEGOTIATION
Sinclair WaycottBrazilAmy Elsner PROPOSAL
Arvin AlbaresGermanyAnna Fali QUALIFIED
Jennifer AmigonIndiaOnyama Limba QUALIFIED
Leon OldroydUnited KingdomAmy Elsner NEGOTIATION
Mujtaba NickaUnited KingdomElwin Sharvill QUALIFIED
Ricardo GauchoCanadaIvan Magalhaes UNQUALIFIED
Antonio CaudyGermanyAsiya Javayant RENEWAL
Rodrigues CampainCanadaStephen Shaw PROPOSAL
Aika InouyeAustraliaXuxue Feng UNQUALIFIED
Kadeem FlosiBrazilAmy Elsner NEW
Clifford RimItalyIoni Bowcher RENEWAL
Ivar PaprockiItalyAnna Fali RENEWAL
Stacey MacleadIndiaBernardo Dominic RENEWAL
Octavia MaletBrazilAnna Fali NEW
Nicolas IturbideCanadaStephen Shaw NEW
Claire TollnerSpainIoni Bowcher PROPOSAL
Chavez BriddickIndiaXuxue Feng PROPOSAL
Aruna FigeroaAustraliaStephen Shaw NEW
Greenwood BologniaRussiaAnna Fali QUALIFIED
Morrow RutaGermanyIoni Bowcher NEGOTIATION
Aditya KuskoSpainStephen Shaw NEGOTIATION
Leja CaldareraFranceOnyama Limba QUALIFIED
Salvatore StockhamUnited KingdomAsiya Javayant UNQUALIFIED
Adams MorascaRussiaOnyama Limba RENEWAL
Emily WhobreyUnited KingdomAnna Fali PROPOSAL
Jones VocelkaCanadaAsiya Javayant NEGOTIATION
Cody SaylorsRussiaElwin Sharvill NEGOTIATION
Maria MarrierArgentinaAsiya Javayant RENEWAL
Stacey MacleadJapanElwin Sharvill QUALIFIED
Jennifer AmigonAustraliaXuxue Feng PROPOSAL
Izzy GarufiArgentinaBernardo Dominic NEW
Faith GillianJapanStephen Shaw NEW
Rodrigues CampainUnited KingdomIoni Bowcher UNQUALIFIED
Greenwood BologniaSpainAsiya Javayant PROPOSAL
Wickens NestleIndiaAnna Fali NEGOTIATION
Ashley DoeJapanAsiya Javayant PROPOSAL
Ashley DoeBrazilElwin Sharvill PROPOSAL
Morrow RutaSpainAnna Fali NEW
Munro FerenczUnited KingdomStephen Shaw NEW

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