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
Kadeem FlosiIndiaIvan Magalhaes NEGOTIATION
Murillo MaletIndiaXuxue Feng RENEWAL
Juan WieserRussiaOnyama Limba RENEWAL
Faith GillianRussiaOnyama Limba UNQUALIFIED
Ricardo GauchoIndiaElwin Sharvill NEW
Smith GlickArgentinaBernardo Dominic RENEWAL
Leja CaldareraUnited KingdomAnna Fali QUALIFIED
Arvin AlbaresArgentinaXuxue Feng RENEWAL
Claire TollnerAustraliaXuxue Feng NEGOTIATION
Ashley DoeSpainIvan Magalhaes NEGOTIATION
Costa DilliardGermanyAsiya Javayant RENEWAL
Wickens NestleAustraliaElwin Sharvill PROPOSAL
Johnson SergiArgentinaIoni Bowcher QUALIFIED
Faith GillianJapanStephen Shaw RENEWAL
Ashley DoeUnited KingdomAnna Fali UNQUALIFIED
Wickens NestleRussiaAsiya Javayant PROPOSAL
Faith GillianJapanOnyama Limba QUALIFIED
Costa DilliardUnited KingdomAmy Elsner UNQUALIFIED
Chavez BriddickIndiaIoni Bowcher NEGOTIATION
Antonio CaudyBrazilIoni Bowcher PROPOSAL
Juan WieserCanadaIoni Bowcher UNQUALIFIED
Maisha RulapaughBrazilAmy Elsner NEGOTIATION
Greenwood BologniaBrazilAnna Fali UNQUALIFIED
Morrow RutaItalyXuxue Feng RENEWAL
James ButtBrazilXuxue Feng RENEWAL
Costa DilliardBrazilBernardo Dominic UNQUALIFIED
Deepesh ChuiJapanXuxue Feng QUALIFIED
Chavez BriddickAustraliaAsiya Javayant NEW
Stacey MacleadUnited KingdomBernardo Dominic NEW
Mayumi KolmetzFranceBernardo Dominic QUALIFIED
Antonio CaudyArgentinaOnyama Limba NEGOTIATION
Chavez BriddickUnited KingdomBernardo Dominic RENEWAL
Kaitlin OstroskySpainXuxue Feng QUALIFIED
Francesco ShinkoGermanyXuxue Feng NEGOTIATION
Munro FerenczRussiaAmy Elsner NEGOTIATION
Cody SaylorsCanadaOnyama Limba PROPOSAL
Johnson SergiAustraliaIvan Magalhaes NEGOTIATION
Aruna FigeroaJapanIvan Magalhaes UNQUALIFIED
Ashley DoeFranceAnna Fali UNQUALIFIED
Ricardo GauchoIndiaAsiya Javayant RENEWAL
Jefferson SchemmerCanadaIvan Magalhaes PROPOSAL
Juan WieserIndiaIvan Magalhaes QUALIFIED
Julie StensethFranceIvan Magalhaes QUALIFIED
Jennifer AmigonBrazilIoni Bowcher UNQUALIFIED
Jones VocelkaGermanyIvan Magalhaes RENEWAL
Darci PoquetteArgentinaIoni Bowcher NEW
Jefferson SchemmerRussiaAsiya Javayant NEW
Greenwood BologniaBrazilXuxue Feng UNQUALIFIED
Mayumi KolmetzCanadaAnna Fali RENEWAL
Costa DilliardCanadaElwin Sharvill NEW
Horizontal
NameCountryRepresentativeStatus
Leon OldroydArgentinaStephen Shaw NEGOTIATION
Kaitlin OstroskyUnited KingdomStephen Shaw NEGOTIATION
Wickens NestleSpainIoni Bowcher NEW
Leon OldroydSpainAnna Fali PROPOSAL
Mujtaba NickaRussiaBernardo Dominic QUALIFIED
Johnson SergiAustraliaBernardo Dominic PROPOSAL
Aika InouyeArgentinaAnna Fali RENEWAL
Wickens NestleUnited KingdomElwin Sharvill PROPOSAL
Jeanfrancois VenereArgentinaAsiya Javayant RENEWAL
Munro FerenczArgentinaBernardo Dominic PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maisha RulapaughFrance2026-05-23Buckley Miller Wright UNQUALIFIED65Stephen Shaw
1001Greenwood BologniaRussia2026-05-19Rangoni Of Florence QUALIFIED67Xuxue Feng
1002Alejandro PerinFrance2026-05-10Commercial Press PROPOSAL47Stephen Shaw
1003Juan WieserUnited Kingdom2026-05-13Buckley Miller Wright NEW92Stephen Shaw
1004Morrow RutaCanada2026-05-19Feltz Printing Service RENEWAL28Ioni Bowcher
1005Deepesh ChuiUnited Kingdom2026-06-04Truhlar And Truhlar Attys PROPOSAL26Ioni Bowcher
1006Stacey MacleadBrazil2026-06-02Benton, John B Jr NEW32Stephen Shaw
1007Darci PoquetteBrazil2026-05-31Truhlar And Truhlar Attys NEGOTIATION70Elwin Sharvill
1008Misaki RoysterSpain2026-06-02Morlong Associates QUALIFIED65Ioni Bowcher
1009Aditya KuskoCanada2026-05-21Commercial Press QUALIFIED3Anna Fali
1010Octavia MaletFrance2026-05-13Chemel, James L Cpa NEW71Xuxue Feng
1011Tony FollerFrance2026-05-12Feltz Printing Service NEGOTIATION32Amy Elsner
1012Stacey MacleadSpain2026-05-17Truhlar And Truhlar Attys RENEWAL39Stephen Shaw
1013Greenwood BologniaIndia2026-05-21Chanay, Jeffrey A Esq PROPOSAL19Ioni Bowcher
1014Maria MarrierUnited Kingdom2026-05-11Chanay, Jeffrey A Esq QUALIFIED34Xuxue Feng
1015James ButtCanada2026-05-20Dorl, James J Esq RENEWAL8Elwin Sharvill
1016Mayumi KolmetzJapan2026-05-11Chemel, James L Cpa NEGOTIATION28Xuxue Feng
1017Rodrigues CampainAustralia2026-05-11King, Christopher A Esq UNQUALIFIED86Asiya Javayant
1018Aika InouyeUnited Kingdom2026-06-07Truhlar And Truhlar Attys QUALIFIED56Bernardo Dominic
1019Arvin AlbaresFrance2026-06-06Chapman, Ross E Esq RENEWAL18Bernardo Dominic
1020Emily WhobreyIndia2026-05-18Benton, John B Jr RENEWAL32Ioni Bowcher
1021Jeanfrancois VenereJapan2026-05-26Dorl, James J Esq NEW8Anna Fali
1022Wickens NestleCanada2026-06-04Rousseaux, Michael Esq PROPOSAL13Stephen Shaw
1023Misaki RoysterGermany2026-06-08Chemel, James L Cpa PROPOSAL13Asiya Javayant
1024Jennifer AmigonIndia2026-06-02Printing Dimensions QUALIFIED38Amy Elsner
1025Nicolas IturbideBrazil2026-05-27Commercial Press UNQUALIFIED34Xuxue Feng
1026Cody SaylorsBrazil2026-06-02Morlong Associates NEW31Elwin Sharvill
1027Munro FerenczGermany2026-05-14Chemel, James L Cpa NEW75Stephen Shaw
1028Ivar PaprockiIndia2026-06-03Chanay, Jeffrey A Esq NEGOTIATION72Ivan Magalhaes
1029Wickens NestleArgentina2026-06-03Morlong Associates NEW46Anna Fali
1030Aika InouyeCanada2026-05-26Benton, John B Jr PROPOSAL49Ioni Bowcher
1031Izzy GarufiJapan2026-05-27Rousseaux, Michael Esq UNQUALIFIED54Bernardo Dominic
1032Rodrigues CampainAustralia2026-05-20Chemel, James L Cpa PROPOSAL53Xuxue Feng
1033Mujtaba NickaGermany2026-05-23Benton, John B Jr UNQUALIFIED65Ioni Bowcher
1034Alejandro PerinRussia2026-05-15Chanay, Jeffrey A Esq QUALIFIED74Anna Fali
1035Maisha RulapaughUnited Kingdom2026-05-31Benton, John B Jr UNQUALIFIED37Amy Elsner
1036Deepesh ChuiArgentina2026-05-23Dorl, James J Esq NEGOTIATION86Anna Fali
1037Aditya KuskoBrazil2026-06-06Chanay, Jeffrey A Esq UNQUALIFIED45Bernardo Dominic
1038James ButtGermany2026-05-18Commercial Press NEW96Xuxue Feng
1039Adams MorascaArgentina2026-06-06Buckley Miller Wright NEW94Bernardo Dominic
1040Johnson SergiUnited Kingdom2026-05-11Dorl, James J Esq NEW76Ivan Magalhaes
1041Murillo MaletIndia2026-05-26Chemel, James L Cpa QUALIFIED70Amy Elsner
1042Juan WieserFrance2026-06-08Printing Dimensions QUALIFIED79Anna Fali
1043Aditya KuskoFrance2026-06-06Commercial Press UNQUALIFIED60Xuxue Feng
1044Costa DilliardArgentina2026-05-21Chemel, James L Cpa UNQUALIFIED66Asiya Javayant
1045Jeanfrancois VenereBrazil2026-05-17Truhlar And Truhlar Attys UNQUALIFIED23Onyama Limba
1046Nicolas IturbideBrazil2026-05-25Benton, John B Jr UNQUALIFIED39Anna Fali
1047Greenwood BologniaItaly2026-05-12Chanay, Jeffrey A Esq NEW67Ioni Bowcher
1048Faith GillianCanada2026-05-23Chemel, James L Cpa PROPOSAL3Ivan Magalhaes
1049Cody SaylorsCanada2026-05-25Rousseaux, Michael Esq RENEWAL95Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Ricardo GauchoUnited KingdomAnna Fali RENEWAL
Stacey MacleadBrazilAnna Fali PROPOSAL
Antonio CaudyAustraliaIoni Bowcher RENEWAL
Deepesh ChuiFranceElwin Sharvill UNQUALIFIED
Isabel BowleyIndiaAmy Elsner QUALIFIED
Maisha RulapaughSpainAnna Fali PROPOSAL
Leja CaldareraRussiaStephen Shaw NEW
Leja CaldareraArgentinaBernardo Dominic RENEWAL
Nicolas IturbideArgentinaOnyama Limba PROPOSAL
Misaki RoysterCanadaAnna Fali NEW
Johnson SergiGermanyXuxue Feng NEGOTIATION
Greenwood BologniaFranceElwin Sharvill UNQUALIFIED
Emily WhobreyRussiaIvan Magalhaes NEW
Misaki RoysterAustraliaIoni Bowcher NEGOTIATION
Tony FollerJapanXuxue Feng UNQUALIFIED
Tony FollerAustraliaIoni Bowcher PROPOSAL
Octavia MaletJapanStephen Shaw UNQUALIFIED
Misaki RoysterSpainStephen Shaw NEGOTIATION
Misaki RoysterJapanStephen Shaw UNQUALIFIED
Smith GlickJapanAnna Fali PROPOSAL
Deepesh ChuiIndiaIvan Magalhaes QUALIFIED
Darci PoquetteJapanOnyama Limba QUALIFIED
Wickens NestleUnited KingdomAmy Elsner RENEWAL
Emily WhobreyJapanStephen Shaw PROPOSAL
Aruna FigeroaArgentinaIvan Magalhaes NEGOTIATION
Murillo MaletAustraliaStephen Shaw NEW
Jefferson SchemmerRussiaIvan Magalhaes NEGOTIATION
Smith GlickCanadaElwin Sharvill QUALIFIED
Rodrigues CampainItalyStephen Shaw NEGOTIATION
Chavez BriddickJapanXuxue Feng QUALIFIED
Maisha RulapaughAustraliaIoni Bowcher NEW
Ashley DoeIndiaOnyama Limba UNQUALIFIED
Emily WhobreyAustraliaIvan Magalhaes RENEWAL
Maisha RulapaughIndiaStephen Shaw NEW
Darci PoquetteGermanyIvan Magalhaes RENEWAL
Kaitlin OstroskyAustraliaBernardo Dominic RENEWAL
Nicolas IturbideGermanyAnna Fali QUALIFIED
Maisha RulapaughArgentinaAnna Fali NEW
Leja CaldareraUnited KingdomAsiya Javayant NEW
Julie StensethArgentinaXuxue Feng UNQUALIFIED
Stacey MacleadJapanOnyama Limba PROPOSAL
Stacey MacleadFranceIvan Magalhaes RENEWAL
Johnson SergiItalyXuxue Feng PROPOSAL
Morrow RutaArgentinaAnna Fali NEW
Jefferson SchemmerFranceElwin Sharvill RENEWAL
Murillo MaletBrazilElwin Sharvill PROPOSAL
Claire TollnerSpainXuxue Feng PROPOSAL
Salvatore StockhamItalyElwin Sharvill NEGOTIATION
Julie StensethUnited KingdomBernardo Dominic QUALIFIED
Faith GillianSpainBernardo Dominic RENEWAL
Frozen Columns
Name
Jefferson Schemmer
Silvio Slusarski
Maisha Rulapaugh
Juan Wieser
Jennifer Amigon
Aditya Kusko
Greenwood Bolognia
Clifford Rim
Francesco Shinko
Leja Caldarera
Clifford Rim
Claire Tollner
Murillo Malet
Emily Whobrey
Nicolas Iturbide
Murillo Malet
Smith Glick
Kaitlin Ostrosky
Chavez Briddick
Maisha Rulapaugh
Rodrigues Campain
Ashley Doe
Emily Whobrey
Darci Poquette
Faith Gillian
Jeanfrancois Venere
Salvatore Stockham
Jones Vocelka
Jennifer Amigon
Silvio Slusarski
Maisha Rulapaugh
Aditya Kusko
Aditya Kusko
Cody Saylors
Smith Glick
Munro Ferencz
Stacey Maclead
Aika Inouye
Aruna Figeroa
Julie Stenseth
Faith Gillian
Faith Gillian
Adams Morasca
Chavez Briddick
Silvio Slusarski
Deepesh Chui
Misaki Royster
Chavez Briddick
Tony Foller
Nicolas Iturbide
IdCountryDate
1000Italy2026-05-13
1001Germany2026-06-03
1002Brazil2026-06-05
1003Spain2026-05-12
1004Argentina2026-05-27
1005Japan2026-06-07
1006Spain2026-06-02
1007United Kingdom2026-05-28
1008Brazil2026-06-08
1009United Kingdom2026-05-12
1010Italy2026-06-01
1011Spain2026-06-02
1012France2026-06-06
1013India2026-05-24
1014France2026-05-31
1015Canada2026-05-10
1016Australia2026-06-04
1017India2026-05-18
1018Argentina2026-05-28
1019Germany2026-05-24
1020India2026-06-08
1021Brazil2026-05-13
1022Canada2026-05-19
1023Japan2026-05-15
1024Germany2026-06-06
1025Australia2026-06-07
1026Brazil2026-05-27
1027Argentina2026-05-13
1028Brazil2026-05-25
1029Italy2026-05-29
1030Russia2026-05-19
1031Italy2026-06-01
1032Japan2026-06-08
1033Italy2026-06-06
1034Japan2026-05-23
1035France2026-05-12
1036United Kingdom2026-06-08
1037Canada2026-05-28
1038Italy2026-06-06
1039Japan2026-05-20
1040Spain2026-05-23
1041Australia2026-06-03
1042India2026-05-24
1043United Kingdom2026-05-30
1044Japan2026-05-12
1045India2026-05-30
1046Japan2026-06-05
1047Italy2026-05-22
1048France2026-05-24
1049Japan2026-05-11

