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
Silvio SlusarskiAustraliaOnyama Limba PROPOSAL
Mayumi KolmetzAustraliaAnna Fali PROPOSAL
Aruna FigeroaJapanIvan Magalhaes PROPOSAL
David DarakjyItalyElwin Sharvill NEW
Kaitlin OstroskyIndiaAsiya Javayant RENEWAL
Maria MarrierArgentinaXuxue Feng PROPOSAL
Wickens NestleGermanyIoni Bowcher NEW
Johnson SergiRussiaBernardo Dominic NEW
Claire TollnerJapanIvan Magalhaes UNQUALIFIED
Jennifer AmigonCanadaBernardo Dominic UNQUALIFIED
Morrow RutaCanadaElwin Sharvill NEGOTIATION
Ricardo GauchoArgentinaOnyama Limba PROPOSAL
Izzy GarufiCanadaAnna Fali QUALIFIED
Silvio SlusarskiFranceBernardo Dominic PROPOSAL
Cody SaylorsBrazilAnna Fali NEW
Izzy GarufiFranceIvan Magalhaes RENEWAL
Salvatore StockhamUnited KingdomIvan Magalhaes NEW
Murillo MaletSpainStephen Shaw NEGOTIATION
Juan WieserCanadaXuxue Feng PROPOSAL
Salvatore StockhamGermanyXuxue Feng QUALIFIED
Alejandro PerinJapanIvan Magalhaes QUALIFIED
Tony FollerItalyIoni Bowcher NEGOTIATION
Leon OldroydGermanyBernardo Dominic PROPOSAL
Deepesh ChuiAustraliaBernardo Dominic NEW
Rodrigues CampainArgentinaIvan Magalhaes PROPOSAL
Misaki RoysterIndiaAnna Fali QUALIFIED
Ricardo GauchoGermanyIoni Bowcher UNQUALIFIED
Aditya KuskoSpainAsiya Javayant NEGOTIATION
Antonio CaudyAustraliaAsiya Javayant PROPOSAL
David DarakjyArgentinaBernardo Dominic QUALIFIED
Francesco ShinkoAustraliaStephen Shaw NEGOTIATION
Faith GillianCanadaIoni Bowcher PROPOSAL
Kaitlin OstroskyBrazilOnyama Limba PROPOSAL
Francesco ShinkoRussiaBernardo Dominic QUALIFIED
Isabel BowleyIndiaOnyama Limba UNQUALIFIED
Clifford RimGermanyAsiya Javayant QUALIFIED
Alejandro PerinFranceAmy Elsner NEGOTIATION
Sinclair WaycottCanadaIvan Magalhaes QUALIFIED
Nicolas IturbideGermanyAnna Fali RENEWAL
Maria MarrierJapanXuxue Feng NEW
Chavez BriddickArgentinaAnna Fali RENEWAL
Jennifer AmigonAustraliaOnyama Limba NEGOTIATION
Darci PoquetteJapanAmy Elsner PROPOSAL
Misaki RoysterRussiaOnyama Limba UNQUALIFIED
Salvatore StockhamCanadaAmy Elsner QUALIFIED
Leja CaldareraCanadaXuxue Feng UNQUALIFIED
Arvin AlbaresCanadaStephen Shaw RENEWAL
Arvin AlbaresUnited KingdomIvan Magalhaes NEGOTIATION
Nicolas IturbideIndiaXuxue Feng RENEWAL
David DarakjyRussiaIvan Magalhaes UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Jefferson SchemmerGermanyOnyama Limba RENEWAL
Stacey MacleadSpainStephen Shaw NEGOTIATION
Salvatore StockhamCanadaAmy Elsner NEGOTIATION
Ricardo GauchoBrazilBernardo Dominic NEGOTIATION
Mujtaba NickaFranceStephen Shaw QUALIFIED
Alejandro PerinSpainOnyama Limba UNQUALIFIED
Claire TollnerSpainAnna Fali NEGOTIATION
Maria MarrierIndiaElwin Sharvill PROPOSAL
Aika InouyeRussiaAsiya Javayant UNQUALIFIED
Jeanfrancois VenereUnited KingdomElwin Sharvill RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jennifer AmigonBrazil2026-05-13Rousseaux, Michael Esq PROPOSAL51Bernardo Dominic
1001Jennifer AmigonBrazil2026-05-06Dorl, James J Esq UNQUALIFIED80Amy Elsner
1002Juan WieserGermany2026-05-20Rousseaux, Michael Esq QUALIFIED96Onyama Limba
1003Adams MorascaCanada2026-06-02Chanay, Jeffrey A Esq NEGOTIATION67Stephen Shaw
1004Tony FollerIndia2026-05-13Buckley Miller Wright RENEWAL8Elwin Sharvill
1005Maria MarrierJapan2026-05-24Morlong Associates UNQUALIFIED4Amy Elsner
1006Francesco ShinkoBrazil2026-05-26Feltz Printing Service UNQUALIFIED16Stephen Shaw
1007Cody SaylorsUnited Kingdom2026-05-20Rangoni Of Florence PROPOSAL66Onyama Limba
1008Aika InouyeSpain2026-05-24Rangoni Of Florence UNQUALIFIED20Anna Fali
1009Ivar PaprockiIndia2026-05-12Buckley Miller Wright NEGOTIATION64Bernardo Dominic
1010Cody SaylorsGermany2026-05-30Rangoni Of Florence QUALIFIED38Xuxue Feng
1011Murillo MaletSpain2026-05-07Truhlar And Truhlar Attys NEW86Ivan Magalhaes
1012Ivar PaprockiArgentina2026-05-13Morlong Associates QUALIFIED83Xuxue Feng
1013Stacey MacleadCanada2026-05-10Feltz Printing Service QUALIFIED88Elwin Sharvill
1014Izzy GarufiUnited Kingdom2026-05-23Commercial Press NEW2Amy Elsner
1015Emily WhobreyBrazil2026-05-16Dorl, James J Esq QUALIFIED23Ivan Magalhaes
1016Jefferson SchemmerFrance2026-05-24Rousseaux, Michael Esq RENEWAL17Bernardo Dominic
1017Cody SaylorsCanada2026-05-21Truhlar And Truhlar Attys NEGOTIATION60Stephen Shaw
1018Arvin AlbaresArgentina2026-05-15Buckley Miller Wright UNQUALIFIED57Asiya Javayant
1019Morrow RutaRussia2026-05-11King, Christopher A Esq NEGOTIATION11Xuxue Feng
1020Mayumi KolmetzCanada2026-05-27Chanay, Jeffrey A Esq NEGOTIATION69Ioni Bowcher
1021Ricardo GauchoJapan2026-05-14Rangoni Of Florence QUALIFIED85Anna Fali
1022Alejandro PerinIndia2026-06-02Benton, John B Jr NEW40Bernardo Dominic
1023Darci PoquetteCanada2026-05-12Rangoni Of Florence RENEWAL60Ioni Bowcher
1024Emily WhobreyFrance2026-05-07Commercial Press RENEWAL75Stephen Shaw
1025Kaitlin OstroskyBrazil2026-05-07Feiner Bros QUALIFIED84Ivan Magalhaes
1026Leja CaldareraIndia2026-05-26Chapman, Ross E Esq QUALIFIED12Elwin Sharvill
1027Misaki RoysterJapan2026-05-10Chapman, Ross E Esq RENEWAL81Ivan Magalhaes
1028Antonio CaudyAustralia2026-05-16Feltz Printing Service RENEWAL23Anna Fali
1029Sinclair WaycottArgentina2026-05-26Chanay, Jeffrey A Esq UNQUALIFIED77Onyama Limba
1030Leon OldroydArgentina2026-05-25King, Christopher A Esq PROPOSAL17Onyama Limba
1031Claire TollnerIndia2026-05-05Benton, John B Jr QUALIFIED52Asiya Javayant
1032Isabel BowleyArgentina2026-05-06Rangoni Of Florence NEW1Ioni Bowcher
1033Ricardo GauchoRussia2026-05-14King, Christopher A Esq NEW80Anna Fali
1034Murillo MaletJapan2026-05-10Truhlar And Truhlar Attys UNQUALIFIED37Asiya Javayant
1035Mujtaba NickaArgentina2026-05-22Truhlar And Truhlar Attys NEW23Onyama Limba
1036Leon OldroydCanada2026-05-12Printing Dimensions NEGOTIATION44Ivan Magalhaes
1037Rodrigues CampainAustralia2026-05-17Chanay, Jeffrey A Esq PROPOSAL89Stephen Shaw
1038Juan WieserItaly2026-05-15Chanay, Jeffrey A Esq RENEWAL15Onyama Limba
1039Morrow RutaAustralia2026-05-07Commercial Press PROPOSAL25Stephen Shaw
1040James ButtAustralia2026-05-31Rousseaux, Michael Esq QUALIFIED89Ivan Magalhaes
1041Silvio SlusarskiGermany2026-05-25Dorl, James J Esq PROPOSAL14Asiya Javayant
1042Izzy GarufiUnited Kingdom2026-06-01Feltz Printing Service NEW20Ioni Bowcher
1043Octavia MaletCanada2026-05-25Rangoni Of Florence NEGOTIATION74Ivan Magalhaes
1044Julie StensethJapan2026-05-17Chanay, Jeffrey A Esq RENEWAL53Asiya Javayant
1045Tony FollerArgentina2026-05-19Dorl, James J Esq RENEWAL63Amy Elsner
1046Leja CaldareraGermany2026-05-09Chapman, Ross E Esq NEW73Asiya Javayant
1047Francesco ShinkoIndia2026-05-08Chanay, Jeffrey A Esq UNQUALIFIED62Stephen Shaw
1048James ButtItaly2026-05-09Benton, John B Jr NEW88Amy Elsner
1049Emily WhobreyUnited Kingdom2026-05-18Chemel, James L Cpa PROPOSAL2Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Munro FerenczArgentinaXuxue Feng NEGOTIATION
Greenwood BologniaAustraliaStephen Shaw NEW
Misaki RoysterIndiaAnna Fali UNQUALIFIED
Darci PoquetteUnited KingdomAmy Elsner PROPOSAL
Octavia MaletUnited KingdomElwin Sharvill NEW
Costa DilliardFranceXuxue Feng PROPOSAL
Jones VocelkaRussiaAmy Elsner NEW
Antonio CaudySpainIoni Bowcher QUALIFIED
Silvio SlusarskiCanadaIoni Bowcher NEGOTIATION
Sinclair WaycottArgentinaStephen Shaw PROPOSAL
Cody SaylorsIndiaBernardo Dominic UNQUALIFIED
Ivar PaprockiAustraliaElwin Sharvill RENEWAL
Stacey MacleadCanadaAsiya Javayant UNQUALIFIED
Jeanfrancois VenereArgentinaAnna Fali UNQUALIFIED
Salvatore StockhamSpainElwin Sharvill PROPOSAL
Claire TollnerUnited KingdomIoni Bowcher RENEWAL
Salvatore StockhamJapanXuxue Feng NEW
Aditya KuskoAustraliaIoni Bowcher RENEWAL
Morrow RutaRussiaBernardo Dominic NEW
Maisha RulapaughArgentinaStephen Shaw QUALIFIED
Jeanfrancois VenereUnited KingdomElwin Sharvill NEGOTIATION
Tony FollerArgentinaAsiya Javayant RENEWAL
Wickens NestleAustraliaIvan Magalhaes RENEWAL
Julie StensethUnited KingdomBernardo Dominic QUALIFIED
Misaki RoysterRussiaAsiya Javayant QUALIFIED
Izzy GarufiUnited KingdomStephen Shaw RENEWAL
Deepesh ChuiIndiaOnyama Limba RENEWAL
Maria MarrierCanadaIvan Magalhaes RENEWAL
Morrow RutaUnited KingdomIvan Magalhaes UNQUALIFIED
Aika InouyeAustraliaIoni Bowcher NEW
Kadeem FlosiGermanyBernardo Dominic NEW
Morrow RutaRussiaXuxue Feng NEW
Jeanfrancois VenereFranceBernardo Dominic QUALIFIED
Leon OldroydBrazilIvan Magalhaes NEW
Arvin AlbaresBrazilAnna Fali UNQUALIFIED
Darci PoquetteGermanyElwin Sharvill RENEWAL
Isabel BowleyIndiaElwin Sharvill UNQUALIFIED
James ButtArgentinaAmy Elsner UNQUALIFIED
Aruna FigeroaAustraliaBernardo Dominic NEGOTIATION
Morrow RutaUnited KingdomAsiya Javayant QUALIFIED
Greenwood BologniaJapanBernardo Dominic UNQUALIFIED
Ivar PaprockiUnited KingdomIoni Bowcher PROPOSAL
Mujtaba NickaItalyAmy Elsner PROPOSAL
Morrow RutaUnited KingdomAmy Elsner NEW
Tony FollerBrazilAmy Elsner NEW
Silvio SlusarskiFranceElwin Sharvill RENEWAL
Deepesh ChuiAustraliaAsiya Javayant RENEWAL
Costa DilliardFranceStephen Shaw NEW
Ashley DoeIndiaAsiya Javayant NEGOTIATION
Leja CaldareraArgentinaXuxue Feng NEW
Frozen Columns
Name
Ivar Paprocki
Wickens Nestle
Isabel Bowley
Silvio Slusarski
Nicolas Iturbide
Johnson Sergi
Faith Gillian
Deepesh Chui
Mayumi Kolmetz
Kaitlin Ostrosky
Maria Marrier
Izzy Garufi
Ashley Doe
Aditya Kusko
Aruna Figeroa
Tony Foller
Kaitlin Ostrosky
Misaki Royster
Costa Dilliard
Smith Glick
Julie Stenseth
Alejandro Perin
Mayumi Kolmetz
Juan Wieser
Wickens Nestle
Jeanfrancois Venere
Kadeem Flosi
Stacey Maclead
Rodrigues Campain
Misaki Royster
Mayumi Kolmetz
Faith Gillian
Francesco Shinko
Nicolas Iturbide
Darci Poquette
Costa Dilliard
Octavia Malet
Silvio Slusarski
Morrow Ruta
Kadeem Flosi
Adams Morasca
Aika Inouye
Leja Caldarera
James Butt
Ricardo Gaucho
Claire Tollner
Jennifer Amigon
Chavez Briddick
Jeanfrancois Venere
Deepesh Chui
IdCountryDate
1000Russia2026-05-20
1001Argentina2026-05-19
1002Spain2026-05-22
1003Australia2026-05-15
1004Brazil2026-05-05
1005India2026-05-26
1006France2026-05-06
1007Japan2026-05-28
1008France2026-05-06
1009Italy2026-05-09
1010Italy2026-05-09
1011Italy2026-05-10
1012Russia2026-05-29
1013France2026-05-11
1014Canada2026-05-15
1015Germany2026-05-21
1016Australia2026-05-11
1017India2026-05-16
1018Australia2026-06-02
1019United Kingdom2026-05-24
1020Brazil2026-05-30
1021India2026-05-31
1022Spain2026-05-18
1023India2026-06-01
1024Japan2026-05-30
1025France2026-05-12
1026Italy2026-05-06
1027Spain2026-05-07
1028Spain2026-05-07
1029Italy2026-05-31
1030Japan2026-05-11
1031Japan2026-05-22
1032India2026-05-26
1033United Kingdom2026-05-19
1034Australia2026-05-18
1035Australia2026-05-07
1036Japan2026-05-12
1037Canada2026-05-08
1038France2026-05-14
1039France2026-05-05
1040Argentina2026-05-08
1041Italy2026-05-30
1042Spain2026-06-02
1043Russia2026-05-07
1044Russia2026-05-22
1045Russia2026-05-09
1046Italy2026-05-12
1047United Kingdom2026-05-12
1048France2026-05-30
1049France2026-05-05

