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 SlusarskiBrazilIvan Magalhaes UNQUALIFIED
Deepesh ChuiUnited KingdomAmy Elsner NEW
Isabel BowleyArgentinaIoni Bowcher QUALIFIED
Juan WieserGermanyElwin Sharvill PROPOSAL
Faith GillianJapanAmy Elsner RENEWAL
Juan WieserIndiaOnyama Limba NEGOTIATION
Arvin AlbaresUnited KingdomOnyama Limba PROPOSAL
Costa DilliardIndiaAmy Elsner RENEWAL
Ricardo GauchoIndiaElwin Sharvill UNQUALIFIED
Kaitlin OstroskyGermanyIoni Bowcher RENEWAL
Misaki RoysterArgentinaStephen Shaw QUALIFIED
Jennifer AmigonAustraliaIvan Magalhaes QUALIFIED
Misaki RoysterBrazilStephen Shaw PROPOSAL
Julie StensethGermanyAmy Elsner UNQUALIFIED
Leja CaldareraJapanIoni Bowcher NEW
Clifford RimAustraliaIvan Magalhaes UNQUALIFIED
Morrow RutaCanadaOnyama Limba NEGOTIATION
Tony FollerJapanBernardo Dominic QUALIFIED
Arvin AlbaresIndiaAsiya Javayant NEW
Clifford RimArgentinaElwin Sharvill PROPOSAL
Ivar PaprockiRussiaAsiya Javayant QUALIFIED
Mujtaba NickaCanadaAnna Fali NEGOTIATION
Smith GlickCanadaIoni Bowcher PROPOSAL
Juan WieserSpainAsiya Javayant NEW
Francesco ShinkoRussiaElwin Sharvill PROPOSAL
Kaitlin OstroskyUnited KingdomElwin Sharvill PROPOSAL
Emily WhobreySpainAnna Fali QUALIFIED
Emily WhobreyGermanyXuxue Feng PROPOSAL
Mayumi KolmetzAustraliaXuxue Feng QUALIFIED
Salvatore StockhamSpainXuxue Feng QUALIFIED
Tony FollerArgentinaElwin Sharvill QUALIFIED
Stacey MacleadFranceBernardo Dominic RENEWAL
Rodrigues CampainSpainAsiya Javayant UNQUALIFIED
Adams MorascaArgentinaXuxue Feng RENEWAL
Emily WhobreyCanadaXuxue Feng PROPOSAL
Aditya KuskoFranceAmy Elsner NEW
Alejandro PerinAustraliaAnna Fali QUALIFIED
Isabel BowleySpainAnna Fali RENEWAL
Faith GillianCanadaIoni Bowcher NEW
Morrow RutaCanadaAmy Elsner NEGOTIATION
Murillo MaletArgentinaStephen Shaw NEGOTIATION
Jefferson SchemmerUnited KingdomAmy Elsner RENEWAL
Jennifer AmigonIndiaIvan Magalhaes NEGOTIATION
Francesco ShinkoArgentinaAmy Elsner QUALIFIED
David DarakjyBrazilAnna Fali QUALIFIED
Kaitlin OstroskyFranceBernardo Dominic PROPOSAL
Leon OldroydCanadaElwin Sharvill NEW
Alejandro PerinRussiaBernardo Dominic UNQUALIFIED
Jeanfrancois VenereUnited KingdomIvan Magalhaes NEW
Ashley DoeItalyElwin Sharvill RENEWAL
Horizontal
NameCountryRepresentativeStatus
Silvio SlusarskiBrazilBernardo Dominic NEGOTIATION
Mayumi KolmetzGermanyElwin Sharvill UNQUALIFIED
Silvio SlusarskiRussiaAsiya Javayant QUALIFIED
Stacey MacleadJapanIvan Magalhaes RENEWAL
Sinclair WaycottSpainAnna Fali PROPOSAL
Wickens NestleArgentinaAsiya Javayant RENEWAL
Ashley DoeItalyStephen Shaw PROPOSAL
Aditya KuskoItalyOnyama Limba PROPOSAL
Antonio CaudyFranceAnna Fali RENEWAL
Jefferson SchemmerSpainIvan Magalhaes QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Clifford RimIndia2026-04-27Dorl, James J Esq NEW67Elwin Sharvill
1001Jeanfrancois VenereCanada2026-04-29Benton, John B Jr NEW66Onyama Limba
1002Sinclair WaycottCanada2026-05-02Chemel, James L Cpa QUALIFIED40Anna Fali
1003Kadeem FlosiIndia2026-05-12Printing Dimensions NEGOTIATION64Onyama Limba
1004Munro FerenczSpain2026-04-27Rousseaux, Michael Esq NEW63Asiya Javayant
1005Tony FollerGermany2026-05-06Dorl, James J Esq UNQUALIFIED42Anna Fali
1006Mayumi KolmetzIndia2026-05-02Buckley Miller Wright QUALIFIED36Anna Fali
1007Claire TollnerJapan2026-04-29Truhlar And Truhlar Attys UNQUALIFIED26Bernardo Dominic
1008Faith GillianSpain2026-04-29Morlong Associates NEGOTIATION87Amy Elsner
1009James ButtArgentina2026-05-15Chemel, James L Cpa NEW69Ioni Bowcher
1010Maisha RulapaughIndia2026-05-01Morlong Associates NEW58Elwin Sharvill
1011Antonio CaudyAustralia2026-05-22Printing Dimensions QUALIFIED7Stephen Shaw
1012Arvin AlbaresRussia2026-04-27Chapman, Ross E Esq QUALIFIED18Stephen Shaw
1013Greenwood BologniaRussia2026-04-28Rousseaux, Michael Esq PROPOSAL95Bernardo Dominic
1014Aditya KuskoIndia2026-04-27Dorl, James J Esq RENEWAL53Bernardo Dominic
1015Mujtaba NickaGermany2026-05-10King, Christopher A Esq RENEWAL37Elwin Sharvill
1016Mujtaba NickaArgentina2026-05-01Truhlar And Truhlar Attys QUALIFIED71Ioni Bowcher
1017Faith GillianIndia2026-05-20Dorl, James J Esq NEGOTIATION22Ioni Bowcher
1018Maria MarrierRussia2026-05-22Benton, John B Jr UNQUALIFIED21Ioni Bowcher
1019Faith GillianBrazil2026-05-20Feltz Printing Service RENEWAL46Bernardo Dominic
1020Smith GlickGermany2026-05-10Feiner Bros RENEWAL40Stephen Shaw
1021Jennifer AmigonFrance2026-05-17Benton, John B Jr QUALIFIED32Ioni Bowcher
1022Morrow RutaArgentina2026-05-01Chanay, Jeffrey A Esq RENEWAL9Onyama Limba
1023Jones VocelkaAustralia2026-05-06Printing Dimensions QUALIFIED31Onyama Limba
1024Silvio SlusarskiItaly2026-05-20King, Christopher A Esq NEGOTIATION29Asiya Javayant
1025Aika InouyeAustralia2026-05-07Printing Dimensions RENEWAL29Ioni Bowcher
1026Jeanfrancois VenereItaly2026-04-26Dorl, James J Esq NEGOTIATION14Xuxue Feng
1027Francesco ShinkoGermany2026-05-12Chapman, Ross E Esq NEGOTIATION71Elwin Sharvill
1028Tony FollerGermany2026-05-04Chemel, James L Cpa NEGOTIATION22Asiya Javayant
1029Aditya KuskoUnited Kingdom2026-05-10Morlong Associates UNQUALIFIED26Anna Fali
1030Greenwood BologniaBrazil2026-05-01Rousseaux, Michael Esq NEGOTIATION44Amy Elsner
1031Arvin AlbaresFrance2026-05-16Rousseaux, Michael Esq NEGOTIATION28Bernardo Dominic
1032Costa DilliardItaly2026-05-13Feltz Printing Service QUALIFIED77Ioni Bowcher
1033Francesco ShinkoRussia2026-05-15Chanay, Jeffrey A Esq PROPOSAL48Elwin Sharvill
1034Clifford RimArgentina2026-04-26Chemel, James L Cpa QUALIFIED53Xuxue Feng
1035Izzy GarufiItaly2026-05-19Dorl, James J Esq RENEWAL38Asiya Javayant
1036Clifford RimAustralia2026-05-01Chanay, Jeffrey A Esq PROPOSAL45Ioni Bowcher
1037James ButtItaly2026-05-11Morlong Associates QUALIFIED73Anna Fali
1038James ButtIndia2026-05-20Feiner Bros PROPOSAL12Elwin Sharvill
1039Isabel BowleyItaly2026-04-28Printing Dimensions RENEWAL18Stephen Shaw
1040James ButtBrazil2026-05-24Feltz Printing Service NEGOTIATION80Elwin Sharvill
1041Johnson SergiAustralia2026-05-22Feltz Printing Service RENEWAL74Amy Elsner
1042Antonio CaudyRussia2026-05-04Printing Dimensions PROPOSAL78Bernardo Dominic
1043Morrow RutaUnited Kingdom2026-04-27Feiner Bros UNQUALIFIED59Amy Elsner
1044Francesco ShinkoBrazil2026-04-27Morlong Associates PROPOSAL5Stephen Shaw
1045Claire TollnerRussia2026-05-22Truhlar And Truhlar Attys UNQUALIFIED67Stephen Shaw
1046Darci PoquetteCanada2026-05-15Morlong Associates UNQUALIFIED8Ivan Magalhaes
1047Clifford RimUnited Kingdom2026-04-26Chanay, Jeffrey A Esq UNQUALIFIED93Bernardo Dominic
1048Clifford RimJapan2026-05-22Feltz Printing Service NEGOTIATION5Xuxue Feng
1049Antonio CaudyFrance2026-05-01Rousseaux, Michael Esq NEW48Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Smith GlickItalyElwin Sharvill UNQUALIFIED
Darci PoquetteJapanOnyama Limba QUALIFIED
Chavez BriddickGermanyIoni Bowcher NEGOTIATION
Wickens NestleIndiaXuxue Feng PROPOSAL
Costa DilliardBrazilBernardo Dominic UNQUALIFIED
David DarakjySpainAnna Fali UNQUALIFIED
Maisha RulapaughJapanIvan Magalhaes UNQUALIFIED
Chavez BriddickGermanyIoni Bowcher NEW
Aika InouyeIndiaBernardo Dominic RENEWAL
Julie StensethFranceAmy Elsner UNQUALIFIED
Morrow RutaSpainXuxue Feng NEW
Isabel BowleySpainElwin Sharvill QUALIFIED
Octavia MaletUnited KingdomIvan Magalhaes UNQUALIFIED
Jones VocelkaIndiaBernardo Dominic NEGOTIATION
Sinclair WaycottCanadaIvan Magalhaes QUALIFIED
Ivar PaprockiIndiaElwin Sharvill UNQUALIFIED
David DarakjyCanadaStephen Shaw NEGOTIATION
Francesco ShinkoItalyXuxue Feng RENEWAL
Greenwood BologniaBrazilXuxue Feng QUALIFIED
Murillo MaletGermanyAsiya Javayant NEW
Jeanfrancois VenereBrazilAmy Elsner QUALIFIED
Izzy GarufiAustraliaXuxue Feng QUALIFIED
James ButtArgentinaIvan Magalhaes QUALIFIED
Clifford RimJapanAsiya Javayant NEGOTIATION
Kadeem FlosiFranceAnna Fali NEW
Alejandro PerinBrazilAsiya Javayant PROPOSAL
Darci PoquetteBrazilIoni Bowcher PROPOSAL
Sinclair WaycottBrazilXuxue Feng PROPOSAL
Julie StensethCanadaBernardo Dominic UNQUALIFIED
Jennifer AmigonItalyAmy Elsner PROPOSAL
Alejandro PerinItalyBernardo Dominic QUALIFIED
Chavez BriddickIndiaIoni Bowcher PROPOSAL
Izzy GarufiUnited KingdomBernardo Dominic NEGOTIATION
Mujtaba NickaItalyOnyama Limba UNQUALIFIED
Nicolas IturbideGermanyStephen Shaw RENEWAL
Darci PoquetteArgentinaAmy Elsner UNQUALIFIED
Leon OldroydGermanyIvan Magalhaes RENEWAL
Chavez BriddickIndiaXuxue Feng UNQUALIFIED
Rodrigues CampainBrazilStephen Shaw QUALIFIED
Chavez BriddickUnited KingdomStephen Shaw RENEWAL
Cody SaylorsBrazilAmy Elsner PROPOSAL
Maisha RulapaughUnited KingdomStephen Shaw PROPOSAL
Silvio SlusarskiSpainAmy Elsner UNQUALIFIED
Chavez BriddickJapanOnyama Limba QUALIFIED
Nicolas IturbideBrazilIvan Magalhaes UNQUALIFIED
Darci PoquetteFranceAnna Fali UNQUALIFIED
Munro FerenczIndiaIvan Magalhaes PROPOSAL
Cody SaylorsGermanyIvan Magalhaes NEW
Mujtaba NickaArgentinaAmy Elsner NEGOTIATION
Greenwood BologniaIndiaIoni Bowcher PROPOSAL
Frozen Columns
Name
Leon Oldroyd
David Darakjy
Emily Whobrey
Aika Inouye
Greenwood Bolognia
Kadeem Flosi
Aditya Kusko
James Butt
Faith Gillian
Julie Stenseth
Jefferson Schemmer
David Darakjy
Faith Gillian
Wickens Nestle
Isabel Bowley
Kadeem Flosi
Morrow Ruta
Ivar Paprocki
Juan Wieser
Adams Morasca
Cody Saylors
Jeanfrancois Venere
Tony Foller
Jefferson Schemmer
Misaki Royster
Deepesh Chui
Leon Oldroyd
Juan Wieser
Isabel Bowley
Sinclair Waycott
Cody Saylors
Adams Morasca
Clifford Rim
Julie Stenseth
Johnson Sergi
Maisha Rulapaugh
Leja Caldarera
Ricardo Gaucho
James Butt
Ivar Paprocki
Silvio Slusarski
Maisha Rulapaugh
Munro Ferencz
Stacey Maclead
Juan Wieser
Antonio Caudy
Aika Inouye
Juan Wieser
Aditya Kusko
Jefferson Schemmer
IdCountryDate
1000Russia2026-05-10
1001France2026-05-09
1002Argentina2026-05-24
1003United Kingdom2026-05-05
1004Spain2026-05-03
1005United Kingdom2026-04-29
1006Spain2026-05-18
1007Russia2026-05-17
1008Germany2026-05-20
1009Canada2026-04-25
1010Australia2026-05-08
1011Spain2026-05-03
1012India2026-05-23
1013Russia2026-05-05
1014Japan2026-05-04
1015India2026-05-04
1016Australia2026-05-23
1017Australia2026-05-17
1018Japan2026-04-27
1019France2026-05-07
1020Spain2026-05-01
1021Italy2026-05-19
1022United Kingdom2026-05-18
1023India2026-04-26
1024Canada2026-05-16
1025Argentina2026-05-09
1026Australia2026-05-13
1027Brazil2026-05-22
1028Russia2026-04-26
1029Japan2026-05-14
1030Brazil2026-04-30
1031Spain2026-04-26
1032Spain2026-04-30
1033Japan2026-05-12
1034Italy2026-05-15
1035Australia2026-04-27
1036Japan2026-05-06
1037United Kingdom2026-05-03
1038Australia2026-05-10
1039Canada2026-05-02
1040United Kingdom2026-04-29
1041Italy2026-05-24
1042India2026-05-11
1043France2026-05-15
1044Japan2026-05-09
1045France2026-05-09
1046Australia2026-05-03
1047France2026-05-16
1048Russia2026-05-04
1049United Kingdom2026-05-16

