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
Wickens NestleGermanyXuxue Feng RENEWAL
Silvio SlusarskiSpainIvan Magalhaes RENEWAL
Aika InouyeIndiaOnyama Limba NEW
Ricardo GauchoUnited KingdomIoni Bowcher NEW
Greenwood BologniaFranceAnna Fali QUALIFIED
Rodrigues CampainBrazilAsiya Javayant RENEWAL
Clifford RimJapanOnyama Limba QUALIFIED
Juan WieserIndiaAnna Fali NEW
Francesco ShinkoFranceAsiya Javayant PROPOSAL
Jones VocelkaUnited KingdomBernardo Dominic PROPOSAL
Stacey MacleadGermanyStephen Shaw PROPOSAL
Juan WieserFranceXuxue Feng PROPOSAL
Ricardo GauchoBrazilAnna Fali QUALIFIED
Murillo MaletRussiaAmy Elsner NEGOTIATION
Ricardo GauchoGermanyOnyama Limba RENEWAL
Julie StensethJapanAsiya Javayant QUALIFIED
Darci PoquetteFranceAnna Fali UNQUALIFIED
Greenwood BologniaUnited KingdomBernardo Dominic NEW
Francesco ShinkoArgentinaIoni Bowcher PROPOSAL
Ricardo GauchoItalyBernardo Dominic UNQUALIFIED
Juan WieserSpainElwin Sharvill PROPOSAL
Ivar PaprockiItalyIvan Magalhaes NEW
Misaki RoysterJapanAnna Fali RENEWAL
Isabel BowleyFranceXuxue Feng PROPOSAL
Smith GlickGermanyAsiya Javayant UNQUALIFIED
Greenwood BologniaJapanAmy Elsner NEGOTIATION
Cody SaylorsCanadaIoni Bowcher PROPOSAL
Emily WhobreyUnited KingdomElwin Sharvill NEGOTIATION
Smith GlickItalyElwin Sharvill NEGOTIATION
Rodrigues CampainSpainElwin Sharvill PROPOSAL
Claire TollnerItalyIvan Magalhaes UNQUALIFIED
Ivar PaprockiJapanXuxue Feng RENEWAL
Smith GlickArgentinaAsiya Javayant NEGOTIATION
Cody SaylorsAustraliaBernardo Dominic PROPOSAL
Leon OldroydFranceAnna Fali RENEWAL
Smith GlickItalyAsiya Javayant RENEWAL
Morrow RutaIndiaAsiya Javayant NEW
Aika InouyeCanadaIoni Bowcher NEGOTIATION
Jeanfrancois VenereFranceAmy Elsner PROPOSAL
Isabel BowleyCanadaAsiya Javayant RENEWAL
Sinclair WaycottFranceAmy Elsner QUALIFIED
Julie StensethCanadaStephen Shaw PROPOSAL
Stacey MacleadRussiaIoni Bowcher RENEWAL
Kadeem FlosiJapanIoni Bowcher QUALIFIED
Juan WieserJapanAnna Fali PROPOSAL
Francesco ShinkoSpainIvan Magalhaes RENEWAL
Leon OldroydIndiaAsiya Javayant RENEWAL
Aruna FigeroaRussiaAmy Elsner PROPOSAL
Ricardo GauchoJapanElwin Sharvill UNQUALIFIED
Chavez BriddickIndiaOnyama Limba NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Aika InouyeBrazilAmy Elsner NEW
Johnson SergiSpainIvan Magalhaes PROPOSAL
Arvin AlbaresUnited KingdomXuxue Feng PROPOSAL
Kaitlin OstroskyJapanOnyama Limba NEW
Johnson SergiIndiaAmy Elsner UNQUALIFIED
Kaitlin OstroskyRussiaIoni Bowcher PROPOSAL
Salvatore StockhamIndiaOnyama Limba QUALIFIED
Darci PoquetteAustraliaIoni Bowcher RENEWAL
Arvin AlbaresSpainStephen Shaw NEGOTIATION
Emily WhobreyIndiaBernardo Dominic RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio CaudyArgentina2026-04-15Dorl, James J Esq NEW99Bernardo Dominic
1001Jeanfrancois VenereIndia2026-04-06Rousseaux, Michael Esq QUALIFIED38Onyama Limba
1002Aika InouyeSpain2026-04-07Chapman, Ross E Esq QUALIFIED36Onyama Limba
1003Isabel BowleyRussia2026-04-02Rousseaux, Michael Esq UNQUALIFIED86Bernardo Dominic
1004Darci PoquetteCanada2026-04-19Chapman, Ross E Esq NEGOTIATION55Bernardo Dominic
1005Aruna FigeroaItaly2026-04-01Truhlar And Truhlar Attys RENEWAL41Xuxue Feng
1006Leon OldroydAustralia2026-03-21Dorl, James J Esq NEW76Bernardo Dominic
1007Adams MorascaIndia2026-04-14Dorl, James J Esq NEGOTIATION29Ivan Magalhaes
1008Ricardo GauchoItaly2026-03-26Chanay, Jeffrey A Esq QUALIFIED28Anna Fali
1009Johnson SergiUnited Kingdom2026-03-21Chanay, Jeffrey A Esq NEW2Xuxue Feng
1010Octavia MaletJapan2026-03-31Rangoni Of Florence QUALIFIED27Asiya Javayant
1011Francesco ShinkoJapan2026-04-11King, Christopher A Esq QUALIFIED36Xuxue Feng
1012Stacey MacleadAustralia2026-04-06Commercial Press NEGOTIATION53Asiya Javayant
1013Julie StensethAustralia2026-04-06Chanay, Jeffrey A Esq RENEWAL63Ivan Magalhaes
1014Maisha RulapaughGermany2026-03-21Benton, John B Jr PROPOSAL75Onyama Limba
1015Leja CaldareraRussia2026-04-01King, Christopher A Esq NEW90Xuxue Feng
1016Jennifer AmigonSpain2026-03-30Buckley Miller Wright NEW21Ivan Magalhaes
1017Leon OldroydSpain2026-04-08Dorl, James J Esq QUALIFIED51Anna Fali
1018David DarakjyIndia2026-04-14Chanay, Jeffrey A Esq PROPOSAL24Stephen Shaw
1019Tony FollerGermany2026-04-08Rangoni Of Florence NEGOTIATION22Ivan Magalhaes
1020Costa DilliardJapan2026-04-05Rangoni Of Florence UNQUALIFIED86Anna Fali
1021Claire TollnerBrazil2026-04-04Chapman, Ross E Esq QUALIFIED62Ioni Bowcher
1022David DarakjyArgentina2026-03-30Benton, John B Jr RENEWAL76Ioni Bowcher
1023Jeanfrancois VenereUnited Kingdom2026-04-01Chemel, James L Cpa PROPOSAL82Anna Fali
1024Octavia MaletAustralia2026-04-14Morlong Associates UNQUALIFIED57Stephen Shaw
1025David DarakjyArgentina2026-03-28Chemel, James L Cpa NEW6Anna Fali
1026Aditya KuskoItaly2026-04-02Morlong Associates PROPOSAL69Ivan Magalhaes
1027Faith GillianAustralia2026-04-15Commercial Press RENEWAL74Asiya Javayant
1028Wickens NestleItaly2026-03-23Feiner Bros NEGOTIATION92Elwin Sharvill
1029Leja CaldareraIndia2026-03-29Morlong Associates NEGOTIATION59Stephen Shaw
1030Murillo MaletJapan2026-04-07Benton, John B Jr UNQUALIFIED42Amy Elsner
1031Julie StensethRussia2026-03-22Buckley Miller Wright NEW18Onyama Limba
1032Francesco ShinkoFrance2026-03-21Chanay, Jeffrey A Esq RENEWAL47Xuxue Feng
1033Mayumi KolmetzBrazil2026-04-11Benton, John B Jr UNQUALIFIED23Elwin Sharvill
1034Misaki RoysterAustralia2026-03-31Commercial Press RENEWAL77Anna Fali
1035Maisha RulapaughIndia2026-04-08King, Christopher A Esq RENEWAL46Ioni Bowcher
1036Aruna FigeroaSpain2026-04-15Chapman, Ross E Esq RENEWAL46Elwin Sharvill
1037Sinclair WaycottFrance2026-04-08Rousseaux, Michael Esq NEW16Ioni Bowcher
1038Jennifer AmigonGermany2026-04-09Buckley Miller Wright UNQUALIFIED93Bernardo Dominic
1039Costa DilliardRussia2026-03-25Rousseaux, Michael Esq NEGOTIATION37Elwin Sharvill
1040Darci PoquetteUnited Kingdom2026-04-17Printing Dimensions RENEWAL29Stephen Shaw
1041Jennifer AmigonBrazil2026-04-01Truhlar And Truhlar Attys NEW44Ivan Magalhaes
1042Emily WhobreyArgentina2026-04-01Printing Dimensions NEGOTIATION64Ivan Magalhaes
1043Ashley DoeArgentina2026-03-30Morlong Associates NEGOTIATION22Onyama Limba
1044Kaitlin OstroskyJapan2026-03-28Benton, John B Jr NEW73Xuxue Feng
1045Misaki RoysterUnited Kingdom2026-04-15Dorl, James J Esq PROPOSAL29Bernardo Dominic
1046Ashley DoeJapan2026-03-22Buckley Miller Wright UNQUALIFIED11Ivan Magalhaes
1047Maria MarrierAustralia2026-04-16Chemel, James L Cpa PROPOSAL74Ivan Magalhaes
1048Kadeem FlosiSpain2026-04-04Printing Dimensions NEGOTIATION78Ivan Magalhaes
1049Munro FerenczCanada2026-04-14Feiner Bros UNQUALIFIED35Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Aditya KuskoItalyElwin Sharvill PROPOSAL
Kaitlin OstroskyArgentinaAmy Elsner NEGOTIATION
Clifford RimArgentinaIvan Magalhaes NEW
Misaki RoysterGermanyIvan Magalhaes NEGOTIATION
Tony FollerBrazilXuxue Feng PROPOSAL
Cody SaylorsArgentinaIvan Magalhaes PROPOSAL
Octavia MaletCanadaStephen Shaw NEGOTIATION
Rodrigues CampainBrazilIoni Bowcher QUALIFIED
Jefferson SchemmerGermanyXuxue Feng RENEWAL
Murillo MaletItalyAmy Elsner RENEWAL
James ButtJapanAnna Fali NEW
Nicolas IturbideUnited KingdomBernardo Dominic PROPOSAL
Misaki RoysterFranceAnna Fali NEGOTIATION
Claire TollnerFranceAsiya Javayant RENEWAL
Aditya KuskoArgentinaAsiya Javayant QUALIFIED
Aditya KuskoIndiaXuxue Feng UNQUALIFIED
Silvio SlusarskiItalyAnna Fali QUALIFIED
Adams MorascaJapanAsiya Javayant UNQUALIFIED
Kadeem FlosiSpainElwin Sharvill NEW
Jefferson SchemmerGermanyAsiya Javayant NEGOTIATION
Silvio SlusarskiCanadaElwin Sharvill NEW
Salvatore StockhamUnited KingdomXuxue Feng NEGOTIATION
Sinclair WaycottItalyAsiya Javayant RENEWAL
Ashley DoeItalyOnyama Limba RENEWAL
Francesco ShinkoCanadaIoni Bowcher NEGOTIATION
Claire TollnerSpainIvan Magalhaes QUALIFIED
Salvatore StockhamItalyXuxue Feng RENEWAL
Alejandro PerinUnited KingdomBernardo Dominic QUALIFIED
Aika InouyeArgentinaAnna Fali PROPOSAL
Murillo MaletArgentinaStephen Shaw UNQUALIFIED
Aruna FigeroaArgentinaStephen Shaw UNQUALIFIED
Nicolas IturbideItalyIoni Bowcher PROPOSAL
Octavia MaletJapanAsiya Javayant RENEWAL
Jefferson SchemmerJapanAsiya Javayant RENEWAL
Julie StensethArgentinaIvan Magalhaes NEW
Emily WhobreyAustraliaElwin Sharvill NEGOTIATION
Kaitlin OstroskyRussiaXuxue Feng RENEWAL
Darci PoquetteCanadaXuxue Feng PROPOSAL
Aika InouyeIndiaIvan Magalhaes UNQUALIFIED
Octavia MaletJapanAnna Fali NEW
Johnson SergiSpainBernardo Dominic NEGOTIATION
Johnson SergiCanadaXuxue Feng QUALIFIED
Smith GlickItalyAsiya Javayant UNQUALIFIED
Morrow RutaRussiaAsiya Javayant UNQUALIFIED
Morrow RutaRussiaElwin Sharvill NEW
Silvio SlusarskiCanadaAmy Elsner RENEWAL
Aika InouyeSpainXuxue Feng NEW
Kaitlin OstroskyJapanAmy Elsner NEGOTIATION
Salvatore StockhamBrazilAnna Fali NEGOTIATION
Murillo MaletIndiaXuxue Feng UNQUALIFIED
Frozen Columns
Name
Isabel Bowley
Ashley Doe
Ivar Paprocki
Isabel Bowley
Clifford Rim
Mayumi Kolmetz
Deepesh Chui
Stacey Maclead
Aika Inouye
Aika Inouye
Nicolas Iturbide
Jennifer Amigon
Alejandro Perin
Isabel Bowley
Jeanfrancois Venere
Aruna Figeroa
Maisha Rulapaugh
Clifford Rim
Wickens Nestle
Morrow Ruta
Faith Gillian
Juan Wieser
Stacey Maclead
Maisha Rulapaugh
Salvatore Stockham
Deepesh Chui
Aruna Figeroa
Francesco Shinko
Chavez Briddick
Misaki Royster
Aditya Kusko
Rodrigues Campain
Isabel Bowley
Munro Ferencz
Chavez Briddick
Claire Tollner
Ricardo Gaucho
Murillo Malet
Ashley Doe
Maisha Rulapaugh
Chavez Briddick
Maisha Rulapaugh
Faith Gillian
Silvio Slusarski
Jeanfrancois Venere
Juan Wieser
Aditya Kusko
Sinclair Waycott
David Darakjy
Maisha Rulapaugh
IdCountryDate
1000Russia2026-04-17
1001Russia2026-03-22
1002Brazil2026-04-13
1003Spain2026-04-10
1004Spain2026-03-25
1005Germany2026-03-28
1006Australia2026-03-24
1007Germany2026-04-10
1008Brazil2026-04-11
1009Argentina2026-04-03
1010Japan2026-04-07
1011Russia2026-03-22
1012India2026-04-09
1013Brazil2026-03-28
1014Germany2026-03-22
1015Italy2026-03-31
1016France2026-04-01
1017Canada2026-04-01
1018Spain2026-04-18
1019Argentina2026-04-04
1020Italy2026-03-27
1021Russia2026-03-28
1022India2026-04-08
1023Russia2026-03-31
1024Russia2026-04-09
1025Canada2026-04-19
1026Spain2026-03-23
1027France2026-03-25
1028India2026-03-24
1029Russia2026-03-21
1030Italy2026-04-16
1031Argentina2026-04-18
1032Germany2026-04-15
1033United Kingdom2026-04-11
1034Argentina2026-04-02
1035Brazil2026-03-25
1036France2026-04-11
1037Germany2026-03-29
1038Canada2026-04-13
1039Argentina2026-03-21
1040Argentina2026-03-25
1041India2026-04-11
1042Brazil2026-04-13
1043Russia2026-03-24
1044India2026-04-08
1045Russia2026-04-14
1046Japan2026-04-06
1047Spain2026-04-13
1048Canada2026-03-23
1049Germany2026-04-16