On-Demand Data

NameIdCountryDate
Maria Marrier1000Australia2026-05-08
Isabel Bowley1001France2026-05-07
Murillo Malet1002Argentina2026-05-20
Darci Poquette1003Italy2026-05-26
James Butt1004Japan2026-05-10
Morrow Ruta1005Russia2026-05-12
Costa Dilliard1006Canada2026-05-24
Kadeem Flosi1007Brazil2026-05-28
Adams Morasca1008Australia2026-06-01
Morrow Ruta1009France2026-05-25
Sinclair Waycott1010Italy2026-05-06
Smith Glick1011Australia2026-05-23
Munro Ferencz1012United Kingdom2026-05-06
Jeanfrancois Venere1013Italy2026-05-12
Mayumi Kolmetz1014Argentina2026-05-22
Octavia Malet1015France2026-05-18
Sinclair Waycott1016Japan2026-05-09
Isabel Bowley1017Australia2026-05-31
Leja Caldarera1018Argentina2026-05-28
Cody Saylors1019Italy2026-05-21
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kaitlin OstroskySpainIoni Bowcher RENEWAL
Kaitlin OstroskyRussiaBernardo Dominic RENEWAL
Kaitlin OstroskyFranceAsiya Javayant QUALIFIED
Adams MorascaIndiaIvan Magalhaes QUALIFIED
Deepesh ChuiGermanyOnyama Limba UNQUALIFIED
Deepesh ChuiRussiaAmy Elsner NEGOTIATION
Aika InouyeSpainElwin Sharvill NEW
Misaki RoysterGermanyOnyama Limba NEGOTIATION
Julie StensethAustraliaXuxue Feng UNQUALIFIED
Tony FollerAustraliaElwin Sharvill QUALIFIED
Aditya KuskoSpainAsiya Javayant PROPOSAL
Greenwood BologniaAustraliaIoni Bowcher UNQUALIFIED
Rodrigues CampainSpainBernardo Dominic NEGOTIATION
Aruna FigeroaArgentinaOnyama Limba RENEWAL
Morrow RutaGermanyStephen Shaw PROPOSAL
Faith GillianAustraliaAmy Elsner PROPOSAL
Ashley DoeJapanAnna Fali NEW
Leja CaldareraCanadaIoni Bowcher UNQUALIFIED
Aditya KuskoUnited KingdomElwin Sharvill PROPOSAL
Ashley DoeRussiaBernardo Dominic UNQUALIFIED
Leja CaldareraGermanyIvan Magalhaes QUALIFIED
Nicolas IturbideJapanAsiya Javayant RENEWAL
Cody SaylorsIndiaAsiya Javayant NEGOTIATION
James ButtItalyBernardo Dominic NEGOTIATION
Smith GlickArgentinaElwin Sharvill PROPOSAL
Alejandro PerinFranceBernardo Dominic NEW
Sinclair WaycottArgentinaAsiya Javayant RENEWAL
Alejandro PerinCanadaElwin Sharvill NEW
Murillo MaletFranceAsiya Javayant QUALIFIED
Costa DilliardIndiaXuxue Feng QUALIFIED
Misaki RoysterJapanAnna Fali QUALIFIED
Mayumi KolmetzJapanAnna Fali NEGOTIATION
Munro FerenczJapanXuxue Feng RENEWAL
Morrow RutaUnited KingdomXuxue Feng RENEWAL
Tony FollerIndiaOnyama Limba NEGOTIATION
Deepesh ChuiUnited KingdomIoni Bowcher UNQUALIFIED
Jennifer AmigonRussiaOnyama Limba NEGOTIATION
Salvatore StockhamFranceAmy Elsner QUALIFIED
Adams MorascaRussiaBernardo Dominic NEGOTIATION
Antonio CaudyRussiaXuxue Feng 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.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>