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
Johnson SergiCanadaOnyama Limba RENEWAL
Smith GlickSpainIvan Magalhaes PROPOSAL
Leon OldroydSpainIvan Magalhaes UNQUALIFIED
Emily WhobreyIndiaIvan Magalhaes NEGOTIATION
Jennifer AmigonBrazilAnna Fali NEGOTIATION
Mayumi KolmetzCanadaIvan Magalhaes NEW
David DarakjyFranceElwin Sharvill NEW
Misaki RoysterJapanAmy Elsner RENEWAL
Jeanfrancois VenereRussiaXuxue Feng NEGOTIATION
David DarakjyGermanyOnyama Limba NEW
Izzy GarufiRussiaAmy Elsner UNQUALIFIED
Alejandro PerinSpainOnyama Limba NEW
Darci PoquetteJapanElwin Sharvill NEW
Munro FerenczFranceIoni Bowcher RENEWAL
Sinclair WaycottItalyIoni Bowcher PROPOSAL
Ivar PaprockiJapanAmy Elsner NEW
Greenwood BologniaJapanBernardo Dominic PROPOSAL
Jennifer AmigonJapanIoni Bowcher NEW
Greenwood BologniaGermanyStephen Shaw RENEWAL
David DarakjyCanadaAsiya Javayant NEGOTIATION
Chavez BriddickItalyAsiya Javayant NEW
Jeanfrancois VenereItalyBernardo Dominic NEW
Morrow RutaSpainBernardo Dominic UNQUALIFIED
Maria MarrierSpainAnna Fali QUALIFIED
Julie StensethUnited KingdomAsiya Javayant UNQUALIFIED
Mayumi KolmetzUnited KingdomAnna Fali RENEWAL
Octavia MaletFranceAnna Fali PROPOSAL
Sinclair WaycottItalyBernardo Dominic PROPOSAL
Kadeem FlosiAustraliaAmy Elsner NEW
Kadeem FlosiItalyOnyama Limba RENEWAL
Faith GillianItalyElwin Sharvill NEGOTIATION
Clifford RimFranceIoni Bowcher QUALIFIED
Ashley DoeItalyAnna Fali RENEWAL
Francesco ShinkoArgentinaStephen Shaw RENEWAL
Clifford RimCanadaXuxue Feng PROPOSAL
Maria MarrierBrazilAmy Elsner RENEWAL
Salvatore StockhamBrazilAnna Fali PROPOSAL
Darci PoquetteCanadaElwin Sharvill NEW
Leon OldroydAustraliaIvan Magalhaes NEGOTIATION
Claire TollnerArgentinaElwin Sharvill RENEWAL
Kadeem FlosiJapanBernardo Dominic NEW
James ButtSpainIvan Magalhaes RENEWAL
Jennifer AmigonItalyOnyama Limba UNQUALIFIED
James ButtGermanyBernardo Dominic QUALIFIED
Greenwood BologniaIndiaXuxue Feng NEW
Maisha RulapaughAustraliaElwin Sharvill NEGOTIATION
Salvatore StockhamIndiaElwin Sharvill RENEWAL
Claire TollnerIndiaAnna Fali NEGOTIATION
Darci PoquetteGermanyAmy Elsner QUALIFIED
Costa DilliardIndiaAsiya Javayant QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Aruna FigeroaCanadaStephen Shaw NEW
Costa DilliardSpainOnyama Limba UNQUALIFIED
Sinclair WaycottBrazilOnyama Limba PROPOSAL
Aditya KuskoArgentinaOnyama Limba NEGOTIATION
Johnson SergiUnited KingdomAmy Elsner UNQUALIFIED
Wickens NestleBrazilIoni Bowcher PROPOSAL
Aruna FigeroaItalyOnyama Limba PROPOSAL
Rodrigues CampainUnited KingdomXuxue Feng UNQUALIFIED
Jeanfrancois VenereUnited KingdomElwin Sharvill QUALIFIED
Morrow RutaAustraliaIvan Magalhaes NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Deepesh ChuiRussia2025-07-17Printing Dimensions UNQUALIFIED22Xuxue Feng
1001Francesco ShinkoItaly2025-07-21Chemel, James L Cpa NEW45Onyama Limba
1002Nicolas IturbideUnited Kingdom2025-08-01Commercial Press NEW48Anna Fali
1003Sinclair WaycottRussia2025-08-09Printing Dimensions UNQUALIFIED14Ivan Magalhaes
1004Sinclair WaycottAustralia2025-08-11Chapman, Ross E Esq PROPOSAL31Xuxue Feng
1005David DarakjyAustralia2025-07-19Chanay, Jeffrey A Esq RENEWAL74Xuxue Feng
1006Maisha RulapaughJapan2025-08-02Commercial Press RENEWAL56Elwin Sharvill
1007Emily WhobreyCanada2025-08-10Chapman, Ross E Esq PROPOSAL34Amy Elsner
1008Cody SaylorsUnited Kingdom2025-08-10Printing Dimensions UNQUALIFIED48Asiya Javayant
1009Aika InouyeArgentina2025-07-26Dorl, James J Esq UNQUALIFIED7Bernardo Dominic
1010Mujtaba NickaBrazil2025-08-08Rangoni Of Florence NEGOTIATION7Xuxue Feng
1011Jennifer AmigonRussia2025-07-26Commercial Press RENEWAL78Onyama Limba
1012Leja CaldareraCanada2025-08-01Chapman, Ross E Esq RENEWAL1Amy Elsner
1013David DarakjyCanada2025-08-01Printing Dimensions QUALIFIED7Asiya Javayant
1014Alejandro PerinSpain2025-07-18Rousseaux, Michael Esq QUALIFIED85Ivan Magalhaes
1015Aika InouyeArgentina2025-08-12Truhlar And Truhlar Attys UNQUALIFIED11Asiya Javayant
1016Murillo MaletAustralia2025-07-28Buckley Miller Wright RENEWAL70Anna Fali
1017Aruna FigeroaFrance2025-07-23Benton, John B Jr NEGOTIATION26Asiya Javayant
1018Isabel BowleyBrazil2025-07-15Feiner Bros NEW79Stephen Shaw
1019Ricardo GauchoUnited Kingdom2025-07-27Printing Dimensions UNQUALIFIED82Ivan Magalhaes
1020Rodrigues CampainArgentina2025-08-11Benton, John B Jr RENEWAL72Stephen Shaw
1021Smith GlickJapan2025-07-17Feiner Bros RENEWAL48Amy Elsner
1022Leja CaldareraArgentina2025-07-27Rangoni Of Florence NEW4Anna Fali
1023Izzy GarufiItaly2025-08-04King, Christopher A Esq RENEWAL65Ioni Bowcher
1024Jeanfrancois VenereArgentina2025-08-11King, Christopher A Esq PROPOSAL31Stephen Shaw
1025Mayumi KolmetzRussia2025-07-17King, Christopher A Esq QUALIFIED13Ivan Magalhaes
1026Smith GlickItaly2025-08-07Chanay, Jeffrey A Esq NEW8Stephen Shaw
1027Juan WieserItaly2025-08-05Chanay, Jeffrey A Esq RENEWAL21Ioni Bowcher
1028Morrow RutaGermany2025-07-28Morlong Associates NEW87Stephen Shaw
1029Faith GillianBrazil2025-08-11King, Christopher A Esq QUALIFIED2Bernardo Dominic
1030Faith GillianFrance2025-07-26Morlong Associates PROPOSAL5Xuxue Feng
1031Aditya KuskoBrazil2025-08-12Rousseaux, Michael Esq NEW4Ivan Magalhaes
1032Mujtaba NickaSpain2025-08-05Chapman, Ross E Esq NEGOTIATION96Asiya Javayant
1033Silvio SlusarskiSpain2025-08-01Rousseaux, Michael Esq PROPOSAL81Bernardo Dominic
1034Tony FollerFrance2025-07-24Dorl, James J Esq RENEWAL41Bernardo Dominic
1035Nicolas IturbideSpain2025-08-13Printing Dimensions RENEWAL23Stephen Shaw
1036Cody SaylorsFrance2025-07-18Feltz Printing Service RENEWAL39Ioni Bowcher
1037Clifford RimRussia2025-08-01Feltz Printing Service PROPOSAL99Asiya Javayant
1038Alejandro PerinArgentina2025-08-11Buckley Miller Wright NEW48Asiya Javayant
1039Emily WhobreyFrance2025-07-20Morlong Associates NEGOTIATION36Elwin Sharvill
1040Sinclair WaycottSpain2025-07-22Chapman, Ross E Esq NEW51Bernardo Dominic
1041Adams MorascaGermany2025-08-11Commercial Press QUALIFIED9Bernardo Dominic
1042Jefferson SchemmerFrance2025-08-06Feltz Printing Service UNQUALIFIED67Amy Elsner
1043Stacey MacleadArgentina2025-07-18Dorl, James J Esq RENEWAL22Elwin Sharvill
1044Clifford RimArgentina2025-07-27Buckley Miller Wright NEGOTIATION46Asiya Javayant
1045Adams MorascaAustralia2025-08-04Benton, John B Jr QUALIFIED98Xuxue Feng
1046Jennifer AmigonUnited Kingdom2025-07-26Chapman, Ross E Esq NEW40Ioni Bowcher
1047Claire TollnerSpain2025-07-21Buckley Miller Wright RENEWAL14Bernardo Dominic
1048Antonio CaudyGermany2025-08-05Chanay, Jeffrey A Esq UNQUALIFIED40Stephen Shaw
1049Smith GlickFrance2025-07-21King, Christopher A Esq NEGOTIATION21Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Morrow RutaSpainAmy Elsner PROPOSAL
Kadeem FlosiUnited KingdomElwin Sharvill RENEWAL
Alejandro PerinUnited KingdomOnyama Limba QUALIFIED
David DarakjyRussiaElwin Sharvill QUALIFIED
Kadeem FlosiCanadaAmy Elsner NEGOTIATION
Murillo MaletFranceXuxue Feng PROPOSAL
Ricardo GauchoGermanyOnyama Limba UNQUALIFIED
Jones VocelkaJapanAmy Elsner NEGOTIATION
Adams MorascaAustraliaIvan Magalhaes UNQUALIFIED
Leja CaldareraRussiaXuxue Feng RENEWAL
Wickens NestleRussiaStephen Shaw UNQUALIFIED
Kadeem FlosiJapanBernardo Dominic PROPOSAL
Tony FollerCanadaIvan Magalhaes RENEWAL
Mujtaba NickaBrazilAsiya Javayant QUALIFIED
Nicolas IturbideIndiaAnna Fali QUALIFIED
Cody SaylorsArgentinaElwin Sharvill PROPOSAL
Sinclair WaycottCanadaIvan Magalhaes UNQUALIFIED
Ivar PaprockiArgentinaAmy Elsner UNQUALIFIED
Aditya KuskoBrazilAnna Fali RENEWAL
Francesco ShinkoBrazilAsiya Javayant QUALIFIED
Aika InouyeJapanBernardo Dominic PROPOSAL
Jones VocelkaSpainAmy Elsner NEW
Deepesh ChuiArgentinaAsiya Javayant NEGOTIATION
Aika InouyeCanadaAsiya Javayant QUALIFIED
Ashley DoeUnited KingdomOnyama Limba QUALIFIED
Adams MorascaArgentinaIoni Bowcher NEGOTIATION
Aditya KuskoBrazilStephen Shaw UNQUALIFIED
Costa DilliardAustraliaAsiya Javayant NEGOTIATION
Mayumi KolmetzRussiaAnna Fali UNQUALIFIED
Clifford RimBrazilStephen Shaw UNQUALIFIED
Misaki RoysterIndiaIoni Bowcher QUALIFIED
Mayumi KolmetzCanadaAnna Fali PROPOSAL
Stacey MacleadUnited KingdomIvan Magalhaes QUALIFIED
Maria MarrierBrazilAnna Fali UNQUALIFIED
Rodrigues CampainJapanXuxue Feng PROPOSAL
Morrow RutaItalyAnna Fali NEGOTIATION
Rodrigues CampainBrazilStephen Shaw UNQUALIFIED
Darci PoquetteJapanOnyama Limba NEGOTIATION
Kadeem FlosiGermanyStephen Shaw QUALIFIED
Juan WieserUnited KingdomIoni Bowcher PROPOSAL
Maria MarrierRussiaIoni Bowcher RENEWAL
Kaitlin OstroskySpainIoni Bowcher PROPOSAL
Juan WieserSpainElwin Sharvill PROPOSAL
Jennifer AmigonAustraliaAnna Fali UNQUALIFIED
Clifford RimBrazilElwin Sharvill QUALIFIED
Nicolas IturbideIndiaAmy Elsner NEGOTIATION
Ashley DoeRussiaAnna Fali PROPOSAL
Cody SaylorsGermanyStephen Shaw NEW
Misaki RoysterArgentinaAmy Elsner NEW
Ivar PaprockiCanadaAsiya Javayant NEGOTIATION
Frozen Columns
Name
Alejandro Perin
Maria Marrier
Jennifer Amigon
Alejandro Perin
Salvatore Stockham
Alejandro Perin
Ricardo Gaucho
Chavez Briddick
Isabel Bowley
Maria Marrier
Mayumi Kolmetz
Johnson Sergi
Julie Stenseth
Chavez Briddick
Ashley Doe
Costa Dilliard
Aditya Kusko
Aditya Kusko
Emily Whobrey
Costa Dilliard
Antonio Caudy
Arvin Albares
Isabel Bowley
Munro Ferencz
Smith Glick
Izzy Garufi
Emily Whobrey
Aditya Kusko
Jones Vocelka
Kaitlin Ostrosky
Aditya Kusko
James Butt
Greenwood Bolognia
Stacey Maclead
Aika Inouye
David Darakjy
Stacey Maclead
Jefferson Schemmer
Greenwood Bolognia
Smith Glick
Claire Tollner
Ivar Paprocki
Isabel Bowley
Claire Tollner
Jefferson Schemmer
Kadeem Flosi
Mujtaba Nicka
Alejandro Perin
Julie Stenseth
Smith Glick
IdCountryDate
1000Brazil2025-08-01
1001Italy2025-07-19
1002France2025-08-01
1003Brazil2025-07-24
1004Canada2025-07-21
1005Canada2025-07-23
1006Russia2025-08-07
1007Italy2025-08-02
1008France2025-08-10
1009Spain2025-08-04
1010Brazil2025-08-12
1011Germany2025-07-31
1012France2025-08-01
1013Russia2025-07-21
1014Germany2025-07-26
1015India2025-07-30
1016Italy2025-08-11
1017Spain2025-07-19
1018Brazil2025-07-19
1019United Kingdom2025-07-31
1020United Kingdom2025-07-22
1021Argentina2025-08-11
1022Italy2025-08-12
1023India2025-07-24
1024France2025-08-02
1025Argentina2025-08-10
1026Spain2025-07-25
1027India2025-07-21
1028India2025-08-13
1029Brazil2025-08-08
1030Argentina2025-07-20
1031Argentina2025-07-24
1032Argentina2025-08-01
1033Australia2025-08-12
1034Japan2025-07-21
1035Brazil2025-08-08
1036Germany2025-08-09
1037Argentina2025-07-28
1038Argentina2025-08-06
1039Spain2025-08-02
1040India2025-07-20
1041Germany2025-08-11
1042India2025-08-10
1043Canada2025-08-12
1044Germany2025-07-15
1045Canada2025-08-11
1046Italy2025-08-13
1047Japan2025-07-28
1048Italy2025-07-17
1049Canada2025-07-24