On-Demand Data

NameIdCountryDate
Smith Glick1000France2026-04-13
Arvin Albares1001Canada2026-04-11
Misaki Royster1002Canada2026-04-06
Nicolas Iturbide1003Spain2026-03-22
Ashley Doe1004Germany2026-04-03
Maria Marrier1005Spain2026-04-13
James Butt1006India2026-04-17
Chavez Briddick1007Germany2026-04-10
Jones Vocelka1008India2026-03-30
Adams Morasca1009Japan2026-04-13
Mujtaba Nicka1010India2026-03-29
Arvin Albares1011Russia2026-04-01
Stacey Maclead1012Germany2026-03-31
Aruna Figeroa1013Japan2026-03-21
Juan Wieser1014Japan2026-03-31
Aditya Kusko1015Spain2026-04-10
Ivar Paprocki1016India2026-04-19
Octavia Malet1017India2026-04-08
Emily Whobrey1018Italy2026-03-27
Julie Stenseth1019Canada2026-04-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jeanfrancois VenereBrazilOnyama Limba UNQUALIFIED
Maria MarrierRussiaStephen Shaw RENEWAL
James ButtSpainStephen Shaw UNQUALIFIED
Faith GillianUnited KingdomAmy Elsner QUALIFIED
Costa DilliardSpainXuxue Feng NEGOTIATION
Antonio CaudyJapanIoni Bowcher UNQUALIFIED
Darci PoquetteRussiaAsiya Javayant PROPOSAL
Emily WhobreyRussiaElwin Sharvill RENEWAL
Clifford RimGermanyAnna Fali NEGOTIATION
Wickens NestleFranceIvan Magalhaes RENEWAL
Ashley DoeRussiaAmy Elsner QUALIFIED
Jefferson SchemmerGermanyIvan Magalhaes PROPOSAL
Juan WieserBrazilIoni Bowcher RENEWAL
Mayumi KolmetzIndiaAsiya Javayant QUALIFIED
Aditya KuskoJapanIvan Magalhaes NEGOTIATION
Kaitlin OstroskySpainAsiya Javayant PROPOSAL
Leja CaldareraAustraliaIoni Bowcher NEGOTIATION
Rodrigues CampainRussiaIoni Bowcher RENEWAL
Leja CaldareraIndiaElwin Sharvill QUALIFIED
Nicolas IturbideAustraliaAnna Fali NEGOTIATION
Arvin AlbaresFranceIoni Bowcher RENEWAL
Maria MarrierArgentinaXuxue Feng RENEWAL
Rodrigues CampainArgentinaElwin Sharvill QUALIFIED
Morrow RutaRussiaAnna Fali RENEWAL
Smith GlickSpainIvan Magalhaes UNQUALIFIED
Izzy GarufiArgentinaAnna Fali NEGOTIATION
Sinclair WaycottUnited KingdomIvan Magalhaes UNQUALIFIED
Faith GillianJapanElwin Sharvill QUALIFIED
Claire TollnerAustraliaXuxue Feng NEGOTIATION
Murillo MaletArgentinaAsiya Javayant QUALIFIED
Faith GillianArgentinaElwin Sharvill RENEWAL
Kaitlin OstroskyArgentinaElwin Sharvill QUALIFIED
Silvio SlusarskiSpainElwin Sharvill NEGOTIATION
Izzy GarufiItalyOnyama Limba NEGOTIATION
Jennifer AmigonUnited KingdomAnna Fali QUALIFIED
Johnson SergiBrazilAsiya Javayant NEGOTIATION
Mujtaba NickaBrazilAnna Fali UNQUALIFIED
Izzy GarufiUnited KingdomAmy Elsner RENEWAL
Adams MorascaIndiaAmy Elsner PROPOSAL
Nicolas IturbideItalyIoni Bowcher PROPOSAL

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