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
Murillo MaletBrazilAsiya Javayant RENEWAL
Octavia MaletArgentinaIvan Magalhaes PROPOSAL
Deepesh ChuiAustraliaIoni Bowcher UNQUALIFIED
Stacey MacleadRussiaAnna Fali NEW
Juan WieserFranceAsiya Javayant QUALIFIED
Alejandro PerinItalyIoni Bowcher NEW
Jones VocelkaAustraliaXuxue Feng UNQUALIFIED
Julie StensethCanadaIvan Magalhaes UNQUALIFIED
Octavia MaletRussiaElwin Sharvill NEW
Sinclair WaycottGermanyAmy Elsner UNQUALIFIED
Darci PoquetteBrazilBernardo Dominic RENEWAL
Ivar PaprockiBrazilOnyama Limba RENEWAL
Stacey MacleadItalyXuxue Feng RENEWAL
Leja CaldareraJapanXuxue Feng QUALIFIED
Darci PoquetteArgentinaStephen Shaw NEW
Deepesh ChuiCanadaIoni Bowcher NEGOTIATION
Deepesh ChuiBrazilIoni Bowcher QUALIFIED
Isabel BowleyGermanyIvan Magalhaes QUALIFIED
Tony FollerItalyOnyama Limba UNQUALIFIED
Nicolas IturbideAustraliaIoni Bowcher QUALIFIED
Chavez BriddickRussiaIvan Magalhaes NEGOTIATION
Adams MorascaUnited KingdomBernardo Dominic NEGOTIATION
Jefferson SchemmerBrazilStephen Shaw QUALIFIED
Munro FerenczIndiaAnna Fali RENEWAL
Stacey MacleadJapanOnyama Limba NEW
Smith GlickItalyAnna Fali UNQUALIFIED
Francesco ShinkoAustraliaAsiya Javayant RENEWAL
Stacey MacleadRussiaOnyama Limba PROPOSAL
Mujtaba NickaCanadaIvan Magalhaes QUALIFIED
Aruna FigeroaUnited KingdomAnna Fali NEGOTIATION
Arvin AlbaresSpainElwin Sharvill QUALIFIED
Sinclair WaycottItalyAmy Elsner NEGOTIATION
Maisha RulapaughJapanAnna Fali NEGOTIATION
Maria MarrierItalyStephen Shaw RENEWAL
Francesco ShinkoSpainElwin Sharvill NEGOTIATION
Sinclair WaycottGermanyAnna Fali PROPOSAL
Munro FerenczJapanBernardo Dominic NEGOTIATION
Izzy GarufiIndiaElwin Sharvill UNQUALIFIED
Johnson SergiItalyOnyama Limba UNQUALIFIED
Salvatore StockhamRussiaElwin Sharvill NEGOTIATION
Chavez BriddickUnited KingdomElwin Sharvill NEW
Kaitlin OstroskyGermanyAmy Elsner NEW
Aruna FigeroaArgentinaOnyama Limba NEGOTIATION
Kaitlin OstroskyArgentinaIvan Magalhaes PROPOSAL
Clifford RimGermanyAmy Elsner QUALIFIED
Ashley DoeAustraliaBernardo Dominic UNQUALIFIED
Isabel BowleyItalyIvan Magalhaes NEGOTIATION
Chavez BriddickSpainBernardo Dominic QUALIFIED
David DarakjySpainIvan Magalhaes UNQUALIFIED
Deepesh ChuiRussiaOnyama Limba QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Octavia MaletGermanyAmy Elsner RENEWAL
Costa DilliardSpainAsiya Javayant NEW
Juan WieserItalyOnyama Limba RENEWAL
Faith GillianBrazilAsiya Javayant NEW
Faith GillianJapanXuxue Feng UNQUALIFIED
Ashley DoeFranceOnyama Limba RENEWAL
Chavez BriddickUnited KingdomStephen Shaw NEGOTIATION
Maisha RulapaughBrazilStephen Shaw PROPOSAL
Adams MorascaBrazilIoni Bowcher RENEWAL
Johnson SergiUnited KingdomStephen Shaw PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aika InouyeGermany2026-04-06Chemel, James L Cpa PROPOSAL77Amy Elsner
1001Isabel BowleyAustralia2026-03-30Feltz Printing Service PROPOSAL29Elwin Sharvill
1002Leon OldroydAustralia2026-03-26Chapman, Ross E Esq PROPOSAL21Anna Fali
1003Maisha RulapaughItaly2026-04-16Truhlar And Truhlar Attys NEW92Xuxue Feng
1004Stacey MacleadJapan2026-04-02Dorl, James J Esq PROPOSAL76Asiya Javayant
1005Antonio CaudyFrance2026-04-05Chapman, Ross E Esq QUALIFIED18Onyama Limba
1006Clifford RimJapan2026-03-23King, Christopher A Esq QUALIFIED17Anna Fali
1007Smith GlickUnited Kingdom2026-04-01Chanay, Jeffrey A Esq UNQUALIFIED30Ivan Magalhaes
1008Izzy GarufiFrance2026-04-06Rangoni Of Florence NEGOTIATION21Xuxue Feng
1009Cody SaylorsAustralia2026-03-28Truhlar And Truhlar Attys NEGOTIATION32Asiya Javayant
1010Leon OldroydRussia2026-03-27Printing Dimensions NEGOTIATION20Ivan Magalhaes
1011James ButtGermany2026-04-12King, Christopher A Esq RENEWAL96Asiya Javayant
1012Sinclair WaycottUnited Kingdom2026-04-04Chemel, James L Cpa QUALIFIED24Bernardo Dominic
1013Alejandro PerinSpain2026-03-29Feltz Printing Service UNQUALIFIED11Onyama Limba
1014Claire TollnerJapan2026-03-30Benton, John B Jr RENEWAL0Amy Elsner
1015Jones VocelkaRussia2026-04-17Chapman, Ross E Esq PROPOSAL94Anna Fali
1016Darci PoquetteJapan2026-04-11Feltz Printing Service UNQUALIFIED63Onyama Limba
1017Cody SaylorsGermany2026-04-18Dorl, James J Esq NEGOTIATION80Elwin Sharvill
1018Munro FerenczFrance2026-04-07Rousseaux, Michael Esq QUALIFIED96Xuxue Feng
1019Ivar PaprockiJapan2026-03-30Chemel, James L Cpa QUALIFIED78Asiya Javayant
1020Ricardo GauchoAustralia2026-04-10Feiner Bros QUALIFIED36Xuxue Feng
1021David DarakjyIndia2026-04-19Rangoni Of Florence NEW30Elwin Sharvill
1022Antonio CaudyBrazil2026-03-31Benton, John B Jr NEW17Xuxue Feng
1023Cody SaylorsRussia2026-03-29Printing Dimensions QUALIFIED74Elwin Sharvill
1024Antonio CaudySpain2026-04-14Chapman, Ross E Esq NEGOTIATION19Ioni Bowcher
1025Arvin AlbaresJapan2026-03-21Chemel, James L Cpa UNQUALIFIED50Anna Fali
1026Juan WieserRussia2026-04-12Rangoni Of Florence UNQUALIFIED0Asiya Javayant
1027Leja CaldareraFrance2026-04-06King, Christopher A Esq NEGOTIATION39Asiya Javayant
1028Stacey MacleadCanada2026-04-04Printing Dimensions UNQUALIFIED36Anna Fali
1029Maisha RulapaughRussia2026-03-24Rousseaux, Michael Esq UNQUALIFIED52Elwin Sharvill
1030Greenwood BologniaGermany2026-03-24Commercial Press PROPOSAL99Amy Elsner
1031Juan WieserArgentina2026-03-30Buckley Miller Wright UNQUALIFIED71Xuxue Feng
1032Izzy GarufiSpain2026-03-22Commercial Press RENEWAL12Anna Fali
1033Mayumi KolmetzSpain2026-04-01Chemel, James L Cpa UNQUALIFIED37Elwin Sharvill
1034Faith GillianGermany2026-03-23Truhlar And Truhlar Attys UNQUALIFIED54Bernardo Dominic
1035Sinclair WaycottArgentina2026-04-07Printing Dimensions RENEWAL95Anna Fali
1036Arvin AlbaresGermany2026-04-04Truhlar And Truhlar Attys PROPOSAL18Elwin Sharvill
1037Chavez BriddickRussia2026-04-15Chanay, Jeffrey A Esq NEGOTIATION21Xuxue Feng
1038Smith GlickUnited Kingdom2026-03-24Printing Dimensions QUALIFIED6Xuxue Feng
1039Faith GillianArgentina2026-04-13Morlong Associates NEGOTIATION78Asiya Javayant
1040Jefferson SchemmerRussia2026-04-13Commercial Press NEGOTIATION2Asiya Javayant
1041David DarakjyAustralia2026-04-11King, Christopher A Esq PROPOSAL31Onyama Limba
1042Chavez BriddickUnited Kingdom2026-04-06Rousseaux, Michael Esq QUALIFIED71Elwin Sharvill
1043Silvio SlusarskiSpain2026-04-13Truhlar And Truhlar Attys NEW70Ioni Bowcher
1044Ashley DoeJapan2026-03-29Chapman, Ross E Esq QUALIFIED4Ivan Magalhaes
1045Deepesh ChuiGermany2026-04-07Chapman, Ross E Esq RENEWAL3Bernardo Dominic
1046Mayumi KolmetzAustralia2026-03-26Buckley Miller Wright NEW87Elwin Sharvill
1047Julie StensethItaly2026-04-14Chanay, Jeffrey A Esq RENEWAL34Amy Elsner
1048Smith GlickCanada2026-04-03Morlong Associates PROPOSAL0Xuxue Feng
1049Jeanfrancois VenereArgentina2026-04-09Chemel, James L Cpa QUALIFIED63Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Ricardo GauchoBrazilAmy Elsner RENEWAL
Clifford RimArgentinaAmy Elsner QUALIFIED
Tony FollerIndiaElwin Sharvill NEW
Leon OldroydGermanyIoni Bowcher UNQUALIFIED
Isabel BowleyArgentinaIoni Bowcher NEGOTIATION
Jennifer AmigonItalyElwin Sharvill UNQUALIFIED
Cody SaylorsArgentinaAnna Fali PROPOSAL
Jennifer AmigonArgentinaStephen Shaw PROPOSAL
Adams MorascaArgentinaAsiya Javayant PROPOSAL
Isabel BowleyBrazilStephen Shaw NEW
Octavia MaletIndiaOnyama Limba QUALIFIED
Julie StensethAustraliaBernardo Dominic QUALIFIED
Tony FollerUnited KingdomAnna Fali PROPOSAL
Wickens NestleUnited KingdomAmy Elsner QUALIFIED
Alejandro PerinRussiaElwin Sharvill NEGOTIATION
Maisha RulapaughRussiaXuxue Feng RENEWAL
Murillo MaletFranceElwin Sharvill RENEWAL
Alejandro PerinAustraliaAmy Elsner NEGOTIATION
Greenwood BologniaIndiaAmy Elsner UNQUALIFIED
Mujtaba NickaRussiaXuxue Feng NEW
Wickens NestleCanadaBernardo Dominic RENEWAL
Jones VocelkaSpainStephen Shaw UNQUALIFIED
Murillo MaletIndiaXuxue Feng PROPOSAL
Jeanfrancois VenereSpainAsiya Javayant QUALIFIED
Salvatore StockhamGermanyStephen Shaw PROPOSAL
Silvio SlusarskiIndiaIvan Magalhaes NEGOTIATION
Ricardo GauchoItalyAmy Elsner NEW
Leja CaldareraCanadaAsiya Javayant UNQUALIFIED
Leon OldroydSpainAmy Elsner NEW
Clifford RimItalyElwin Sharvill NEW
Claire TollnerIndiaAnna Fali PROPOSAL
Juan WieserArgentinaElwin Sharvill UNQUALIFIED
Misaki RoysterBrazilIoni Bowcher PROPOSAL
Clifford RimArgentinaOnyama Limba NEGOTIATION
Alejandro PerinCanadaAsiya Javayant QUALIFIED
Sinclair WaycottCanadaIoni Bowcher PROPOSAL
Mujtaba NickaArgentinaXuxue Feng NEW
Morrow RutaBrazilAsiya Javayant RENEWAL
Ricardo GauchoCanadaXuxue Feng PROPOSAL
Stacey MacleadGermanyIoni Bowcher UNQUALIFIED
Faith GillianCanadaStephen Shaw NEGOTIATION
Kadeem FlosiIndiaBernardo Dominic NEGOTIATION
Isabel BowleySpainBernardo Dominic NEGOTIATION
Francesco ShinkoBrazilXuxue Feng NEW
Jennifer AmigonBrazilIvan Magalhaes UNQUALIFIED
Antonio CaudyArgentinaOnyama Limba PROPOSAL
Jennifer AmigonCanadaIvan Magalhaes QUALIFIED
Sinclair WaycottAustraliaIoni Bowcher RENEWAL
Darci PoquetteIndiaBernardo Dominic UNQUALIFIED
Nicolas IturbideCanadaAmy Elsner UNQUALIFIED
Frozen Columns
Name
Cody Saylors
Claire Tollner
Tony Foller
Greenwood Bolognia
Smith Glick
Aruna Figeroa
Ricardo Gaucho
Maisha Rulapaugh
Jones Vocelka
Misaki Royster
Jennifer Amigon
Leon Oldroyd
Silvio Slusarski
Izzy Garufi
Misaki Royster
Salvatore Stockham
Kadeem Flosi
Sinclair Waycott
Johnson Sergi
Francesco Shinko
Ivar Paprocki
Costa Dilliard
Faith Gillian
Leja Caldarera
Claire Tollner
Kaitlin Ostrosky
Jefferson Schemmer
Stacey Maclead
James Butt
Jennifer Amigon
Costa Dilliard
Rodrigues Campain
Cody Saylors
Aditya Kusko
David Darakjy
James Butt
Mayumi Kolmetz
Salvatore Stockham
Octavia Malet
Emily Whobrey
Octavia Malet
Maria Marrier
Faith Gillian
David Darakjy
Jeanfrancois Venere
Cody Saylors
Deepesh Chui
Aika Inouye
Wickens Nestle
Julie Stenseth
IdCountryDate
1000India2026-03-30
1001Canada2026-04-18
1002Italy2026-03-31
1003Italy2026-04-10
1004France2026-03-28
1005Italy2026-04-05
1006Spain2026-04-11
1007Argentina2026-04-02
1008Germany2026-03-29
1009Spain2026-03-23
1010Canada2026-04-09
1011United Kingdom2026-04-06
1012Australia2026-03-30
1013Brazil2026-04-08
1014Germany2026-03-27
1015Russia2026-03-23
1016Brazil2026-04-02
1017Argentina2026-04-09
1018France2026-03-29
1019Russia2026-04-14
1020Japan2026-03-28
1021Japan2026-04-19
1022Germany2026-04-01
1023Germany2026-04-10
1024Japan2026-03-26
1025Brazil2026-04-17
1026Japan2026-04-14
1027Argentina2026-03-23
1028United Kingdom2026-04-11
1029India2026-03-21
1030Canada2026-03-23
1031Germany2026-03-31
1032Japan2026-03-21
1033Spain2026-04-17
1034United Kingdom2026-04-01
1035Germany2026-04-02
1036Germany2026-03-22
1037France2026-04-15
1038Russia2026-03-22
1039Canada2026-03-29
1040Italy2026-03-21
1041Spain2026-04-15
1042United Kingdom2026-04-09
1043France2026-03-30
1044Spain2026-04-02
1045Canada2026-03-25
1046Australia2026-04-11
1047Australia2026-04-11
1048Germany2026-04-09
1049India2026-03-26

