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
Maisha RulapaughJapanXuxue Feng RENEWAL
Ashley DoeFranceAsiya Javayant UNQUALIFIED
Aditya KuskoGermanyStephen Shaw PROPOSAL
Jefferson SchemmerUnited KingdomAsiya Javayant NEW
David DarakjyItalyAsiya Javayant NEW
Ivar PaprockiAustraliaIvan Magalhaes UNQUALIFIED
James ButtUnited KingdomBernardo Dominic UNQUALIFIED
Johnson SergiGermanyIvan Magalhaes UNQUALIFIED
Deepesh ChuiRussiaAnna Fali RENEWAL
Isabel BowleyArgentinaAnna Fali PROPOSAL
Salvatore StockhamCanadaIvan Magalhaes PROPOSAL
Juan WieserIndiaIoni Bowcher UNQUALIFIED
Leja CaldareraSpainIoni Bowcher NEGOTIATION
Ivar PaprockiUnited KingdomBernardo Dominic UNQUALIFIED
Nicolas IturbideGermanyXuxue Feng RENEWAL
Jones VocelkaCanadaBernardo Dominic NEGOTIATION
Tony FollerUnited KingdomAsiya Javayant NEGOTIATION
Adams MorascaBrazilIvan Magalhaes RENEWAL
Adams MorascaCanadaOnyama Limba NEW
Tony FollerCanadaBernardo Dominic NEW
Arvin AlbaresRussiaAmy Elsner NEW
Jennifer AmigonArgentinaAnna Fali QUALIFIED
Mujtaba NickaIndiaAnna Fali QUALIFIED
Johnson SergiGermanyIvan Magalhaes NEW
Misaki RoysterCanadaXuxue Feng UNQUALIFIED
Aika InouyeArgentinaElwin Sharvill QUALIFIED
Ricardo GauchoJapanStephen Shaw NEW
Mayumi KolmetzIndiaOnyama Limba NEGOTIATION
Morrow RutaCanadaXuxue Feng NEGOTIATION
Faith GillianArgentinaElwin Sharvill NEGOTIATION
Tony FollerArgentinaAmy Elsner NEGOTIATION
Adams MorascaSpainIoni Bowcher QUALIFIED
Tony FollerUnited KingdomElwin Sharvill NEW
Nicolas IturbideFranceAmy Elsner NEW
Kaitlin OstroskyBrazilOnyama Limba NEGOTIATION
Ricardo GauchoGermanyAnna Fali NEW
Mujtaba NickaGermanyStephen Shaw RENEWAL
Jeanfrancois VenereAustraliaBernardo Dominic NEW
Silvio SlusarskiBrazilAnna Fali PROPOSAL
Sinclair WaycottIndiaElwin Sharvill UNQUALIFIED
Jeanfrancois VenereItalyXuxue Feng PROPOSAL
Tony FollerItalyBernardo Dominic QUALIFIED
Jones VocelkaSpainOnyama Limba NEW
Silvio SlusarskiAustraliaXuxue Feng UNQUALIFIED
Claire TollnerItalyXuxue Feng PROPOSAL
Jones VocelkaIndiaXuxue Feng NEW
Tony FollerIndiaOnyama Limba NEGOTIATION
Chavez BriddickRussiaStephen Shaw QUALIFIED
Mujtaba NickaItalyAnna Fali PROPOSAL
Aruna FigeroaArgentinaAmy Elsner NEW
Horizontal
NameCountryRepresentativeStatus
Leja CaldareraArgentinaIvan Magalhaes NEGOTIATION
Arvin AlbaresJapanAmy Elsner NEGOTIATION
Wickens NestleUnited KingdomAnna Fali PROPOSAL
Jones VocelkaGermanyAmy Elsner NEGOTIATION
Sinclair WaycottAustraliaBernardo Dominic UNQUALIFIED
Rodrigues CampainIndiaStephen Shaw PROPOSAL
Clifford RimCanadaAnna Fali NEGOTIATION
Aruna FigeroaBrazilAnna Fali NEGOTIATION
Kaitlin OstroskyBrazilElwin Sharvill QUALIFIED
Ricardo GauchoBrazilOnyama Limba QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Julie StensethFrance2026-05-08Chemel, James L Cpa NEGOTIATION56Onyama Limba
1001Francesco ShinkoIndia2026-05-13Printing Dimensions NEW64Amy Elsner
1002Chavez BriddickBrazil2026-05-12Chemel, James L Cpa RENEWAL93Asiya Javayant
1003Smith GlickUnited Kingdom2026-05-08Morlong Associates PROPOSAL2Ioni Bowcher
1004Salvatore StockhamArgentina2026-05-04Truhlar And Truhlar Attys PROPOSAL54Bernardo Dominic
1005Murillo MaletBrazil2026-05-18King, Christopher A Esq NEGOTIATION91Amy Elsner
1006Cody SaylorsCanada2026-05-29Feiner Bros UNQUALIFIED75Elwin Sharvill
1007Kadeem FlosiJapan2026-05-29Chemel, James L Cpa NEGOTIATION77Asiya Javayant
1008Silvio SlusarskiItaly2026-05-17Printing Dimensions NEW31Stephen Shaw
1009Nicolas IturbideBrazil2026-05-04Chapman, Ross E Esq QUALIFIED46Xuxue Feng
1010Misaki RoysterIndia2026-05-13Truhlar And Truhlar Attys PROPOSAL76Xuxue Feng
1011Silvio SlusarskiSpain2026-05-30Chemel, James L Cpa UNQUALIFIED43Onyama Limba
1012Kadeem FlosiUnited Kingdom2026-05-04Printing Dimensions UNQUALIFIED45Stephen Shaw
1013Leja CaldareraBrazil2026-05-12Morlong Associates PROPOSAL4Stephen Shaw
1014Aditya KuskoUnited Kingdom2026-05-23Feltz Printing Service UNQUALIFIED41Stephen Shaw
1015Salvatore StockhamUnited Kingdom2026-05-24Rousseaux, Michael Esq QUALIFIED31Bernardo Dominic
1016Kadeem FlosiRussia2026-05-30Rangoni Of Florence UNQUALIFIED21Ioni Bowcher
1017Leon OldroydAustralia2026-05-22Commercial Press NEGOTIATION19Anna Fali
1018Leon OldroydIndia2026-05-04Commercial Press NEW61Ioni Bowcher
1019Emily WhobreyFrance2026-05-28Rangoni Of Florence RENEWAL49Ivan Magalhaes
1020Maria MarrierUnited Kingdom2026-05-06Feltz Printing Service UNQUALIFIED90Ivan Magalhaes
1021Mayumi KolmetzJapan2026-05-25Chemel, James L Cpa UNQUALIFIED18Amy Elsner
1022Nicolas IturbideItaly2026-05-12Feltz Printing Service NEGOTIATION16Ioni Bowcher
1023Morrow RutaCanada2026-05-07Printing Dimensions UNQUALIFIED26Asiya Javayant
1024Maisha RulapaughIndia2026-05-19Benton, John B Jr RENEWAL97Elwin Sharvill
1025Johnson SergiFrance2026-05-21Chapman, Ross E Esq UNQUALIFIED0Stephen Shaw
1026Arvin AlbaresArgentina2026-05-13Printing Dimensions UNQUALIFIED15Stephen Shaw
1027Jennifer AmigonRussia2026-05-04King, Christopher A Esq PROPOSAL8Xuxue Feng
1028Munro FerenczSpain2026-05-04Feltz Printing Service PROPOSAL54Onyama Limba
1029Kaitlin OstroskyItaly2026-05-27Feltz Printing Service UNQUALIFIED79Elwin Sharvill
1030Jeanfrancois VenereRussia2026-05-29Chemel, James L Cpa QUALIFIED4Onyama Limba
1031Chavez BriddickFrance2026-05-31Dorl, James J Esq UNQUALIFIED36Ivan Magalhaes
1032Clifford RimArgentina2026-05-08Chapman, Ross E Esq UNQUALIFIED23Anna Fali
1033David DarakjyJapan2026-05-27Rangoni Of Florence NEGOTIATION55Ivan Magalhaes
1034Octavia MaletItaly2026-05-07Buckley Miller Wright PROPOSAL5Xuxue Feng
1035David DarakjyJapan2026-05-29King, Christopher A Esq QUALIFIED23Onyama Limba
1036Stacey MacleadIndia2026-06-02Benton, John B Jr PROPOSAL38Onyama Limba
1037Jennifer AmigonSpain2026-05-08Chemel, James L Cpa NEGOTIATION25Ioni Bowcher
1038Izzy GarufiUnited Kingdom2026-05-11Chemel, James L Cpa NEGOTIATION23Ioni Bowcher
1039Morrow RutaGermany2026-05-21Printing Dimensions RENEWAL7Bernardo Dominic
1040Jennifer AmigonAustralia2026-05-20Buckley Miller Wright NEGOTIATION15Asiya Javayant
1041Johnson SergiBrazil2026-06-01Printing Dimensions RENEWAL57Ioni Bowcher
1042Stacey MacleadFrance2026-05-15Feiner Bros PROPOSAL53Ivan Magalhaes
1043Darci PoquetteItaly2026-05-04Feiner Bros PROPOSAL57Ivan Magalhaes
1044Aruna FigeroaItaly2026-05-25Dorl, James J Esq UNQUALIFIED92Ioni Bowcher
1045Smith GlickJapan2026-05-15Commercial Press UNQUALIFIED0Elwin Sharvill
1046Arvin AlbaresGermany2026-05-16Printing Dimensions PROPOSAL4Anna Fali
1047Stacey MacleadArgentina2026-05-09Benton, John B Jr UNQUALIFIED53Stephen Shaw
1048Adams MorascaArgentina2026-05-05Truhlar And Truhlar Attys QUALIFIED15Ioni Bowcher
1049Kaitlin OstroskySpain2026-05-29Commercial Press PROPOSAL19Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Octavia MaletJapanIvan Magalhaes PROPOSAL
Smith GlickIndiaBernardo Dominic NEGOTIATION
Morrow RutaFranceStephen Shaw NEW
Silvio SlusarskiUnited KingdomIvan Magalhaes NEGOTIATION
Kaitlin OstroskyRussiaAnna Fali NEW
Francesco ShinkoCanadaBernardo Dominic UNQUALIFIED
Cody SaylorsItalyAnna Fali NEW
Morrow RutaIndiaAnna Fali UNQUALIFIED
Rodrigues CampainUnited KingdomStephen Shaw NEGOTIATION
Francesco ShinkoBrazilOnyama Limba RENEWAL
Maria MarrierSpainElwin Sharvill QUALIFIED
Jones VocelkaFranceBernardo Dominic UNQUALIFIED
Isabel BowleyGermanyIoni Bowcher NEGOTIATION
Ricardo GauchoIndiaOnyama Limba RENEWAL
Misaki RoysterBrazilIvan Magalhaes UNQUALIFIED
Maria MarrierAustraliaElwin Sharvill UNQUALIFIED
Cody SaylorsGermanyIoni Bowcher UNQUALIFIED
Misaki RoysterFranceIoni Bowcher RENEWAL
Jefferson SchemmerCanadaAnna Fali UNQUALIFIED
Silvio SlusarskiCanadaOnyama Limba NEGOTIATION
Tony FollerAustraliaIvan Magalhaes RENEWAL
Morrow RutaJapanAsiya Javayant UNQUALIFIED
Izzy GarufiJapanIoni Bowcher QUALIFIED
Octavia MaletItalyAmy Elsner RENEWAL
Smith GlickItalyIoni Bowcher RENEWAL
Sinclair WaycottJapanAmy Elsner RENEWAL
Aruna FigeroaCanadaStephen Shaw QUALIFIED
Costa DilliardRussiaIoni Bowcher UNQUALIFIED
Clifford RimIndiaAmy Elsner NEW
Cody SaylorsItalyAnna Fali PROPOSAL
Tony FollerAustraliaXuxue Feng NEW
Aika InouyeSpainBernardo Dominic NEW
Stacey MacleadBrazilAsiya Javayant PROPOSAL
Wickens NestleFranceIvan Magalhaes PROPOSAL
Faith GillianItalyAmy Elsner QUALIFIED
Cody SaylorsItalyBernardo Dominic NEGOTIATION
Jefferson SchemmerSpainAmy Elsner QUALIFIED
Emily WhobreyCanadaIoni Bowcher PROPOSAL
Aika InouyeJapanAmy Elsner NEW
Jennifer AmigonFranceOnyama Limba RENEWAL
Ashley DoeBrazilAsiya Javayant UNQUALIFIED
Isabel BowleyGermanyOnyama Limba UNQUALIFIED
Morrow RutaGermanyOnyama Limba RENEWAL
Maisha RulapaughAustraliaOnyama Limba RENEWAL
Leja CaldareraJapanElwin Sharvill UNQUALIFIED
Ivar PaprockiGermanyAmy Elsner UNQUALIFIED
Morrow RutaGermanyIoni Bowcher QUALIFIED
Morrow RutaJapanElwin Sharvill UNQUALIFIED
Kadeem FlosiJapanOnyama Limba UNQUALIFIED
Antonio CaudyArgentinaBernardo Dominic QUALIFIED
Frozen Columns
Name
Greenwood Bolognia
Izzy Garufi
Ashley Doe
Jennifer Amigon
Isabel Bowley
Morrow Ruta
Adams Morasca
David Darakjy
Isabel Bowley
Maria Marrier
Francesco Shinko
Ashley Doe
Aruna Figeroa
Izzy Garufi
Maisha Rulapaugh
Leon Oldroyd
Greenwood Bolognia
Leon Oldroyd
Antonio Caudy
Alejandro Perin
Julie Stenseth
Stacey Maclead
Mayumi Kolmetz
Chavez Briddick
Smith Glick
Salvatore Stockham
Jones Vocelka
Aika Inouye
Chavez Briddick
Isabel Bowley
Ricardo Gaucho
Jennifer Amigon
Francesco Shinko
Leon Oldroyd
Juan Wieser
Jennifer Amigon
Greenwood Bolognia
Kaitlin Ostrosky
Jefferson Schemmer
Clifford Rim
Emily Whobrey
Aditya Kusko
Stacey Maclead
Arvin Albares
Stacey Maclead
Emily Whobrey
Mayumi Kolmetz
Murillo Malet
Francesco Shinko
Darci Poquette
IdCountryDate
1000Italy2026-05-17
1001France2026-06-01
1002Argentina2026-05-31
1003Argentina2026-05-15
1004Australia2026-05-07
1005France2026-05-28
1006United Kingdom2026-05-15
1007Japan2026-05-07
1008Italy2026-05-26
1009Canada2026-05-27
1010Australia2026-05-05
1011Canada2026-05-07
1012Brazil2026-05-09
1013Germany2026-05-16
1014Canada2026-05-28
1015Canada2026-05-30
1016Germany2026-05-21
1017United Kingdom2026-05-23
1018Canada2026-05-24
1019Spain2026-05-29
1020United Kingdom2026-05-22
1021France2026-05-15
1022India2026-05-20
1023Italy2026-05-11
1024Japan2026-05-31
1025Canada2026-05-11
1026Canada2026-05-26
1027Germany2026-05-30
1028Japan2026-05-28
1029Germany2026-05-31
1030Japan2026-05-27
1031Canada2026-05-25
1032Argentina2026-06-01
1033Russia2026-05-07
1034Italy2026-06-01
1035Canada2026-05-11
1036Spain2026-05-10
1037France2026-06-01
1038Japan2026-05-08
1039Australia2026-05-18
1040Russia2026-05-23
1041Italy2026-05-17
1042France2026-05-08
1043France2026-05-16
1044Spain2026-05-15
1045Argentina2026-06-02
1046Argentina2026-05-15
1047France2026-05-24
1048France2026-05-16
1049Spain2026-05-05