On-Demand Data

NameIdCountryDate
Aika Inouye1000Canada2026-05-01
Murillo Malet1001Italy2026-05-23
Smith Glick1002United Kingdom2026-05-02
Smith Glick1003Germany2026-05-07
Clifford Rim1004Spain2026-05-08
Aditya Kusko1005Germany2026-05-04
Adams Morasca1006Brazil2026-05-06
Aditya Kusko1007Germany2026-05-04
Emily Whobrey1008Australia2026-05-14
Rodrigues Campain1009Australia2026-04-25
Misaki Royster1010India2026-05-11
Munro Ferencz1011Russia2026-04-25
Costa Dilliard1012Italy2026-05-18
Claire Tollner1013Canada2026-05-09
Cody Saylors1014Japan2026-05-12
Stacey Maclead1015Germany2026-05-05
Johnson Sergi1016Australia2026-05-12
Greenwood Bolognia1017Russia2026-05-21
Ashley Doe1018United Kingdom2026-05-02
Sinclair Waycott1019Russia2026-05-03
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mujtaba NickaIndiaStephen Shaw PROPOSAL
Smith GlickFranceStephen Shaw RENEWAL
Misaki RoysterUnited KingdomIvan Magalhaes NEW
Aditya KuskoAustraliaAsiya Javayant UNQUALIFIED
Aditya KuskoUnited KingdomAsiya Javayant QUALIFIED
Aruna FigeroaIndiaBernardo Dominic NEW
Mayumi KolmetzFranceXuxue Feng QUALIFIED
Jones VocelkaIndiaStephen Shaw QUALIFIED
Murillo MaletRussiaOnyama Limba RENEWAL
Julie StensethGermanyOnyama Limba NEGOTIATION
Kaitlin OstroskyBrazilOnyama Limba PROPOSAL
Alejandro PerinArgentinaElwin Sharvill RENEWAL
Jennifer AmigonUnited KingdomStephen Shaw PROPOSAL
Salvatore StockhamSpainStephen Shaw NEGOTIATION
Stacey MacleadItalyAnna Fali QUALIFIED
Chavez BriddickCanadaBernardo Dominic RENEWAL
Aditya KuskoSpainAmy Elsner QUALIFIED
Stacey MacleadFranceOnyama Limba QUALIFIED
Maisha RulapaughFranceAmy Elsner UNQUALIFIED
Maria MarrierAustraliaIoni Bowcher NEGOTIATION
Ashley DoeAustraliaIvan Magalhaes PROPOSAL
Cody SaylorsJapanAnna Fali NEGOTIATION
Jeanfrancois VenereItalyOnyama Limba NEGOTIATION
Faith GillianAustraliaAnna Fali NEGOTIATION
Nicolas IturbideJapanAmy Elsner RENEWAL
Misaki RoysterJapanIoni Bowcher NEGOTIATION
Sinclair WaycottAustraliaAsiya Javayant QUALIFIED
Mayumi KolmetzSpainAnna Fali NEGOTIATION
Murillo MaletArgentinaIoni Bowcher NEW
Stacey MacleadGermanyIoni Bowcher NEGOTIATION
Ivar PaprockiIndiaBernardo Dominic NEGOTIATION
Octavia MaletCanadaStephen Shaw RENEWAL
Stacey MacleadCanadaOnyama Limba PROPOSAL
Isabel BowleyCanadaBernardo Dominic NEW
Francesco ShinkoRussiaXuxue Feng NEGOTIATION
Juan WieserBrazilIvan Magalhaes PROPOSAL
Leja CaldareraArgentinaElwin Sharvill RENEWAL
Johnson SergiBrazilAsiya Javayant QUALIFIED
Francesco ShinkoItalyIoni Bowcher NEW
Kaitlin OstroskyItalyAsiya Javayant RENEWAL

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