On-Demand Data

NameIdCountryDate
Rodrigues Campain1000United Kingdom2026-04-17
Tony Foller1001Germany2026-04-06
Wickens Nestle1002Germany2026-04-03
Stacey Maclead1003France2026-04-14
Arvin Albares1004Germany2026-04-04
Morrow Ruta1005Spain2026-04-05
Mayumi Kolmetz1006Brazil2026-04-09
Aruna Figeroa1007Japan2026-04-17
Aika Inouye1008Argentina2026-04-14
Mayumi Kolmetz1009Japan2026-04-19
Greenwood Bolognia1010Japan2026-03-28
Alejandro Perin1011Argentina2026-04-17
Leja Caldarera1012Brazil2026-04-19
Leja Caldarera1013Canada2026-04-17
Maria Marrier1014India2026-04-02
Cody Saylors1015United Kingdom2026-04-17
Salvatore Stockham1016India2026-04-15
James Butt1017Russia2026-04-03
Sinclair Waycott1018Brazil2026-04-02
Izzy Garufi1019Australia2026-04-12
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aruna FigeroaSpainOnyama Limba UNQUALIFIED
Aditya KuskoSpainIvan Magalhaes QUALIFIED
Kaitlin OstroskyFranceIoni Bowcher NEW
Morrow RutaIndiaIvan Magalhaes RENEWAL
Maria MarrierBrazilBernardo Dominic PROPOSAL
Wickens NestleItalyAsiya Javayant NEGOTIATION
Kaitlin OstroskyAustraliaElwin Sharvill PROPOSAL
Kaitlin OstroskySpainIoni Bowcher QUALIFIED
Rodrigues CampainUnited KingdomAmy Elsner PROPOSAL
Deepesh ChuiCanadaBernardo Dominic UNQUALIFIED
Smith GlickCanadaBernardo Dominic NEGOTIATION
Kadeem FlosiJapanElwin Sharvill RENEWAL
Isabel BowleyIndiaElwin Sharvill PROPOSAL
Costa DilliardFranceStephen Shaw RENEWAL
Ricardo GauchoItalyAnna Fali RENEWAL
Costa DilliardGermanyAnna Fali UNQUALIFIED
Munro FerenczRussiaAnna Fali PROPOSAL
Mujtaba NickaCanadaBernardo Dominic PROPOSAL
Cody SaylorsCanadaIoni Bowcher NEGOTIATION
Octavia MaletIndiaElwin Sharvill QUALIFIED
Jennifer AmigonCanadaElwin Sharvill PROPOSAL
Mayumi KolmetzItalyIvan Magalhaes NEW
Jefferson SchemmerGermanyXuxue Feng NEGOTIATION
Murillo MaletItalyOnyama Limba NEW
Mujtaba NickaArgentinaAnna Fali PROPOSAL
Misaki RoysterArgentinaIoni Bowcher UNQUALIFIED
Greenwood BologniaGermanyAsiya Javayant QUALIFIED
Claire TollnerBrazilXuxue Feng NEW
Mujtaba NickaAustraliaAnna Fali NEGOTIATION
David DarakjyUnited KingdomBernardo Dominic NEW
Julie StensethSpainXuxue Feng PROPOSAL
Nicolas IturbideFranceXuxue Feng NEGOTIATION
David DarakjyUnited KingdomXuxue Feng UNQUALIFIED
Morrow RutaGermanyStephen Shaw PROPOSAL
Francesco ShinkoFranceBernardo Dominic NEGOTIATION
Costa DilliardIndiaXuxue Feng UNQUALIFIED
Aika InouyeItalyAmy Elsner QUALIFIED
Adams MorascaAustraliaAmy Elsner UNQUALIFIED
Isabel BowleyIndiaAmy Elsner PROPOSAL
Francesco ShinkoSpainBernardo Dominic 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>