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
Aditya KuskoJapanBernardo Dominic PROPOSAL
Rodrigues CampainFranceIoni Bowcher PROPOSAL
Juan WieserRussiaBernardo Dominic RENEWAL
Nicolas IturbideBrazilOnyama Limba UNQUALIFIED
Aruna FigeroaArgentinaAmy Elsner QUALIFIED
Jones VocelkaSpainOnyama Limba NEGOTIATION
Ashley DoeFranceStephen Shaw NEW
Deepesh ChuiFranceAsiya Javayant NEW
Aditya KuskoAustraliaAnna Fali UNQUALIFIED
Juan WieserFranceOnyama Limba UNQUALIFIED
Aruna FigeroaCanadaBernardo Dominic NEW
Jeanfrancois VenereBrazilIoni Bowcher NEGOTIATION
Silvio SlusarskiCanadaBernardo Dominic PROPOSAL
Octavia MaletArgentinaBernardo Dominic NEGOTIATION
Johnson SergiAustraliaIvan Magalhaes UNQUALIFIED
Maria MarrierSpainAnna Fali UNQUALIFIED
Faith GillianFranceXuxue Feng PROPOSAL
Wickens NestleAustraliaAmy Elsner RENEWAL
James ButtGermanyXuxue Feng UNQUALIFIED
Aika InouyeItalyBernardo Dominic NEW
Claire TollnerSpainAmy Elsner NEGOTIATION
Silvio SlusarskiRussiaIoni Bowcher UNQUALIFIED
Adams MorascaCanadaIvan Magalhaes NEW
Murillo MaletItalyStephen Shaw PROPOSAL
Juan WieserAustraliaIvan Magalhaes UNQUALIFIED
Aruna FigeroaArgentinaOnyama Limba QUALIFIED
Darci PoquetteItalyXuxue Feng NEGOTIATION
Murillo MaletUnited KingdomIvan Magalhaes NEGOTIATION
Deepesh ChuiArgentinaXuxue Feng PROPOSAL
Deepesh ChuiRussiaAnna Fali UNQUALIFIED
Darci PoquetteRussiaAmy Elsner QUALIFIED
Claire TollnerUnited KingdomStephen Shaw QUALIFIED
Ricardo GauchoFranceAsiya Javayant QUALIFIED
Mujtaba NickaSpainXuxue Feng QUALIFIED
Kaitlin OstroskyUnited KingdomIvan Magalhaes PROPOSAL
Jennifer AmigonUnited KingdomXuxue Feng UNQUALIFIED
Maisha RulapaughFranceIoni Bowcher UNQUALIFIED
Silvio SlusarskiSpainIvan Magalhaes NEGOTIATION
Aika InouyeCanadaAsiya Javayant NEGOTIATION
Mujtaba NickaGermanyAmy Elsner UNQUALIFIED
Maisha RulapaughItalyAnna Fali UNQUALIFIED
Leon OldroydItalyAsiya Javayant UNQUALIFIED
Maisha RulapaughUnited KingdomOnyama Limba RENEWAL
Sinclair WaycottUnited KingdomAnna Fali NEGOTIATION
Ricardo GauchoSpainBernardo Dominic UNQUALIFIED
Johnson SergiJapanXuxue Feng UNQUALIFIED
Arvin AlbaresJapanStephen Shaw NEGOTIATION
Mujtaba NickaBrazilBernardo Dominic NEW
Clifford RimJapanBernardo Dominic PROPOSAL
Jefferson SchemmerFranceAmy Elsner RENEWAL
Horizontal
NameCountryRepresentativeStatus
Juan WieserFranceElwin Sharvill NEGOTIATION
Salvatore StockhamIndiaStephen Shaw NEGOTIATION
Antonio CaudyFranceBernardo Dominic QUALIFIED
Emily WhobreyJapanIoni Bowcher QUALIFIED
Jennifer AmigonArgentinaBernardo Dominic NEW
Jennifer AmigonGermanyIvan Magalhaes PROPOSAL
Nicolas IturbideRussiaIvan Magalhaes QUALIFIED
Salvatore StockhamRussiaOnyama Limba RENEWAL
Faith GillianFranceIvan Magalhaes QUALIFIED
Julie StensethItalyBernardo Dominic NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ivar PaprockiAustralia2026-04-10Feltz Printing Service RENEWAL14Onyama Limba
1001Arvin AlbaresFrance2026-04-22Truhlar And Truhlar Attys QUALIFIED48Ivan Magalhaes
1002Kaitlin OstroskyGermany2026-04-24Feltz Printing Service QUALIFIED30Amy Elsner
1003Smith GlickIndia2026-03-30Chemel, James L Cpa QUALIFIED16Bernardo Dominic
1004Maria MarrierSpain2026-04-07Truhlar And Truhlar Attys RENEWAL89Stephen Shaw
1005Izzy GarufiItaly2026-04-18Dorl, James J Esq NEW56Ioni Bowcher
1006Jefferson SchemmerJapan2026-04-14Chanay, Jeffrey A Esq PROPOSAL7Asiya Javayant
1007Morrow RutaCanada2026-04-18Dorl, James J Esq NEGOTIATION54Bernardo Dominic
1008Salvatore StockhamJapan2026-04-09Dorl, James J Esq NEW20Stephen Shaw
1009Antonio CaudyJapan2026-04-14Rousseaux, Michael Esq QUALIFIED54Xuxue Feng
1010Julie StensethGermany2026-04-26Benton, John B Jr NEW73Asiya Javayant
1011Emily WhobreyRussia2026-04-24Commercial Press PROPOSAL90Asiya Javayant
1012Chavez BriddickIndia2026-04-03King, Christopher A Esq PROPOSAL1Bernardo Dominic
1013Antonio CaudySpain2026-03-29Feiner Bros NEW97Ioni Bowcher
1014Munro FerenczJapan2026-04-01Benton, John B Jr NEW72Anna Fali
1015Arvin AlbaresBrazil2026-04-21Feiner Bros NEGOTIATION67Stephen Shaw
1016Salvatore StockhamItaly2026-04-21Commercial Press QUALIFIED54Xuxue Feng
1017Morrow RutaAustralia2026-04-04Printing Dimensions RENEWAL62Onyama Limba
1018Kadeem FlosiSpain2026-03-28Chemel, James L Cpa PROPOSAL34Onyama Limba
1019Arvin AlbaresSpain2026-04-23Chanay, Jeffrey A Esq NEGOTIATION76Anna Fali
1020Stacey MacleadBrazil2026-04-12Benton, John B Jr QUALIFIED32Asiya Javayant
1021James ButtUnited Kingdom2026-04-21Printing Dimensions NEGOTIATION86Xuxue Feng
1022Jeanfrancois VenereFrance2026-04-24King, Christopher A Esq UNQUALIFIED79Bernardo Dominic
1023Arvin AlbaresJapan2026-04-03Truhlar And Truhlar Attys NEGOTIATION33Anna Fali
1024Kaitlin OstroskyBrazil2026-04-14Morlong Associates UNQUALIFIED29Amy Elsner
1025Isabel BowleyAustralia2026-04-16Commercial Press PROPOSAL74Ioni Bowcher
1026Octavia MaletArgentina2026-04-21Chemel, James L Cpa RENEWAL55Anna Fali
1027David DarakjyRussia2026-04-25Truhlar And Truhlar Attys NEW49Stephen Shaw
1028Aruna FigeroaGermany2026-04-06Morlong Associates RENEWAL1Xuxue Feng
1029Misaki RoysterRussia2026-04-20Benton, John B Jr UNQUALIFIED49Xuxue Feng
1030Mayumi KolmetzGermany2026-04-26Benton, John B Jr NEGOTIATION26Ioni Bowcher
1031Costa DilliardGermany2026-04-02Feltz Printing Service NEGOTIATION54Elwin Sharvill
1032Izzy GarufiRussia2026-04-07Chanay, Jeffrey A Esq PROPOSAL44Ioni Bowcher
1033Jefferson SchemmerAustralia2026-03-28Chemel, James L Cpa NEW33Ivan Magalhaes
1034Octavia MaletUnited Kingdom2026-04-05Commercial Press NEGOTIATION72Ivan Magalhaes
1035Aditya KuskoIndia2026-04-14Feiner Bros RENEWAL84Elwin Sharvill
1036Sinclair WaycottRussia2026-03-29Rousseaux, Michael Esq NEW34Ioni Bowcher
1037Jeanfrancois VenereFrance2026-04-20Chanay, Jeffrey A Esq QUALIFIED13Elwin Sharvill
1038Alejandro PerinUnited Kingdom2026-04-01Chanay, Jeffrey A Esq PROPOSAL54Onyama Limba
1039Ricardo GauchoSpain2026-04-02Chemel, James L Cpa PROPOSAL70Bernardo Dominic
1040Nicolas IturbideGermany2026-04-19Buckley Miller Wright NEW79Ivan Magalhaes
1041Ashley DoeCanada2026-03-30Rangoni Of Florence NEW66Xuxue Feng
1042James ButtUnited Kingdom2026-04-22Truhlar And Truhlar Attys RENEWAL11Stephen Shaw
1043Aika InouyeRussia2026-04-21Chanay, Jeffrey A Esq PROPOSAL74Onyama Limba
1044Aditya KuskoItaly2026-04-24Truhlar And Truhlar Attys PROPOSAL83Onyama Limba
1045Aditya KuskoUnited Kingdom2026-03-29Chemel, James L Cpa UNQUALIFIED33Xuxue Feng
1046Tony FollerJapan2026-04-22Morlong Associates UNQUALIFIED51Asiya Javayant
1047Aika InouyeSpain2026-03-28Morlong Associates QUALIFIED11Onyama Limba
1048Leja CaldareraCanada2026-04-04Dorl, James J Esq NEGOTIATION8Xuxue Feng
1049Jennifer AmigonGermany2026-04-04Feltz Printing Service PROPOSAL85Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Jones VocelkaAustraliaBernardo Dominic QUALIFIED
Darci PoquetteUnited KingdomElwin Sharvill QUALIFIED
Jennifer AmigonSpainXuxue Feng NEGOTIATION
Wickens NestleAustraliaAnna Fali NEGOTIATION
Nicolas IturbideCanadaElwin Sharvill UNQUALIFIED
Emily WhobreyGermanyBernardo Dominic QUALIFIED
Sinclair WaycottArgentinaAsiya Javayant RENEWAL
Ivar PaprockiFranceAnna Fali NEGOTIATION
Misaki RoysterSpainElwin Sharvill NEW
Morrow RutaJapanAnna Fali NEW
Deepesh ChuiBrazilAnna Fali QUALIFIED
Munro FerenczRussiaStephen Shaw PROPOSAL
Maisha RulapaughFranceAsiya Javayant NEGOTIATION
James ButtItalyAsiya Javayant UNQUALIFIED
Jeanfrancois VenereJapanAsiya Javayant PROPOSAL
Francesco ShinkoGermanyIoni Bowcher PROPOSAL
Munro FerenczGermanyBernardo Dominic NEGOTIATION
Ricardo GauchoArgentinaBernardo Dominic QUALIFIED
Cody SaylorsItalyIoni Bowcher QUALIFIED
Darci PoquetteGermanyXuxue Feng QUALIFIED
Faith GillianUnited KingdomAsiya Javayant NEW
Maisha RulapaughUnited KingdomIoni Bowcher QUALIFIED
Adams MorascaJapanBernardo Dominic QUALIFIED
Nicolas IturbideRussiaBernardo Dominic NEGOTIATION
Greenwood BologniaCanadaBernardo Dominic PROPOSAL
Maisha RulapaughUnited KingdomOnyama Limba RENEWAL
Silvio SlusarskiGermanyIoni Bowcher NEW
Octavia MaletCanadaIoni Bowcher PROPOSAL
Darci PoquetteIndiaAmy Elsner NEW
Julie StensethIndiaIvan Magalhaes RENEWAL
Misaki RoysterFranceAmy Elsner RENEWAL
Nicolas IturbideJapanAmy Elsner PROPOSAL
Julie StensethFranceXuxue Feng NEW
Maisha RulapaughFranceBernardo Dominic QUALIFIED
Kaitlin OstroskyItalyOnyama Limba QUALIFIED
Jefferson SchemmerItalyIoni Bowcher QUALIFIED
Silvio SlusarskiRussiaOnyama Limba QUALIFIED
Murillo MaletBrazilXuxue Feng UNQUALIFIED
Kadeem FlosiUnited KingdomIoni Bowcher UNQUALIFIED
Ricardo GauchoRussiaOnyama Limba NEW
Maria MarrierRussiaIvan Magalhaes QUALIFIED
Rodrigues CampainIndiaIvan Magalhaes UNQUALIFIED
Julie StensethBrazilAsiya Javayant NEGOTIATION
Kaitlin OstroskyJapanXuxue Feng RENEWAL
Chavez BriddickArgentinaOnyama Limba NEW
Johnson SergiIndiaOnyama Limba NEW
Tony FollerGermanyBernardo Dominic PROPOSAL
Kaitlin OstroskyIndiaBernardo Dominic PROPOSAL
Jennifer AmigonIndiaXuxue Feng UNQUALIFIED
Faith GillianCanadaAnna Fali NEGOTIATION
Frozen Columns
Name
James Butt
Murillo Malet
Morrow Ruta
Mujtaba Nicka
Sinclair Waycott
Sinclair Waycott
Morrow Ruta
James Butt
Mayumi Kolmetz
Mujtaba Nicka
Aditya Kusko
Julie Stenseth
Costa Dilliard
Morrow Ruta
Ashley Doe
Izzy Garufi
Munro Ferencz
Francesco Shinko
Alejandro Perin
Sinclair Waycott
Clifford Rim
Kaitlin Ostrosky
Mujtaba Nicka
Octavia Malet
Arvin Albares
Sinclair Waycott
Leon Oldroyd
Juan Wieser
Greenwood Bolognia
Izzy Garufi
Johnson Sergi
Salvatore Stockham
Stacey Maclead
Jones Vocelka
Jeanfrancois Venere
Ashley Doe
Mujtaba Nicka
Misaki Royster
Morrow Ruta
Alejandro Perin
Faith Gillian
Emily Whobrey
Jennifer Amigon
Aruna Figeroa
Ricardo Gaucho
Aika Inouye
Stacey Maclead
Arvin Albares
Maisha Rulapaugh
Jefferson Schemmer
IdCountryDate
1000Russia2026-03-31
1001Japan2026-04-08
1002Italy2026-04-16
1003Australia2026-04-11
1004France2026-04-07
1005Germany2026-04-14
1006Australia2026-04-04
1007Germany2026-04-12
1008Japan2026-04-15
1009Brazil2026-04-20
1010Italy2026-04-02
1011Germany2026-04-05
1012Argentina2026-04-03
1013Spain2026-04-17
1014Italy2026-04-01
1015Argentina2026-04-20
1016Japan2026-04-19
1017Italy2026-03-31
1018Italy2026-04-02
1019Japan2026-04-16
1020Canada2026-04-15
1021Argentina2026-04-26
1022Australia2026-04-06
1023Spain2026-03-29
1024United Kingdom2026-04-22
1025France2026-04-06
1026Germany2026-04-18
1027Russia2026-04-17
1028India2026-04-17
1029Spain2026-04-08
1030Russia2026-04-10
1031Spain2026-04-07
1032United Kingdom2026-04-17
1033France2026-03-31
1034Russia2026-04-23
1035Brazil2026-04-17
1036France2026-04-01
1037Canada2026-04-17
1038Spain2026-04-03
1039France2026-04-02
1040Germany2026-04-14
1041Germany2026-04-12
1042Italy2026-04-13
1043Australia2026-04-11
1044Spain2026-04-25
1045Italy2026-04-06
1046France2026-04-08
1047United Kingdom2026-04-23
1048Italy2026-03-28
1049Brazil2026-04-17

