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
David DarakjyJapanOnyama Limba UNQUALIFIED
Salvatore StockhamFranceXuxue Feng PROPOSAL
Jefferson SchemmerBrazilAmy Elsner NEW
Jefferson SchemmerIndiaAsiya Javayant UNQUALIFIED
Salvatore StockhamGermanyAnna Fali RENEWAL
Aika InouyeArgentinaAsiya Javayant QUALIFIED
Ashley DoeSpainStephen Shaw UNQUALIFIED
Salvatore StockhamSpainAnna Fali QUALIFIED
Adams MorascaSpainOnyama Limba PROPOSAL
Murillo MaletFranceAnna Fali QUALIFIED
Murillo MaletRussiaXuxue Feng RENEWAL
Izzy GarufiRussiaBernardo Dominic UNQUALIFIED
Kaitlin OstroskyArgentinaElwin Sharvill QUALIFIED
Jones VocelkaItalyIvan Magalhaes UNQUALIFIED
Maisha RulapaughBrazilIoni Bowcher NEGOTIATION
Arvin AlbaresJapanAmy Elsner PROPOSAL
Mayumi KolmetzIndiaAnna Fali NEGOTIATION
Sinclair WaycottFranceStephen Shaw NEW
Aika InouyeRussiaAmy Elsner QUALIFIED
Wickens NestleUnited KingdomBernardo Dominic QUALIFIED
Kaitlin OstroskyAustraliaAmy Elsner QUALIFIED
Nicolas IturbideSpainOnyama Limba NEW
Chavez BriddickJapanAnna Fali RENEWAL
Rodrigues CampainAustraliaIoni Bowcher NEGOTIATION
Juan WieserCanadaAmy Elsner UNQUALIFIED
Salvatore StockhamIndiaXuxue Feng NEGOTIATION
Stacey MacleadCanadaAmy Elsner NEW
Leja CaldareraAustraliaIoni Bowcher NEGOTIATION
Emily WhobreyIndiaElwin Sharvill UNQUALIFIED
Arvin AlbaresUnited KingdomXuxue Feng QUALIFIED
Stacey MacleadAustraliaStephen Shaw NEW
Sinclair WaycottRussiaAmy Elsner NEGOTIATION
Silvio SlusarskiRussiaIvan Magalhaes PROPOSAL
Antonio CaudySpainXuxue Feng NEW
Sinclair WaycottAustraliaXuxue Feng UNQUALIFIED
Tony FollerRussiaElwin Sharvill NEGOTIATION
Nicolas IturbideGermanyAnna Fali RENEWAL
Kadeem FlosiJapanElwin Sharvill NEGOTIATION
Emily WhobreyBrazilAmy Elsner PROPOSAL
Clifford RimUnited KingdomStephen Shaw RENEWAL
Ashley DoeCanadaStephen Shaw QUALIFIED
Ricardo GauchoSpainIvan Magalhaes QUALIFIED
Maisha RulapaughGermanyXuxue Feng QUALIFIED
Claire TollnerGermanyStephen Shaw NEW
Juan WieserBrazilBernardo Dominic PROPOSAL
Aditya KuskoIndiaOnyama Limba NEW
Chavez BriddickAustraliaXuxue Feng UNQUALIFIED
Misaki RoysterJapanXuxue Feng QUALIFIED
Faith GillianAustraliaBernardo Dominic NEW
Maisha RulapaughItalyXuxue Feng QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Clifford RimRussiaAsiya Javayant NEW
Nicolas IturbideAustraliaOnyama Limba NEW
Kadeem FlosiJapanXuxue Feng UNQUALIFIED
Kaitlin OstroskyIndiaAsiya Javayant NEW
Maisha RulapaughBrazilStephen Shaw NEW
Morrow RutaRussiaIvan Magalhaes PROPOSAL
Stacey MacleadGermanyOnyama Limba NEGOTIATION
Arvin AlbaresRussiaIoni Bowcher NEW
Silvio SlusarskiJapanAsiya Javayant QUALIFIED
Clifford RimGermanyAsiya Javayant RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000James ButtSpain2026-06-04Dorl, James J Esq RENEWAL77Anna Fali
1001Morrow RutaAustralia2026-05-14Truhlar And Truhlar Attys NEGOTIATION10Onyama Limba
1002Munro FerenczAustralia2026-06-08Rousseaux, Michael Esq RENEWAL75Onyama Limba
1003Darci PoquetteJapan2026-05-30Rousseaux, Michael Esq NEGOTIATION83Stephen Shaw
1004Mayumi KolmetzJapan2026-05-25Commercial Press RENEWAL12Onyama Limba
1005Claire TollnerSpain2026-06-11Chanay, Jeffrey A Esq QUALIFIED37Ivan Magalhaes
1006Deepesh ChuiBrazil2026-05-22Benton, John B Jr PROPOSAL67Amy Elsner
1007Sinclair WaycottGermany2026-05-30Chemel, James L Cpa PROPOSAL68Onyama Limba
1008Rodrigues CampainBrazil2026-05-24Buckley Miller Wright NEGOTIATION39Bernardo Dominic
1009Ashley DoeFrance2026-05-14Feltz Printing Service RENEWAL16Ivan Magalhaes
1010Ashley DoeBrazil2026-05-13Chemel, James L Cpa NEW81Ioni Bowcher
1011Nicolas IturbideIndia2026-05-24Dorl, James J Esq NEGOTIATION9Bernardo Dominic
1012Chavez BriddickArgentina2026-05-25Morlong Associates NEGOTIATION74Amy Elsner
1013David DarakjyIndia2026-05-23Dorl, James J Esq QUALIFIED40Bernardo Dominic
1014Mayumi KolmetzJapan2026-05-22Benton, John B Jr NEW88Amy Elsner
1015Nicolas IturbideGermany2026-06-11Chapman, Ross E Esq NEGOTIATION25Elwin Sharvill
1016Kadeem FlosiSpain2026-05-27Buckley Miller Wright QUALIFIED89Amy Elsner
1017Antonio CaudyAustralia2026-05-24Dorl, James J Esq NEW75Xuxue Feng
1018Clifford RimArgentina2026-06-03Buckley Miller Wright QUALIFIED4Ioni Bowcher
1019Emily WhobreyArgentina2026-06-07Truhlar And Truhlar Attys RENEWAL76Onyama Limba
1020Juan WieserGermany2026-05-20Rangoni Of Florence QUALIFIED82Elwin Sharvill
1021Morrow RutaSpain2026-05-21King, Christopher A Esq QUALIFIED31Stephen Shaw
1022Leon OldroydUnited Kingdom2026-05-16Buckley Miller Wright QUALIFIED61Elwin Sharvill
1023Smith GlickCanada2026-06-07Chemel, James L Cpa QUALIFIED83Onyama Limba
1024Alejandro PerinBrazil2026-05-14Truhlar And Truhlar Attys RENEWAL21Ioni Bowcher
1025Leon OldroydRussia2026-05-14Feltz Printing Service NEGOTIATION58Asiya Javayant
1026Jeanfrancois VenereBrazil2026-05-15Printing Dimensions PROPOSAL4Elwin Sharvill
1027Antonio CaudyIndia2026-05-29Chanay, Jeffrey A Esq NEGOTIATION98Stephen Shaw
1028Deepesh ChuiFrance2026-05-22Rangoni Of Florence RENEWAL50Bernardo Dominic
1029Ricardo GauchoAustralia2026-05-24Dorl, James J Esq QUALIFIED94Asiya Javayant
1030Isabel BowleyUnited Kingdom2026-05-26Chemel, James L Cpa RENEWAL32Elwin Sharvill
1031Ashley DoeArgentina2026-06-08Commercial Press UNQUALIFIED36Stephen Shaw
1032James ButtFrance2026-05-28Feltz Printing Service QUALIFIED41Amy Elsner
1033Aika InouyeFrance2026-06-05Feiner Bros NEGOTIATION4Elwin Sharvill
1034Emily WhobreyArgentina2026-05-26Rousseaux, Michael Esq RENEWAL48Stephen Shaw
1035Stacey MacleadFrance2026-05-16Rangoni Of Florence NEGOTIATION29Asiya Javayant
1036Ricardo GauchoUnited Kingdom2026-05-26Dorl, James J Esq PROPOSAL93Asiya Javayant
1037Nicolas IturbideIndia2026-05-13Chapman, Ross E Esq PROPOSAL34Asiya Javayant
1038Sinclair WaycottUnited Kingdom2026-06-10Rangoni Of Florence RENEWAL63Stephen Shaw
1039Munro FerenczIndia2026-05-23King, Christopher A Esq UNQUALIFIED29Xuxue Feng
1040Darci PoquetteGermany2026-05-21Chemel, James L Cpa RENEWAL53Elwin Sharvill
1041Octavia MaletUnited Kingdom2026-05-19Chemel, James L Cpa NEGOTIATION35Anna Fali
1042Ashley DoeRussia2026-05-29Rangoni Of Florence UNQUALIFIED22Xuxue Feng
1043Salvatore StockhamUnited Kingdom2026-05-19Feltz Printing Service QUALIFIED61Ivan Magalhaes
1044Munro FerenczArgentina2026-06-02Buckley Miller Wright QUALIFIED8Amy Elsner
1045Kaitlin OstroskyItaly2026-05-16Truhlar And Truhlar Attys RENEWAL79Anna Fali
1046Aditya KuskoUnited Kingdom2026-05-25Chemel, James L Cpa NEGOTIATION27Amy Elsner
1047Jefferson SchemmerBrazil2026-06-07Commercial Press QUALIFIED98Ivan Magalhaes
1048Darci PoquetteBrazil2026-05-28Chapman, Ross E Esq PROPOSAL18Xuxue Feng
1049Kadeem FlosiJapan2026-06-01Benton, John B Jr PROPOSAL53Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Munro FerenczFranceElwin Sharvill RENEWAL
Murillo MaletUnited KingdomBernardo Dominic QUALIFIED
Sinclair WaycottFranceAmy Elsner NEW
Aruna FigeroaBrazilElwin Sharvill NEW
Deepesh ChuiJapanOnyama Limba PROPOSAL
Jefferson SchemmerAustraliaAsiya Javayant NEGOTIATION
Rodrigues CampainRussiaIoni Bowcher RENEWAL
David DarakjyRussiaStephen Shaw NEW
Johnson SergiJapanIvan Magalhaes RENEWAL
Murillo MaletBrazilXuxue Feng NEW
Claire TollnerRussiaAmy Elsner QUALIFIED
David DarakjyJapanStephen Shaw UNQUALIFIED
Aruna FigeroaIndiaOnyama Limba UNQUALIFIED
Aika InouyeCanadaIvan Magalhaes PROPOSAL
Sinclair WaycottSpainBernardo Dominic RENEWAL
Aika InouyeItalyAnna Fali UNQUALIFIED
Misaki RoysterRussiaElwin Sharvill QUALIFIED
Munro FerenczGermanyAnna Fali QUALIFIED
David DarakjyJapanXuxue Feng RENEWAL
Juan WieserArgentinaAsiya Javayant UNQUALIFIED
Jennifer AmigonArgentinaOnyama Limba RENEWAL
Ashley DoeBrazilIvan Magalhaes UNQUALIFIED
Cody SaylorsGermanyAnna Fali QUALIFIED
Isabel BowleyCanadaIoni Bowcher RENEWAL
Silvio SlusarskiFranceBernardo Dominic UNQUALIFIED
Johnson SergiIndiaIoni Bowcher NEW
Johnson SergiArgentinaAsiya Javayant PROPOSAL
Aditya KuskoFranceOnyama Limba QUALIFIED
Silvio SlusarskiIndiaAsiya Javayant UNQUALIFIED
Aditya KuskoSpainAmy Elsner NEGOTIATION
David DarakjyAustraliaXuxue Feng QUALIFIED
Tony FollerSpainOnyama Limba RENEWAL
Wickens NestleAustraliaAnna Fali RENEWAL
Maria MarrierRussiaStephen Shaw NEGOTIATION
James ButtIndiaAmy Elsner QUALIFIED
Emily WhobreyRussiaIoni Bowcher NEGOTIATION
Sinclair WaycottCanadaIvan Magalhaes QUALIFIED
Leon OldroydJapanAsiya Javayant PROPOSAL
Aika InouyeArgentinaAsiya Javayant QUALIFIED
David DarakjyUnited KingdomElwin Sharvill NEGOTIATION
Misaki RoysterUnited KingdomStephen Shaw NEGOTIATION
Aika InouyeFranceIvan Magalhaes PROPOSAL
Jefferson SchemmerFranceIoni Bowcher RENEWAL
Rodrigues CampainBrazilAnna Fali NEW
Sinclair WaycottBrazilAmy Elsner QUALIFIED
Emily WhobreyCanadaAmy Elsner UNQUALIFIED
Murillo MaletBrazilXuxue Feng UNQUALIFIED
Julie StensethBrazilStephen Shaw NEGOTIATION
Rodrigues CampainSpainIvan Magalhaes UNQUALIFIED
Jefferson SchemmerSpainAnna Fali PROPOSAL
Frozen Columns
Name
Wickens Nestle
Kadeem Flosi
Morrow Ruta
Stacey Maclead
Misaki Royster
Darci Poquette
Deepesh Chui
Arvin Albares
Maisha Rulapaugh
Ashley Doe
David Darakjy
Antonio Caudy
Wickens Nestle
Izzy Garufi
Darci Poquette
Kadeem Flosi
Kaitlin Ostrosky
Jefferson Schemmer
Jones Vocelka
Rodrigues Campain
Kaitlin Ostrosky
Julie Stenseth
Ashley Doe
Chavez Briddick
Jones Vocelka
Antonio Caudy
Kadeem Flosi
Ricardo Gaucho
Sinclair Waycott
Nicolas Iturbide
Mayumi Kolmetz
Adams Morasca
Salvatore Stockham
Isabel Bowley
Juan Wieser
Deepesh Chui
Smith Glick
Rodrigues Campain
Emily Whobrey
Rodrigues Campain
Mayumi Kolmetz
Aruna Figeroa
Cody Saylors
Claire Tollner
Cody Saylors
Aruna Figeroa
Ivar Paprocki
Francesco Shinko
Ashley Doe
Mayumi Kolmetz
IdCountryDate
1000Canada2026-05-27
1001Australia2026-05-18
1002Canada2026-06-11
1003Russia2026-05-22
1004Germany2026-05-28
1005Canada2026-05-22
1006Russia2026-05-19
1007Australia2026-05-17
1008Japan2026-06-07
1009Australia2026-05-25
1010Argentina2026-05-15
1011France2026-06-06
1012Brazil2026-06-11
1013United Kingdom2026-06-11
1014Italy2026-05-15
1015Russia2026-06-10
1016Canada2026-05-19
1017Japan2026-05-20
1018Spain2026-05-31
1019India2026-06-03
1020Japan2026-06-11
1021Russia2026-05-15
1022India2026-05-28
1023Canada2026-05-29
1024Spain2026-05-19
1025France2026-05-23
1026Brazil2026-06-10
1027United Kingdom2026-05-13
1028Japan2026-06-05
1029France2026-05-23
1030Germany2026-05-14
1031India2026-05-13
1032India2026-05-21
1033Germany2026-06-10
1034United Kingdom2026-05-22
1035Italy2026-05-28
1036Germany2026-05-21
1037Brazil2026-05-21
1038United Kingdom2026-05-26
1039India2026-06-07
1040Australia2026-06-02
1041Australia2026-05-27
1042Argentina2026-05-21
1043Germany2026-06-08
1044Japan2026-06-06
1045France2026-05-13
1046Canada2026-06-11
1047United Kingdom2026-06-05
1048Italy2026-06-11
1049France2026-05-17