On-Demand Data

NameIdCountryDate
Izzy Garufi1000France2025-07-19
Francesco Shinko1001Australia2025-07-24
Nicolas Iturbide1002Argentina2025-08-02
Chavez Briddick1003Brazil2025-07-16
Misaki Royster1004France2025-08-06
Murillo Malet1005Japan2025-07-16
Tony Foller1006Germany2025-07-20
Claire Tollner1007Russia2025-07-25
James Butt1008Italy2025-07-17
Octavia Malet1009Japan2025-08-09
Antonio Caudy1010United Kingdom2025-07-16
Arvin Albares1011Japan2025-07-30
Morrow Ruta1012India2025-07-25
Jennifer Amigon1013Russia2025-07-20
Aika Inouye1014Argentina2025-08-01
Mayumi Kolmetz1015Brazil2025-07-25
Arvin Albares1016Canada2025-08-04
Kadeem Flosi1017Argentina2025-07-19
Costa Dilliard1018Canada2025-08-11
Isabel Bowley1019Italy2025-07-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Izzy GarufiCanadaIoni Bowcher UNQUALIFIED
Clifford RimSpainIvan Magalhaes RENEWAL
Tony FollerIndiaElwin Sharvill RENEWAL
Mujtaba NickaArgentinaOnyama Limba NEW
Jeanfrancois VenereCanadaElwin Sharvill QUALIFIED
Murillo MaletItalyIoni Bowcher PROPOSAL
Chavez BriddickUnited KingdomOnyama Limba NEGOTIATION
Wickens NestleBrazilBernardo Dominic UNQUALIFIED
Smith GlickCanadaAnna Fali RENEWAL
David DarakjyBrazilStephen Shaw NEW
Wickens NestleRussiaIvan Magalhaes QUALIFIED
Darci PoquetteAustraliaBernardo Dominic UNQUALIFIED
Juan WieserArgentinaOnyama Limba UNQUALIFIED
Stacey MacleadCanadaXuxue Feng QUALIFIED
Francesco ShinkoCanadaAsiya Javayant PROPOSAL
Maria MarrierBrazilOnyama Limba NEW
Murillo MaletSpainStephen Shaw NEW
Chavez BriddickIndiaBernardo Dominic QUALIFIED
Maisha RulapaughItalyOnyama Limba RENEWAL
Cody SaylorsUnited KingdomAnna Fali QUALIFIED
Antonio CaudyBrazilAsiya Javayant PROPOSAL
Maisha RulapaughRussiaElwin Sharvill RENEWAL
Mayumi KolmetzAustraliaStephen Shaw NEW
Emily WhobreyIndiaBernardo Dominic NEGOTIATION
Adams MorascaBrazilAsiya Javayant QUALIFIED
Jennifer AmigonRussiaAsiya Javayant NEGOTIATION
Tony FollerSpainAsiya Javayant QUALIFIED
Isabel BowleyFranceOnyama Limba NEW
Leon OldroydUnited KingdomXuxue Feng NEW
Tony FollerArgentinaXuxue Feng NEW
Izzy GarufiArgentinaStephen Shaw NEGOTIATION
Kadeem FlosiJapanAmy Elsner PROPOSAL
Ivar PaprockiFranceStephen Shaw NEGOTIATION
James ButtSpainStephen Shaw NEW
Aruna FigeroaGermanyAnna Fali UNQUALIFIED
Mujtaba NickaArgentinaElwin Sharvill RENEWAL
Maisha RulapaughArgentinaAnna Fali QUALIFIED
Greenwood BologniaCanadaBernardo Dominic QUALIFIED
Silvio SlusarskiFranceIvan Magalhaes UNQUALIFIED
Kadeem FlosiAustraliaXuxue Feng 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>