On-Demand Data

NameIdCountryDate
Munro Ferencz1000Germany2026-05-23
Leja Caldarera1001Australia2026-05-12
Jefferson Schemmer1002Argentina2026-05-23
Juan Wieser1003Japan2026-05-29
Izzy Garufi1004Australia2026-05-11
Alejandro Perin1005Italy2026-05-12
Tony Foller1006Russia2026-06-02
Julie Stenseth1007United Kingdom2026-05-23
Misaki Royster1008Canada2026-05-30
Ashley Doe1009Australia2026-05-11
Munro Ferencz1010Australia2026-05-30
Mujtaba Nicka1011Germany2026-05-24
Silvio Slusarski1012United Kingdom2026-05-31
Wickens Nestle1013Argentina2026-05-23
Deepesh Chui1014France2026-05-17
Octavia Malet1015Australia2026-05-16
Maisha Rulapaugh1016India2026-05-17
Smith Glick1017Russia2026-05-23
Izzy Garufi1018United Kingdom2026-05-11
Ricardo Gaucho1019France2026-05-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Deepesh ChuiSpainIoni Bowcher PROPOSAL
Salvatore StockhamAustraliaIvan Magalhaes UNQUALIFIED
Sinclair WaycottItalyStephen Shaw RENEWAL
Octavia MaletSpainIvan Magalhaes NEGOTIATION
Kaitlin OstroskySpainBernardo Dominic NEW
Jones VocelkaCanadaAsiya Javayant NEGOTIATION
Misaki RoysterSpainElwin Sharvill NEGOTIATION
Morrow RutaAustraliaOnyama Limba QUALIFIED
Arvin AlbaresItalyIvan Magalhaes NEW
Mayumi KolmetzSpainStephen Shaw QUALIFIED
Darci PoquetteUnited KingdomBernardo Dominic RENEWAL
Munro FerenczSpainAsiya Javayant RENEWAL
Jeanfrancois VenereBrazilXuxue Feng UNQUALIFIED
Murillo MaletSpainAsiya Javayant NEW
Aika InouyeAustraliaBernardo Dominic PROPOSAL
Nicolas IturbideItalyBernardo Dominic NEGOTIATION
Deepesh ChuiJapanIoni Bowcher NEW
Leja CaldareraItalyAmy Elsner UNQUALIFIED
Izzy GarufiArgentinaIvan Magalhaes UNQUALIFIED
Deepesh ChuiSpainAsiya Javayant PROPOSAL
Morrow RutaCanadaIoni Bowcher NEGOTIATION
Ricardo GauchoArgentinaIoni Bowcher NEW
Claire TollnerGermanyAmy Elsner RENEWAL
Juan WieserItalyAnna Fali PROPOSAL
Antonio CaudyArgentinaOnyama Limba UNQUALIFIED
Leja CaldareraAustraliaXuxue Feng QUALIFIED
Maisha RulapaughUnited KingdomIvan Magalhaes QUALIFIED
Aika InouyeSpainStephen Shaw NEW
Murillo MaletUnited KingdomIoni Bowcher RENEWAL
Salvatore StockhamJapanIvan Magalhaes UNQUALIFIED
Murillo MaletRussiaXuxue Feng PROPOSAL
Rodrigues CampainArgentinaStephen Shaw NEGOTIATION
Emily WhobreyFranceXuxue Feng NEW
Mayumi KolmetzBrazilIvan Magalhaes RENEWAL
Faith GillianGermanyElwin Sharvill UNQUALIFIED
Silvio SlusarskiItalyAsiya Javayant PROPOSAL
Izzy GarufiAustraliaAnna Fali QUALIFIED
Clifford RimSpainOnyama Limba PROPOSAL
Faith GillianGermanyElwin Sharvill QUALIFIED
Alejandro PerinGermanyXuxue Feng NEGOTIATION

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