On-Demand Data

NameIdCountryDate
Emily Whobrey1000Spain2026-06-11
Misaki Royster1001Argentina2026-06-09
Deepesh Chui1002Canada2026-06-03
Darci Poquette1003Germany2026-06-05
Leja Caldarera1004United Kingdom2026-05-14
Claire Tollner1005Canada2026-05-13
James Butt1006India2026-05-30
Adams Morasca1007France2026-05-26
Ivar Paprocki1008United Kingdom2026-06-06
Ashley Doe1009Argentina2026-06-02
Aruna Figeroa1010United Kingdom2026-06-04
Misaki Royster1011Canada2026-05-28
Misaki Royster1012Italy2026-06-03
Misaki Royster1013United Kingdom2026-06-04
Kadeem Flosi1014Germany2026-05-31
Aruna Figeroa1015Brazil2026-05-18
Kadeem Flosi1016France2026-06-04
Murillo Malet1017Argentina2026-06-10
Murillo Malet1018Australia2026-05-25
Clifford Rim1019France2026-05-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Salvatore StockhamFranceIvan Magalhaes RENEWAL
Maisha RulapaughUnited KingdomBernardo Dominic UNQUALIFIED
Darci PoquetteSpainElwin Sharvill NEGOTIATION
Rodrigues CampainFranceOnyama Limba NEGOTIATION
Julie StensethIndiaXuxue Feng RENEWAL
Rodrigues CampainJapanIvan Magalhaes QUALIFIED
Tony FollerIndiaIvan Magalhaes RENEWAL
Jennifer AmigonJapanElwin Sharvill NEW
Isabel BowleyUnited KingdomIoni Bowcher RENEWAL
Leja CaldareraFranceAmy Elsner RENEWAL
Cody SaylorsRussiaElwin Sharvill PROPOSAL
Jones VocelkaItalyElwin Sharvill UNQUALIFIED
Chavez BriddickCanadaBernardo Dominic RENEWAL
Isabel BowleyRussiaIoni Bowcher NEW
Jones VocelkaSpainAsiya Javayant UNQUALIFIED
David DarakjyJapanStephen Shaw NEGOTIATION
Chavez BriddickFranceAnna Fali NEGOTIATION
Wickens NestleFranceXuxue Feng QUALIFIED
Alejandro PerinIndiaIoni Bowcher QUALIFIED
Maisha RulapaughGermanyIoni Bowcher NEW
Salvatore StockhamGermanyOnyama Limba PROPOSAL
Rodrigues CampainArgentinaStephen Shaw PROPOSAL
Nicolas IturbideCanadaIoni Bowcher NEW
Costa DilliardIndiaAsiya Javayant QUALIFIED
Ivar PaprockiBrazilAsiya Javayant RENEWAL
Clifford RimBrazilStephen Shaw RENEWAL
Stacey MacleadAustraliaIvan Magalhaes NEW
Stacey MacleadIndiaBernardo Dominic UNQUALIFIED
Kaitlin OstroskyUnited KingdomElwin Sharvill RENEWAL
Deepesh ChuiRussiaIvan Magalhaes QUALIFIED
Sinclair WaycottFranceAsiya Javayant PROPOSAL
Costa DilliardUnited KingdomOnyama Limba NEW
Antonio CaudyBrazilAnna Fali NEW
Kadeem FlosiArgentinaIvan Magalhaes PROPOSAL
Munro FerenczCanadaIvan Magalhaes NEGOTIATION
Ivar PaprockiFranceAmy Elsner QUALIFIED
Misaki RoysterRussiaAmy Elsner NEGOTIATION
Sinclair WaycottIndiaBernardo Dominic QUALIFIED
Deepesh ChuiAustraliaXuxue Feng UNQUALIFIED
Tony FollerSpainIoni Bowcher UNQUALIFIED

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