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
Murillo MaletArgentinaIvan Magalhaes UNQUALIFIED
Arvin AlbaresAustraliaXuxue Feng QUALIFIED
Clifford RimRussiaStephen Shaw UNQUALIFIED
Faith GillianItalyStephen Shaw RENEWAL
Aditya KuskoIndiaAmy Elsner NEGOTIATION
Kadeem FlosiItalyIvan Magalhaes QUALIFIED
Adams MorascaItalyAmy Elsner UNQUALIFIED
Adams MorascaSpainIoni Bowcher NEW
Johnson SergiSpainAnna Fali PROPOSAL
Jones VocelkaArgentinaIvan Magalhaes RENEWAL
Smith GlickGermanyAnna Fali UNQUALIFIED
James ButtGermanyAnna Fali NEGOTIATION
Juan WieserUnited KingdomAnna Fali QUALIFIED
Alejandro PerinBrazilOnyama Limba PROPOSAL
Jeanfrancois VenereJapanIoni Bowcher PROPOSAL
Johnson SergiUnited KingdomIoni Bowcher NEGOTIATION
Ricardo GauchoJapanElwin Sharvill UNQUALIFIED
Jeanfrancois VenereUnited KingdomXuxue Feng NEGOTIATION
Jones VocelkaAustraliaElwin Sharvill UNQUALIFIED
Deepesh ChuiFranceIoni Bowcher UNQUALIFIED
Jeanfrancois VenereBrazilElwin Sharvill PROPOSAL
Chavez BriddickCanadaAmy Elsner QUALIFIED
Isabel BowleyArgentinaStephen Shaw RENEWAL
Clifford RimSpainAnna Fali RENEWAL
Wickens NestleFranceBernardo Dominic UNQUALIFIED
Clifford RimFranceAmy Elsner UNQUALIFIED
Izzy GarufiSpainOnyama Limba PROPOSAL
Jones VocelkaSpainIvan Magalhaes UNQUALIFIED
Misaki RoysterGermanyIvan Magalhaes PROPOSAL
Emily WhobreyGermanyIoni Bowcher QUALIFIED
Stacey MacleadSpainIvan Magalhaes PROPOSAL
Adams MorascaUnited KingdomIoni Bowcher NEW
Greenwood BologniaFranceAsiya Javayant UNQUALIFIED
Wickens NestleFranceBernardo Dominic QUALIFIED
Octavia MaletArgentinaIvan Magalhaes RENEWAL
James ButtSpainAnna Fali UNQUALIFIED
Costa DilliardItalyElwin Sharvill UNQUALIFIED
Ashley DoeBrazilStephen Shaw QUALIFIED
Kadeem FlosiIndiaAnna Fali NEGOTIATION
Aika InouyeRussiaOnyama Limba NEGOTIATION
James ButtItalyIoni Bowcher PROPOSAL
Mayumi KolmetzItalyXuxue Feng PROPOSAL
James ButtUnited KingdomIoni Bowcher NEW
Sinclair WaycottSpainIoni Bowcher NEGOTIATION
Faith GillianFranceAsiya Javayant RENEWAL
Greenwood BologniaBrazilIoni Bowcher UNQUALIFIED
Aika InouyeAustraliaStephen Shaw QUALIFIED
Alejandro PerinGermanyIoni Bowcher UNQUALIFIED
Leon OldroydAustraliaAnna Fali UNQUALIFIED
Stacey MacleadItalyElwin Sharvill QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Tony FollerBrazilBernardo Dominic QUALIFIED
Rodrigues CampainIndiaBernardo Dominic RENEWAL
Nicolas IturbideUnited KingdomBernardo Dominic QUALIFIED
David DarakjyJapanXuxue Feng UNQUALIFIED
Ivar PaprockiCanadaXuxue Feng UNQUALIFIED
Salvatore StockhamSpainAmy Elsner RENEWAL
Aika InouyeGermanyAsiya Javayant NEW
Jennifer AmigonJapanXuxue Feng UNQUALIFIED
Jefferson SchemmerJapanOnyama Limba UNQUALIFIED
Isabel BowleyItalyAsiya Javayant UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leja CaldareraSpain2026-04-01Rangoni Of Florence NEGOTIATION21Onyama Limba
1001Izzy GarufiGermany2026-04-05Rangoni Of Florence NEGOTIATION85Bernardo Dominic
1002Faith GillianSpain2026-04-20Printing Dimensions PROPOSAL66Elwin Sharvill
1003Cody SaylorsJapan2026-03-25Chemel, James L Cpa RENEWAL66Xuxue Feng
1004Silvio SlusarskiCanada2026-04-14Buckley Miller Wright PROPOSAL83Elwin Sharvill
1005Jefferson SchemmerArgentina2026-04-04Dorl, James J Esq PROPOSAL68Ioni Bowcher
1006Julie StensethIndia2026-04-03Chanay, Jeffrey A Esq PROPOSAL96Elwin Sharvill
1007Emily WhobreyJapan2026-04-18Commercial Press UNQUALIFIED23Stephen Shaw
1008Juan WieserItaly2026-03-26Commercial Press UNQUALIFIED37Stephen Shaw
1009Emily WhobreyRussia2026-04-20Morlong Associates UNQUALIFIED90Elwin Sharvill
1010Antonio CaudyBrazil2026-04-14Morlong Associates RENEWAL1Ivan Magalhaes
1011Sinclair WaycottArgentina2026-04-19Chapman, Ross E Esq PROPOSAL50Onyama Limba
1012Faith GillianCanada2026-04-20Morlong Associates UNQUALIFIED15Stephen Shaw
1013Izzy GarufiAustralia2026-04-20Chapman, Ross E Esq RENEWAL91Elwin Sharvill
1014Adams MorascaItaly2026-04-02Chapman, Ross E Esq PROPOSAL70Ioni Bowcher
1015Cody SaylorsSpain2026-03-31Chanay, Jeffrey A Esq QUALIFIED36Bernardo Dominic
1016Darci PoquetteRussia2026-03-22Truhlar And Truhlar Attys PROPOSAL85Asiya Javayant
1017Francesco ShinkoJapan2026-03-27Chemel, James L Cpa QUALIFIED46Amy Elsner
1018Antonio CaudyItaly2026-03-31Chanay, Jeffrey A Esq QUALIFIED96Asiya Javayant
1019Aruna FigeroaIndia2026-04-13Chemel, James L Cpa PROPOSAL79Ivan Magalhaes
1020Alejandro PerinBrazil2026-03-28Rangoni Of Florence PROPOSAL64Amy Elsner
1021Maisha RulapaughRussia2026-04-02Chanay, Jeffrey A Esq QUALIFIED84Asiya Javayant
1022Johnson SergiJapan2026-03-27Morlong Associates QUALIFIED47Amy Elsner
1023Leon OldroydItaly2026-04-15Truhlar And Truhlar Attys QUALIFIED88Amy Elsner
1024Julie StensethArgentina2026-04-16Rousseaux, Michael Esq NEGOTIATION14Stephen Shaw
1025Antonio CaudyAustralia2026-03-30Benton, John B Jr NEW76Bernardo Dominic
1026Morrow RutaIndia2026-04-18Benton, John B Jr NEGOTIATION61Ivan Magalhaes
1027Aruna FigeroaArgentina2026-03-28Chanay, Jeffrey A Esq UNQUALIFIED53Elwin Sharvill
1028Tony FollerJapan2026-04-16Printing Dimensions PROPOSAL48Asiya Javayant
1029Aditya KuskoUnited Kingdom2026-04-12Chapman, Ross E Esq QUALIFIED97Bernardo Dominic
1030Octavia MaletItaly2026-04-12Feltz Printing Service UNQUALIFIED3Elwin Sharvill
1031Cody SaylorsUnited Kingdom2026-04-13Commercial Press NEW77Bernardo Dominic
1032Wickens NestleGermany2026-04-07Chanay, Jeffrey A Esq PROPOSAL46Anna Fali
1033Wickens NestleIndia2026-04-07Chapman, Ross E Esq NEGOTIATION61Elwin Sharvill
1034Aruna FigeroaFrance2026-04-17Chapman, Ross E Esq UNQUALIFIED29Elwin Sharvill
1035Greenwood BologniaCanada2026-03-31King, Christopher A Esq PROPOSAL91Anna Fali
1036Antonio CaudyArgentina2026-04-16Feltz Printing Service NEW56Ioni Bowcher
1037Jones VocelkaGermany2026-04-07Chanay, Jeffrey A Esq NEGOTIATION69Bernardo Dominic
1038Costa DilliardIndia2026-04-09Feiner Bros QUALIFIED29Elwin Sharvill
1039Emily WhobreyFrance2026-03-31Printing Dimensions UNQUALIFIED2Xuxue Feng
1040Rodrigues CampainRussia2026-04-16Rangoni Of Florence QUALIFIED55Onyama Limba
1041Clifford RimSpain2026-03-31Chanay, Jeffrey A Esq UNQUALIFIED69Stephen Shaw
1042Rodrigues CampainUnited Kingdom2026-04-11Feiner Bros PROPOSAL60Ioni Bowcher
1043Ivar PaprockiGermany2026-04-05Chemel, James L Cpa RENEWAL7Bernardo Dominic
1044Greenwood BologniaSpain2026-04-05Dorl, James J Esq NEW21Bernardo Dominic
1045Wickens NestleArgentina2026-04-05Commercial Press UNQUALIFIED38Amy Elsner
1046Smith GlickSpain2026-03-27Benton, John B Jr NEW97Xuxue Feng
1047Ricardo GauchoIndia2026-04-11Dorl, James J Esq UNQUALIFIED21Ioni Bowcher
1048Kadeem FlosiUnited Kingdom2026-03-29Printing Dimensions NEGOTIATION33Bernardo Dominic
1049Ivar PaprockiCanada2026-04-12Morlong Associates NEGOTIATION79Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Aditya KuskoUnited KingdomElwin Sharvill NEGOTIATION
Jeanfrancois VenereGermanyAsiya Javayant NEGOTIATION
Costa DilliardArgentinaAsiya Javayant RENEWAL
Antonio CaudySpainElwin Sharvill NEGOTIATION
Murillo MaletGermanyStephen Shaw QUALIFIED
Leja CaldareraAustraliaBernardo Dominic RENEWAL
Costa DilliardRussiaXuxue Feng NEGOTIATION
Aruna FigeroaRussiaAnna Fali NEW
James ButtJapanIoni Bowcher NEGOTIATION
Isabel BowleyJapanElwin Sharvill RENEWAL
Greenwood BologniaJapanBernardo Dominic UNQUALIFIED
Nicolas IturbideArgentinaAsiya Javayant QUALIFIED
Faith GillianRussiaAnna Fali UNQUALIFIED
Morrow RutaSpainOnyama Limba UNQUALIFIED
Jefferson SchemmerUnited KingdomAnna Fali QUALIFIED
Octavia MaletSpainStephen Shaw NEW
Ivar PaprockiAustraliaXuxue Feng RENEWAL
Greenwood BologniaBrazilAmy Elsner NEW
Chavez BriddickRussiaBernardo Dominic RENEWAL
Octavia MaletBrazilElwin Sharvill PROPOSAL
Emily WhobreyFranceElwin Sharvill NEW
Sinclair WaycottUnited KingdomAsiya Javayant NEGOTIATION
Salvatore StockhamRussiaXuxue Feng PROPOSAL
Julie StensethAustraliaIoni Bowcher UNQUALIFIED
Jefferson SchemmerIndiaIvan Magalhaes PROPOSAL
Jeanfrancois VenereAustraliaStephen Shaw NEW
Munro FerenczJapanXuxue Feng RENEWAL
Jones VocelkaBrazilAsiya Javayant NEGOTIATION
Wickens NestleCanadaIoni Bowcher NEGOTIATION
Maisha RulapaughGermanyElwin Sharvill PROPOSAL
Morrow RutaSpainAnna Fali PROPOSAL
Maisha RulapaughGermanyAsiya Javayant NEW
Leja CaldareraAustraliaAnna Fali RENEWAL
Sinclair WaycottAustraliaAmy Elsner QUALIFIED
Murillo MaletJapanAnna Fali NEGOTIATION
Maria MarrierArgentinaStephen Shaw UNQUALIFIED
Jones VocelkaAustraliaStephen Shaw UNQUALIFIED
Aditya KuskoItalyIvan Magalhaes NEGOTIATION
Leon OldroydBrazilXuxue Feng PROPOSAL
Mujtaba NickaCanadaElwin Sharvill UNQUALIFIED
Rodrigues CampainCanadaIvan Magalhaes NEW
Kadeem FlosiItalyElwin Sharvill NEW
Misaki RoysterBrazilIvan Magalhaes RENEWAL
Rodrigues CampainRussiaAnna Fali UNQUALIFIED
Leon OldroydCanadaAmy Elsner NEGOTIATION
Alejandro PerinJapanAsiya Javayant QUALIFIED
Nicolas IturbideUnited KingdomIvan Magalhaes QUALIFIED
Stacey MacleadGermanyOnyama Limba RENEWAL
Sinclair WaycottItalyBernardo Dominic NEW
Alejandro PerinJapanAnna Fali RENEWAL
Frozen Columns
Name
Costa Dilliard
Morrow Ruta
Misaki Royster
Jefferson Schemmer
Ricardo Gaucho
Isabel Bowley
Wickens Nestle
Costa Dilliard
David Darakjy
Stacey Maclead
Ashley Doe
Emily Whobrey
Leon Oldroyd
Rodrigues Campain
Tony Foller
Adams Morasca
Ivar Paprocki
Munro Ferencz
Izzy Garufi
Aruna Figeroa
Misaki Royster
Mayumi Kolmetz
Munro Ferencz
Antonio Caudy
Morrow Ruta
Salvatore Stockham
Darci Poquette
Jennifer Amigon
Ivar Paprocki
Leon Oldroyd
Aditya Kusko
Isabel Bowley
Adams Morasca
Adams Morasca
Tony Foller
Octavia Malet
Smith Glick
Antonio Caudy
Juan Wieser
Tony Foller
Salvatore Stockham
David Darakjy
Jefferson Schemmer
Silvio Slusarski
Johnson Sergi
Jones Vocelka
Juan Wieser
Ricardo Gaucho
Deepesh Chui
Juan Wieser
IdCountryDate
1000France2026-03-24
1001Japan2026-03-29
1002Russia2026-04-13
1003Spain2026-03-31
1004United Kingdom2026-04-10
1005Canada2026-04-06
1006Spain2026-03-29
1007Russia2026-04-05
1008Brazil2026-04-14
1009Germany2026-04-02
1010Russia2026-04-09
1011France2026-03-27
1012Australia2026-04-17
1013Australia2026-03-23
1014Japan2026-03-25
1015Australia2026-04-18
1016Argentina2026-04-04
1017Australia2026-03-28
1018Russia2026-04-14
1019Canada2026-04-02
1020Argentina2026-04-14
1021Argentina2026-03-31
1022Australia2026-04-12
1023Japan2026-04-06
1024Argentina2026-03-30
1025Canada2026-03-29
1026Spain2026-03-31
1027Australia2026-04-17
1028Japan2026-03-25
1029United Kingdom2026-03-24
1030India2026-03-26
1031Japan2026-04-14
1032Germany2026-03-24
1033Australia2026-04-02
1034Italy2026-04-08
1035Canada2026-04-19
1036Japan2026-04-18
1037France2026-04-10
1038Japan2026-04-05
1039India2026-04-05
1040United Kingdom2026-03-26
1041Spain2026-03-22
1042India2026-04-09
1043Japan2026-04-02
1044Spain2026-03-29
1045Argentina2026-03-26
1046Canada2026-04-12
1047Spain2026-04-09
1048United Kingdom2026-03-25
1049Canada2026-03-27