On-Demand Data

NameIdCountryDate
Stacey Maclead1000Argentina2026-05-29
Darci Poquette1001Spain2026-05-31
Alejandro Perin1002Argentina2026-06-06
Stacey Maclead1003United Kingdom2026-05-13
Octavia Malet1004Argentina2026-05-17
Alejandro Perin1005Australia2026-05-19
Leja Caldarera1006France2026-06-08
Juan Wieser1007United Kingdom2026-05-19
Smith Glick1008Japan2026-05-12
Antonio Caudy1009Argentina2026-05-31
Aditya Kusko1010Spain2026-05-25
Murillo Malet1011Australia2026-05-18
Rodrigues Campain1012Italy2026-05-29
James Butt1013Japan2026-06-03
Darci Poquette1014Australia2026-05-21
Greenwood Bolognia1015Brazil2026-06-01
Faith Gillian1016India2026-06-01
Chavez Briddick1017Canada2026-05-14
Salvatore Stockham1018Brazil2026-05-20
Silvio Slusarski1019Argentina2026-05-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Morrow RutaBrazilAmy Elsner PROPOSAL
Silvio SlusarskiRussiaAmy Elsner QUALIFIED
Nicolas IturbideItalyIoni Bowcher NEW
Aruna FigeroaArgentinaIoni Bowcher RENEWAL
Mayumi KolmetzUnited KingdomXuxue Feng NEW
Ricardo GauchoItalyAmy Elsner RENEWAL
Claire TollnerBrazilElwin Sharvill PROPOSAL
Aditya KuskoGermanyAsiya Javayant NEGOTIATION
Aruna FigeroaBrazilAsiya Javayant RENEWAL
Mayumi KolmetzItalyIoni Bowcher UNQUALIFIED
Cody SaylorsUnited KingdomBernardo Dominic QUALIFIED
Maisha RulapaughFranceIoni Bowcher NEW
Izzy GarufiArgentinaIvan Magalhaes RENEWAL
Sinclair WaycottJapanIoni Bowcher QUALIFIED
Aruna FigeroaFranceAnna Fali RENEWAL
Silvio SlusarskiRussiaBernardo Dominic QUALIFIED
Emily WhobreyAustraliaAmy Elsner UNQUALIFIED
Arvin AlbaresSpainAmy Elsner NEGOTIATION
Julie StensethJapanIoni Bowcher PROPOSAL
Mujtaba NickaRussiaAnna Fali NEW
Juan WieserSpainAmy Elsner UNQUALIFIED
Misaki RoysterAustraliaAmy Elsner NEW
Darci PoquetteSpainStephen Shaw NEW
Costa DilliardAustraliaIoni Bowcher UNQUALIFIED
James ButtIndiaOnyama Limba QUALIFIED
Maria MarrierAustraliaOnyama Limba NEGOTIATION
Leja CaldareraRussiaIvan Magalhaes QUALIFIED
Julie StensethItalyAnna Fali RENEWAL
Ivar PaprockiJapanOnyama Limba QUALIFIED
Wickens NestleIndiaAsiya Javayant PROPOSAL
Cody SaylorsJapanIvan Magalhaes NEGOTIATION
Octavia MaletIndiaElwin Sharvill NEGOTIATION
Leja CaldareraIndiaBernardo Dominic NEW
Emily WhobreyIndiaStephen Shaw RENEWAL
Mujtaba NickaRussiaOnyama Limba NEW
Silvio SlusarskiFranceIvan Magalhaes NEGOTIATION
Nicolas IturbideUnited KingdomAnna Fali UNQUALIFIED
Clifford RimBrazilIvan Magalhaes NEGOTIATION
Silvio SlusarskiCanadaAsiya Javayant PROPOSAL
Salvatore StockhamArgentinaAmy Elsner 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>