On-Demand Data

NameIdCountryDate
Arvin Albares1000Canada2026-04-14
Arvin Albares1001France2026-04-23
Aditya Kusko1002Italy2026-04-25
Costa Dilliard1003Brazil2026-04-12
Misaki Royster1004Argentina2026-04-16
Murillo Malet1005France2026-04-01
Faith Gillian1006Spain2026-04-08
Juan Wieser1007India2026-04-04
Leja Caldarera1008Australia2026-04-02
Juan Wieser1009France2026-04-03
Isabel Bowley1010Canada2026-04-23
Nicolas Iturbide1011India2026-03-31
Jefferson Schemmer1012Italy2026-03-28
Aruna Figeroa1013Japan2026-04-18
Smith Glick1014France2026-03-28
Jennifer Amigon1015Japan2026-04-14
Jefferson Schemmer1016Germany2026-03-29
Aika Inouye1017Brazil2026-04-17
Antonio Caudy1018Canada2026-04-21
Aika Inouye1019Germany2026-04-01
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aruna FigeroaArgentinaAnna Fali PROPOSAL
Mujtaba NickaRussiaElwin Sharvill NEW
Morrow RutaCanadaElwin Sharvill UNQUALIFIED
Cody SaylorsArgentinaXuxue Feng NEW
Morrow RutaRussiaAnna Fali QUALIFIED
Faith GillianJapanOnyama Limba PROPOSAL
Sinclair WaycottGermanyIvan Magalhaes QUALIFIED
Mayumi KolmetzRussiaElwin Sharvill NEW
Costa DilliardAustraliaStephen Shaw PROPOSAL
Jennifer AmigonArgentinaAsiya Javayant PROPOSAL
Smith GlickArgentinaXuxue Feng RENEWAL
Francesco ShinkoArgentinaXuxue Feng NEGOTIATION
Maria MarrierFranceStephen Shaw UNQUALIFIED
Deepesh ChuiRussiaAnna Fali UNQUALIFIED
Mayumi KolmetzGermanyXuxue Feng UNQUALIFIED
Chavez BriddickJapanAnna Fali PROPOSAL
Maisha RulapaughIndiaStephen Shaw PROPOSAL
Sinclair WaycottGermanyAmy Elsner PROPOSAL
Maisha RulapaughGermanyAnna Fali UNQUALIFIED
Murillo MaletUnited KingdomStephen Shaw UNQUALIFIED
Chavez BriddickAustraliaAsiya Javayant RENEWAL
Morrow RutaIndiaAsiya Javayant NEW
Johnson SergiAustraliaAmy Elsner PROPOSAL
Mayumi KolmetzRussiaAsiya Javayant RENEWAL
Chavez BriddickFranceIoni Bowcher QUALIFIED
Smith GlickAustraliaStephen Shaw RENEWAL
Darci PoquetteGermanyAsiya Javayant UNQUALIFIED
Ashley DoeJapanBernardo Dominic NEW
Silvio SlusarskiItalyXuxue Feng NEW
Salvatore StockhamGermanyBernardo Dominic NEGOTIATION
Faith GillianUnited KingdomAnna Fali QUALIFIED
Misaki RoysterSpainAmy Elsner QUALIFIED
Cody SaylorsGermanyElwin Sharvill PROPOSAL
Claire TollnerSpainIvan Magalhaes UNQUALIFIED
Arvin AlbaresArgentinaAsiya Javayant PROPOSAL
Juan WieserIndiaElwin Sharvill QUALIFIED
Salvatore StockhamRussiaIoni Bowcher NEGOTIATION
Darci PoquetteJapanIvan Magalhaes RENEWAL
Silvio SlusarskiRussiaXuxue Feng NEGOTIATION
Munro FerenczIndiaIvan Magalhaes QUALIFIED

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