On-Demand Data

NameIdCountryDate
Aika Inouye1000Argentina2026-04-19
Cody Saylors1001Russia2026-03-23
Arvin Albares1002Australia2026-04-04
Isabel Bowley1003India2026-03-27
Emily Whobrey1004Australia2026-03-23
Leon Oldroyd1005Russia2026-04-16
Jennifer Amigon1006France2026-03-30
James Butt1007Germany2026-04-05
Ashley Doe1008Spain2026-04-02
Juan Wieser1009Canada2026-03-31
Jones Vocelka1010Russia2026-03-25
Ashley Doe1011Japan2026-04-11
Kadeem Flosi1012Argentina2026-04-01
Mujtaba Nicka1013Brazil2026-04-04
Maria Marrier1014United Kingdom2026-04-03
Adams Morasca1015United Kingdom2026-04-19
Adams Morasca1016Brazil2026-04-20
Francesco Shinko1017Spain2026-04-18
Rodrigues Campain1018Italy2026-03-30
Chavez Briddick1019Spain2026-03-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Greenwood BologniaGermanyIoni Bowcher QUALIFIED
Kadeem FlosiItalyAnna Fali RENEWAL
Arvin AlbaresGermanyAsiya Javayant RENEWAL
Maisha RulapaughSpainAmy Elsner NEW
Isabel BowleyArgentinaAnna Fali RENEWAL
Arvin AlbaresArgentinaBernardo Dominic NEW
Kaitlin OstroskyFranceOnyama Limba NEGOTIATION
Maria MarrierIndiaXuxue Feng QUALIFIED
Isabel BowleyAustraliaOnyama Limba NEGOTIATION
Deepesh ChuiBrazilOnyama Limba QUALIFIED
Aditya KuskoRussiaIoni Bowcher NEW
Arvin AlbaresJapanIvan Magalhaes RENEWAL
Cody SaylorsArgentinaStephen Shaw UNQUALIFIED
Maisha RulapaughRussiaIoni Bowcher UNQUALIFIED
Leja CaldareraRussiaIvan Magalhaes RENEWAL
Kaitlin OstroskyItalyOnyama Limba NEGOTIATION
Silvio SlusarskiSpainElwin Sharvill NEW
Claire TollnerUnited KingdomElwin Sharvill PROPOSAL
Costa DilliardAustraliaIvan Magalhaes RENEWAL
Misaki RoysterIndiaAsiya Javayant NEW
Murillo MaletGermanyAsiya Javayant NEW
Ivar PaprockiUnited KingdomIvan Magalhaes UNQUALIFIED
Jefferson SchemmerUnited KingdomBernardo Dominic NEGOTIATION
Costa DilliardCanadaOnyama Limba RENEWAL
Johnson SergiRussiaIoni Bowcher NEW
Arvin AlbaresSpainElwin Sharvill UNQUALIFIED
Salvatore StockhamFranceAnna Fali UNQUALIFIED
David DarakjyItalyStephen Shaw PROPOSAL
Munro FerenczFranceElwin Sharvill NEW
Adams MorascaRussiaIvan Magalhaes NEGOTIATION
Ivar PaprockiArgentinaAnna Fali QUALIFIED
Faith GillianBrazilBernardo Dominic PROPOSAL
Jeanfrancois VenereAustraliaAsiya Javayant PROPOSAL
Chavez BriddickSpainAnna Fali NEW
Deepesh ChuiUnited KingdomXuxue Feng QUALIFIED
Clifford RimAustraliaAsiya Javayant UNQUALIFIED
Smith GlickRussiaIvan Magalhaes PROPOSAL
Wickens NestleUnited KingdomStephen Shaw PROPOSAL
Jennifer AmigonBrazilAmy Elsner RENEWAL
Johnson SergiUnited KingdomIoni Bowcher 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>