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
Cody SaylorsCanadaIoni Bowcher UNQUALIFIED
Murillo MaletBrazilXuxue Feng QUALIFIED
Jeanfrancois VenereFranceAmy Elsner QUALIFIED
Silvio SlusarskiRussiaElwin Sharvill RENEWAL
Aika InouyeRussiaStephen Shaw PROPOSAL
Antonio CaudyItalyXuxue Feng NEGOTIATION
Costa DilliardIndiaIvan Magalhaes RENEWAL
Darci PoquetteRussiaIvan Magalhaes UNQUALIFIED
Salvatore StockhamBrazilXuxue Feng PROPOSAL
Jeanfrancois VenereGermanyStephen Shaw RENEWAL
Jeanfrancois VenereRussiaElwin Sharvill PROPOSAL
Murillo MaletUnited KingdomAsiya Javayant UNQUALIFIED
Morrow RutaGermanyXuxue Feng NEGOTIATION
Greenwood BologniaCanadaIvan Magalhaes NEW
Cody SaylorsCanadaAnna Fali NEGOTIATION
Maisha RulapaughUnited KingdomStephen Shaw NEGOTIATION
Silvio SlusarskiArgentinaIoni Bowcher PROPOSAL
Francesco ShinkoAustraliaAmy Elsner RENEWAL
Ivar PaprockiBrazilBernardo Dominic UNQUALIFIED
Aditya KuskoJapanIvan Magalhaes PROPOSAL
Ashley DoeArgentinaElwin Sharvill QUALIFIED
Johnson SergiArgentinaAsiya Javayant PROPOSAL
Silvio SlusarskiIndiaOnyama Limba QUALIFIED
Misaki RoysterJapanAsiya Javayant NEW
Sinclair WaycottSpainIoni Bowcher RENEWAL
Adams MorascaArgentinaAnna Fali NEGOTIATION
Darci PoquetteGermanyBernardo Dominic NEGOTIATION
Smith GlickSpainXuxue Feng RENEWAL
Costa DilliardBrazilOnyama Limba QUALIFIED
Chavez BriddickUnited KingdomElwin Sharvill RENEWAL
James ButtBrazilStephen Shaw QUALIFIED
Isabel BowleyAustraliaElwin Sharvill UNQUALIFIED
Ricardo GauchoGermanyStephen Shaw NEW
Sinclair WaycottJapanStephen Shaw NEW
Rodrigues CampainUnited KingdomStephen Shaw UNQUALIFIED
Aditya KuskoBrazilOnyama Limba NEGOTIATION
Jones VocelkaRussiaAnna Fali QUALIFIED
Chavez BriddickIndiaElwin Sharvill RENEWAL
Jeanfrancois VenereCanadaAnna Fali RENEWAL
Alejandro PerinRussiaAnna Fali NEGOTIATION
Darci PoquetteFranceOnyama Limba UNQUALIFIED
Faith GillianGermanyElwin Sharvill NEGOTIATION
Silvio SlusarskiCanadaElwin Sharvill NEGOTIATION
Jeanfrancois VenereJapanBernardo Dominic UNQUALIFIED
Aika InouyeFranceXuxue Feng PROPOSAL
Darci PoquetteUnited KingdomAnna Fali UNQUALIFIED
Smith GlickIndiaOnyama Limba NEW
Emily WhobreyFranceXuxue Feng PROPOSAL
Maria MarrierIndiaIoni Bowcher UNQUALIFIED
Tony FollerSpainIoni Bowcher NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Cody SaylorsItalyOnyama Limba PROPOSAL
Arvin AlbaresSpainElwin Sharvill PROPOSAL
David DarakjyCanadaBernardo Dominic PROPOSAL
Maria MarrierCanadaIvan Magalhaes UNQUALIFIED
Silvio SlusarskiBrazilAmy Elsner UNQUALIFIED
Jones VocelkaItalyIvan Magalhaes NEGOTIATION
Jennifer AmigonSpainIoni Bowcher UNQUALIFIED
Costa DilliardBrazilBernardo Dominic PROPOSAL
Greenwood BologniaIndiaIvan Magalhaes UNQUALIFIED
Sinclair WaycottRussiaElwin Sharvill NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Rodrigues CampainGermany2026-06-06Feiner Bros RENEWAL33Anna Fali
1001James ButtUnited Kingdom2026-05-27Commercial Press NEGOTIATION74Amy Elsner
1002Deepesh ChuiIndia2026-06-14Printing Dimensions RENEWAL77Ivan Magalhaes
1003Greenwood BologniaCanada2026-06-10Chapman, Ross E Esq PROPOSAL85Onyama Limba
1004Morrow RutaIndia2026-06-01Truhlar And Truhlar Attys NEW78Ivan Magalhaes
1005Clifford RimUnited Kingdom2026-06-03Feltz Printing Service NEW19Amy Elsner
1006Ricardo GauchoItaly2026-06-07Morlong Associates PROPOSAL8Bernardo Dominic
1007Adams MorascaFrance2026-05-28Commercial Press UNQUALIFIED29Ivan Magalhaes
1008Salvatore StockhamGermany2026-06-05Morlong Associates NEGOTIATION3Ioni Bowcher
1009Munro FerenczUnited Kingdom2026-05-19Buckley Miller Wright QUALIFIED11Onyama Limba
1010Adams MorascaAustralia2026-06-06Rousseaux, Michael Esq PROPOSAL5Onyama Limba
1011Mayumi KolmetzRussia2026-06-08Chemel, James L Cpa QUALIFIED24Onyama Limba
1012Ricardo GauchoArgentina2026-05-28Chanay, Jeffrey A Esq PROPOSAL45Ivan Magalhaes
1013Maria MarrierSpain2026-05-19Printing Dimensions RENEWAL23Asiya Javayant
1014David DarakjyItaly2026-06-13Dorl, James J Esq NEGOTIATION25Elwin Sharvill
1015Chavez BriddickSpain2026-05-22Feiner Bros PROPOSAL78Anna Fali
1016Stacey MacleadRussia2026-05-22Chanay, Jeffrey A Esq PROPOSAL10Ivan Magalhaes
1017Mujtaba NickaAustralia2026-05-30Truhlar And Truhlar Attys QUALIFIED29Onyama Limba
1018Silvio SlusarskiRussia2026-05-21Buckley Miller Wright NEGOTIATION8Ioni Bowcher
1019Arvin AlbaresIndia2026-06-05Commercial Press NEGOTIATION50Onyama Limba
1020James ButtIndia2026-06-11Rangoni Of Florence QUALIFIED30Anna Fali
1021Francesco ShinkoRussia2026-06-09Printing Dimensions NEGOTIATION35Asiya Javayant
1022Deepesh ChuiItaly2026-05-28Rangoni Of Florence UNQUALIFIED9Xuxue Feng
1023Smith GlickJapan2026-06-04King, Christopher A Esq UNQUALIFIED0Amy Elsner
1024Faith GillianGermany2026-06-05Dorl, James J Esq PROPOSAL47Asiya Javayant
1025Cody SaylorsJapan2026-06-01Feiner Bros RENEWAL25Anna Fali
1026Aika InouyeGermany2026-05-25Feltz Printing Service PROPOSAL27Bernardo Dominic
1027Mujtaba NickaJapan2026-06-15Chapman, Ross E Esq QUALIFIED94Xuxue Feng
1028Jennifer AmigonItaly2026-05-21Benton, John B Jr PROPOSAL52Ivan Magalhaes
1029Sinclair WaycottCanada2026-05-25Chapman, Ross E Esq NEW20Bernardo Dominic
1030Ashley DoeUnited Kingdom2026-05-31Buckley Miller Wright NEGOTIATION91Anna Fali
1031Murillo MaletAustralia2026-05-24Chemel, James L Cpa QUALIFIED38Amy Elsner
1032Rodrigues CampainSpain2026-05-30Feiner Bros PROPOSAL58Xuxue Feng
1033Stacey MacleadIndia2026-05-29Dorl, James J Esq PROPOSAL40Xuxue Feng
1034Smith GlickGermany2026-06-09Printing Dimensions PROPOSAL72Amy Elsner
1035Wickens NestleAustralia2026-06-02Dorl, James J Esq RENEWAL37Asiya Javayant
1036David DarakjyGermany2026-05-31Feltz Printing Service PROPOSAL26Asiya Javayant
1037Izzy GarufiBrazil2026-06-05Commercial Press QUALIFIED7Onyama Limba
1038Maria MarrierCanada2026-05-28Feiner Bros UNQUALIFIED96Asiya Javayant
1039Izzy GarufiSpain2026-06-02Dorl, James J Esq RENEWAL93Xuxue Feng
1040Aruna FigeroaRussia2026-06-12Printing Dimensions QUALIFIED34Bernardo Dominic
1041Tony FollerSpain2026-06-07Rousseaux, Michael Esq PROPOSAL37Anna Fali
1042Greenwood BologniaItaly2026-06-06Buckley Miller Wright QUALIFIED84Elwin Sharvill
1043Salvatore StockhamUnited Kingdom2026-05-18Morlong Associates NEW19Xuxue Feng
1044Salvatore StockhamItaly2026-06-13Commercial Press UNQUALIFIED18Xuxue Feng
1045Isabel BowleyRussia2026-06-10Chapman, Ross E Esq UNQUALIFIED51Bernardo Dominic
1046Isabel BowleySpain2026-05-30Benton, John B Jr UNQUALIFIED99Stephen Shaw
1047James ButtIndia2026-06-04Chanay, Jeffrey A Esq QUALIFIED30Onyama Limba
1048Ashley DoeJapan2026-06-15Feltz Printing Service NEGOTIATION74Stephen Shaw
1049Octavia MaletCanada2026-05-19Morlong Associates QUALIFIED81Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Stacey MacleadSpainAsiya Javayant RENEWAL
Rodrigues CampainBrazilBernardo Dominic NEGOTIATION
Silvio SlusarskiIndiaStephen Shaw PROPOSAL
Costa DilliardAustraliaIoni Bowcher UNQUALIFIED
Murillo MaletAustraliaIoni Bowcher NEW
Morrow RutaBrazilAsiya Javayant PROPOSAL
Stacey MacleadUnited KingdomAmy Elsner PROPOSAL
James ButtItalyOnyama Limba UNQUALIFIED
Faith GillianItalyAnna Fali NEW
James ButtArgentinaStephen Shaw PROPOSAL
Antonio CaudyUnited KingdomIoni Bowcher NEW
Kaitlin OstroskyBrazilIoni Bowcher RENEWAL
Rodrigues CampainAustraliaStephen Shaw NEW
Antonio CaudyCanadaIvan Magalhaes QUALIFIED
Ashley DoeBrazilOnyama Limba RENEWAL
Claire TollnerArgentinaAnna Fali QUALIFIED
Alejandro PerinJapanBernardo Dominic PROPOSAL
Salvatore StockhamIndiaOnyama Limba QUALIFIED
Faith GillianFranceAmy Elsner NEW
James ButtIndiaXuxue Feng RENEWAL
Aditya KuskoAustraliaOnyama Limba UNQUALIFIED
David DarakjyArgentinaAsiya Javayant UNQUALIFIED
Deepesh ChuiBrazilIoni Bowcher UNQUALIFIED
James ButtJapanAmy Elsner QUALIFIED
Arvin AlbaresSpainBernardo Dominic NEW
Maisha RulapaughItalyOnyama Limba PROPOSAL
Tony FollerCanadaAnna Fali UNQUALIFIED
Emily WhobreyGermanyXuxue Feng NEW
Sinclair WaycottArgentinaIvan Magalhaes NEW
Leon OldroydIndiaIoni Bowcher UNQUALIFIED
Morrow RutaJapanAmy Elsner QUALIFIED
Jefferson SchemmerSpainElwin Sharvill QUALIFIED
Darci PoquetteCanadaXuxue Feng UNQUALIFIED
Faith GillianRussiaStephen Shaw UNQUALIFIED
Aika InouyeCanadaOnyama Limba NEGOTIATION
Wickens NestleAustraliaElwin Sharvill UNQUALIFIED
Ashley DoeRussiaStephen Shaw RENEWAL
Mayumi KolmetzBrazilElwin Sharvill NEGOTIATION
Mujtaba NickaRussiaBernardo Dominic NEGOTIATION
Emily WhobreyRussiaElwin Sharvill NEW
Jeanfrancois VenereJapanIoni Bowcher PROPOSAL
Jones VocelkaBrazilAsiya Javayant UNQUALIFIED
James ButtJapanStephen Shaw RENEWAL
Izzy GarufiFranceOnyama Limba NEGOTIATION
Murillo MaletFranceIoni Bowcher RENEWAL
Morrow RutaGermanyAnna Fali PROPOSAL
Ricardo GauchoItalyAnna Fali NEGOTIATION
Juan WieserFranceBernardo Dominic NEW
Francesco ShinkoRussiaStephen Shaw NEGOTIATION
Tony FollerArgentinaAnna Fali UNQUALIFIED
Frozen Columns
Name
Rodrigues Campain
Salvatore Stockham
Silvio Slusarski
Deepesh Chui
Adams Morasca
Rodrigues Campain
Aruna Figeroa
Jeanfrancois Venere
Costa Dilliard
Deepesh Chui
Alejandro Perin
Silvio Slusarski
Alejandro Perin
Ashley Doe
Leon Oldroyd
Alejandro Perin
Emily Whobrey
Aditya Kusko
Mayumi Kolmetz
Mayumi Kolmetz
Arvin Albares
Smith Glick
Maisha Rulapaugh
Jones Vocelka
Ricardo Gaucho
Cody Saylors
Jennifer Amigon
Sinclair Waycott
Deepesh Chui
Ivar Paprocki
Mayumi Kolmetz
Julie Stenseth
Greenwood Bolognia
Morrow Ruta
Stacey Maclead
Silvio Slusarski
Juan Wieser
Julie Stenseth
Costa Dilliard
Leja Caldarera
Deepesh Chui
Aditya Kusko
Darci Poquette
Darci Poquette
Ivar Paprocki
Greenwood Bolognia
Alejandro Perin
Mayumi Kolmetz
David Darakjy
Maisha Rulapaugh
IdCountryDate
1000Germany2026-06-01
1001Japan2026-05-24
1002Canada2026-06-14
1003Russia2026-05-22
1004Australia2026-06-07
1005Canada2026-05-23
1006Australia2026-05-29
1007Japan2026-05-22
1008United Kingdom2026-05-23
1009Brazil2026-05-23
1010Russia2026-05-26
1011India2026-06-14
1012Italy2026-06-02
1013Canada2026-06-14
1014Japan2026-05-26
1015France2026-06-09
1016Spain2026-05-30
1017Italy2026-06-03
1018United Kingdom2026-05-18
1019Canada2026-05-29
1020Japan2026-06-12
1021Canada2026-06-05
1022Canada2026-05-26
1023Japan2026-06-03
1024India2026-05-27
1025Canada2026-06-04
1026France2026-05-23
1027Germany2026-05-29
1028Japan2026-05-25
1029United Kingdom2026-05-22
1030Japan2026-06-02
1031United Kingdom2026-06-15
1032Brazil2026-05-19
1033Russia2026-05-17
1034Germany2026-06-08
1035Australia2026-05-22
1036Germany2026-05-17
1037Canada2026-06-10
1038Japan2026-05-30
1039Australia2026-05-29
1040Russia2026-05-18
1041France2026-06-13
1042Canada2026-06-02
1043Japan2026-05-28
1044Spain2026-06-13
1045United Kingdom2026-05-31
1046Argentina2026-06-11
1047Germany2026-05-22
1048Germany2026-06-13
1049Japan2026-05-30

On-Demand Data

NameIdCountryDate
Isabel Bowley1000Spain2026-05-22
Jeanfrancois Venere1001Canada2026-05-17
Smith Glick1002France2026-06-02
Ricardo Gaucho1003Australia2026-05-19
Kadeem Flosi1004Japan2026-06-09
Morrow Ruta1005Italy2026-06-06
Rodrigues Campain1006Brazil2026-06-07
Claire Tollner1007United Kingdom2026-06-02
Octavia Malet1008Australia2026-06-11
Antonio Caudy1009Argentina2026-06-10
Juan Wieser1010Australia2026-06-14
Jones Vocelka1011France2026-05-26
David Darakjy1012Australia2026-06-12
Arvin Albares1013Canada2026-05-18
Emily Whobrey1014Spain2026-05-31
Johnson Sergi1015Brazil2026-05-31
Rodrigues Campain1016United Kingdom2026-05-30
Greenwood Bolognia1017Argentina2026-05-31
Jennifer Amigon1018India2026-06-15
Jennifer Amigon1019India2026-06-11
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ashley DoeIndiaIoni Bowcher RENEWAL
Sinclair WaycottArgentinaIvan Magalhaes QUALIFIED
Claire TollnerArgentinaElwin Sharvill RENEWAL
Darci PoquetteRussiaAsiya Javayant NEGOTIATION
Salvatore StockhamFranceIoni Bowcher RENEWAL
Julie StensethAustraliaOnyama Limba UNQUALIFIED
Rodrigues CampainUnited KingdomAmy Elsner NEGOTIATION
Murillo MaletCanadaElwin Sharvill UNQUALIFIED
Ivar PaprockiItalyAmy Elsner QUALIFIED
Smith GlickRussiaIoni Bowcher NEGOTIATION
Jones VocelkaAustraliaXuxue Feng QUALIFIED
Jones VocelkaAustraliaStephen Shaw RENEWAL
James ButtFranceBernardo Dominic PROPOSAL
Antonio CaudyIndiaIvan Magalhaes QUALIFIED
Jefferson SchemmerJapanAnna Fali NEW
Nicolas IturbideUnited KingdomOnyama Limba UNQUALIFIED
Jeanfrancois VenereCanadaBernardo Dominic QUALIFIED
Jennifer AmigonRussiaStephen Shaw PROPOSAL
Munro FerenczJapanIvan Magalhaes PROPOSAL
Leja CaldareraItalyXuxue Feng PROPOSAL
Kaitlin OstroskyJapanAmy Elsner RENEWAL
Clifford RimAustraliaAmy Elsner NEW
Leon OldroydArgentinaOnyama Limba NEGOTIATION
Maria MarrierUnited KingdomAsiya Javayant NEW
Deepesh ChuiRussiaIoni Bowcher UNQUALIFIED
Sinclair WaycottSpainOnyama Limba NEGOTIATION
Ivar PaprockiItalyElwin Sharvill NEGOTIATION
Jennifer AmigonJapanElwin Sharvill RENEWAL
Faith GillianFranceElwin Sharvill PROPOSAL
Jeanfrancois VenereIndiaStephen Shaw UNQUALIFIED
Alejandro PerinIndiaIoni Bowcher PROPOSAL
Munro FerenczItalyOnyama Limba UNQUALIFIED
Smith GlickBrazilAsiya Javayant QUALIFIED
Jones VocelkaBrazilElwin Sharvill NEGOTIATION
Aruna FigeroaArgentinaIvan Magalhaes UNQUALIFIED
Johnson SergiCanadaOnyama Limba UNQUALIFIED
Ricardo GauchoFranceIoni Bowcher NEGOTIATION
Cody SaylorsBrazilBernardo Dominic PROPOSAL
Francesco ShinkoRussiaIoni Bowcher RENEWAL
Cody SaylorsItalyIoni 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>