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
Silvio SlusarskiRussiaBernardo Dominic UNQUALIFIED
Octavia MaletIndiaIoni Bowcher QUALIFIED
Greenwood BologniaRussiaBernardo Dominic UNQUALIFIED
Mayumi KolmetzIndiaOnyama Limba NEGOTIATION
David DarakjyCanadaAmy Elsner PROPOSAL
Tony FollerRussiaAsiya Javayant PROPOSAL
Sinclair WaycottArgentinaElwin Sharvill NEGOTIATION
Tony FollerSpainIoni Bowcher PROPOSAL
Jefferson SchemmerIndiaIvan Magalhaes QUALIFIED
David DarakjySpainOnyama Limba QUALIFIED
Aditya KuskoFranceIoni Bowcher NEGOTIATION
Alejandro PerinFranceStephen Shaw PROPOSAL
Claire TollnerArgentinaIoni Bowcher QUALIFIED
Smith GlickUnited KingdomIvan Magalhaes NEGOTIATION
Darci PoquetteArgentinaOnyama Limba UNQUALIFIED
Stacey MacleadBrazilIoni Bowcher UNQUALIFIED
Claire TollnerAustraliaOnyama Limba UNQUALIFIED
James ButtItalyAmy Elsner RENEWAL
Smith GlickUnited KingdomAmy Elsner RENEWAL
Stacey MacleadFranceAsiya Javayant NEW
Chavez BriddickCanadaAsiya Javayant NEW
Kadeem FlosiIndiaIoni Bowcher PROPOSAL
Jones VocelkaJapanIvan Magalhaes PROPOSAL
Mujtaba NickaGermanyStephen Shaw UNQUALIFIED
Jefferson SchemmerRussiaElwin Sharvill NEGOTIATION
Murillo MaletUnited KingdomAmy Elsner NEGOTIATION
Ivar PaprockiAustraliaBernardo Dominic QUALIFIED
Smith GlickUnited KingdomOnyama Limba UNQUALIFIED
Adams MorascaIndiaBernardo Dominic NEW
Johnson SergiFranceIoni Bowcher NEGOTIATION
Julie StensethSpainStephen Shaw RENEWAL
Maria MarrierIndiaBernardo Dominic NEGOTIATION
James ButtFranceElwin Sharvill UNQUALIFIED
Clifford RimIndiaOnyama Limba NEW
Kadeem FlosiIndiaAnna Fali UNQUALIFIED
Jefferson SchemmerUnited KingdomIvan Magalhaes NEW
Ashley DoeFranceOnyama Limba PROPOSAL
Jeanfrancois VenereSpainAnna Fali NEW
Tony FollerBrazilOnyama Limba NEW
Clifford RimJapanIvan Magalhaes UNQUALIFIED
Ricardo GauchoGermanyAmy Elsner QUALIFIED
Greenwood BologniaIndiaAsiya Javayant NEGOTIATION
Salvatore StockhamCanadaBernardo Dominic RENEWAL
Costa DilliardRussiaOnyama Limba NEW
Chavez BriddickFranceAnna Fali QUALIFIED
Rodrigues CampainCanadaIoni Bowcher QUALIFIED
Jennifer AmigonAustraliaIoni Bowcher NEW
Johnson SergiCanadaIvan Magalhaes RENEWAL
Murillo MaletArgentinaAmy Elsner PROPOSAL
Ashley DoeBrazilStephen Shaw RENEWAL
Horizontal
NameCountryRepresentativeStatus
James ButtCanadaAnna Fali QUALIFIED
Antonio CaudyCanadaAsiya Javayant NEGOTIATION
Sinclair WaycottSpainXuxue Feng RENEWAL
Ashley DoeCanadaBernardo Dominic NEGOTIATION
Murillo MaletAustraliaOnyama Limba NEGOTIATION
Deepesh ChuiArgentinaElwin Sharvill NEGOTIATION
Smith GlickUnited KingdomElwin Sharvill UNQUALIFIED
Francesco ShinkoIndiaStephen Shaw NEGOTIATION
Nicolas IturbideFranceIoni Bowcher NEGOTIATION
Francesco ShinkoRussiaAmy Elsner NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ricardo GauchoIndia2026-05-27King, Christopher A Esq RENEWAL3Bernardo Dominic
1001Antonio CaudyFrance2026-04-30Feltz Printing Service QUALIFIED26Asiya Javayant
1002Adams MorascaArgentina2026-05-11Feltz Printing Service PROPOSAL37Bernardo Dominic
1003James ButtCanada2026-05-11King, Christopher A Esq UNQUALIFIED62Asiya Javayant
1004Claire TollnerJapan2026-05-07Dorl, James J Esq PROPOSAL9Xuxue Feng
1005Mayumi KolmetzAustralia2026-05-12King, Christopher A Esq NEGOTIATION14Bernardo Dominic
1006Morrow RutaRussia2026-05-03Printing Dimensions NEW34Amy Elsner
1007Isabel BowleyItaly2026-05-26Truhlar And Truhlar Attys UNQUALIFIED85Anna Fali
1008Isabel BowleyUnited Kingdom2026-05-04Chemel, James L Cpa NEGOTIATION16Onyama Limba
1009Salvatore StockhamGermany2026-05-08Printing Dimensions UNQUALIFIED36Asiya Javayant
1010David DarakjyCanada2026-05-17Truhlar And Truhlar Attys NEGOTIATION48Xuxue Feng
1011Murillo MaletRussia2026-05-10Morlong Associates RENEWAL86Xuxue Feng
1012Costa DilliardUnited Kingdom2026-05-27Printing Dimensions NEW86Ivan Magalhaes
1013Maisha RulapaughFrance2026-05-24Chapman, Ross E Esq UNQUALIFIED65Stephen Shaw
1014Ivar PaprockiAustralia2026-05-09Commercial Press RENEWAL90Ivan Magalhaes
1015Aika InouyeSpain2026-05-06Chemel, James L Cpa PROPOSAL79Anna Fali
1016Maria MarrierJapan2026-05-27King, Christopher A Esq NEW11Ioni Bowcher
1017Kadeem FlosiJapan2026-05-15Chanay, Jeffrey A Esq PROPOSAL13Onyama Limba
1018Wickens NestleItaly2026-05-19Rangoni Of Florence NEW80Bernardo Dominic
1019Greenwood BologniaItaly2026-05-02Rousseaux, Michael Esq NEGOTIATION44Bernardo Dominic
1020Deepesh ChuiJapan2026-05-12Chanay, Jeffrey A Esq PROPOSAL27Xuxue Feng
1021Mayumi KolmetzFrance2026-04-29Benton, John B Jr UNQUALIFIED1Ioni Bowcher
1022Darci PoquetteItaly2026-05-11Printing Dimensions NEW92Onyama Limba
1023Costa DilliardRussia2026-05-27Chanay, Jeffrey A Esq QUALIFIED24Bernardo Dominic
1024Juan WieserRussia2026-04-28Buckley Miller Wright QUALIFIED11Xuxue Feng
1025Chavez BriddickSpain2026-05-27Truhlar And Truhlar Attys NEW20Ivan Magalhaes
1026Greenwood BologniaItaly2026-05-09Commercial Press PROPOSAL44Ioni Bowcher
1027Stacey MacleadItaly2026-05-08Morlong Associates RENEWAL32Anna Fali
1028Silvio SlusarskiJapan2026-05-12Truhlar And Truhlar Attys RENEWAL40Onyama Limba
1029Octavia MaletArgentina2026-05-21Feiner Bros PROPOSAL61Asiya Javayant
1030Mayumi KolmetzArgentina2026-05-17Benton, John B Jr PROPOSAL4Elwin Sharvill
1031Jennifer AmigonAustralia2026-05-26Printing Dimensions NEGOTIATION16Stephen Shaw
1032Silvio SlusarskiUnited Kingdom2026-05-03Rousseaux, Michael Esq NEW90Bernardo Dominic
1033Octavia MaletAustralia2026-05-22Benton, John B Jr NEGOTIATION69Onyama Limba
1034Julie StensethJapan2026-05-18Buckley Miller Wright QUALIFIED59Asiya Javayant
1035Jones VocelkaRussia2026-05-06Chapman, Ross E Esq QUALIFIED5Elwin Sharvill
1036Leon OldroydItaly2026-05-07King, Christopher A Esq QUALIFIED43Ioni Bowcher
1037Stacey MacleadItaly2026-05-08Feltz Printing Service UNQUALIFIED44Onyama Limba
1038Deepesh ChuiFrance2026-05-18Buckley Miller Wright PROPOSAL90Onyama Limba
1039Leon OldroydAustralia2026-05-16Benton, John B Jr PROPOSAL41Xuxue Feng
1040Cody SaylorsIndia2026-05-19Chemel, James L Cpa UNQUALIFIED32Asiya Javayant
1041Aruna FigeroaSpain2026-04-30Printing Dimensions NEGOTIATION20Ivan Magalhaes
1042Sinclair WaycottCanada2026-05-18Rousseaux, Michael Esq UNQUALIFIED56Ivan Magalhaes
1043Maisha RulapaughGermany2026-05-17Buckley Miller Wright RENEWAL21Onyama Limba
1044Izzy GarufiGermany2026-05-23Benton, John B Jr NEGOTIATION64Anna Fali
1045Nicolas IturbideCanada2026-05-22Rangoni Of Florence UNQUALIFIED94Bernardo Dominic
1046Isabel BowleyUnited Kingdom2026-05-20Benton, John B Jr UNQUALIFIED14Amy Elsner
1047James ButtItaly2026-05-27Feltz Printing Service QUALIFIED37Anna Fali
1048Jefferson SchemmerCanada2026-05-25King, Christopher A Esq QUALIFIED5Amy Elsner
1049Jeanfrancois VenereIndia2026-05-23Rangoni Of Florence QUALIFIED4Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Arvin AlbaresIndiaAnna Fali NEW
Johnson SergiFranceAnna Fali QUALIFIED
Smith GlickGermanyAmy Elsner NEGOTIATION
Arvin AlbaresGermanyAnna Fali PROPOSAL
Emily WhobreyItalyIvan Magalhaes RENEWAL
Antonio CaudyGermanyXuxue Feng QUALIFIED
Mujtaba NickaIndiaXuxue Feng NEGOTIATION
David DarakjyCanadaXuxue Feng QUALIFIED
Mujtaba NickaFranceXuxue Feng UNQUALIFIED
Adams MorascaJapanAsiya Javayant PROPOSAL
Kaitlin OstroskyIndiaAmy Elsner RENEWAL
Smith GlickBrazilAsiya Javayant NEGOTIATION
Faith GillianIndiaAmy Elsner UNQUALIFIED
Stacey MacleadJapanXuxue Feng NEGOTIATION
Nicolas IturbideItalyOnyama Limba NEGOTIATION
Mayumi KolmetzAustraliaAmy Elsner PROPOSAL
Arvin AlbaresArgentinaAnna Fali NEGOTIATION
Aika InouyeItalyElwin Sharvill UNQUALIFIED
Murillo MaletGermanyIoni Bowcher NEGOTIATION
Aditya KuskoGermanyXuxue Feng QUALIFIED
Adams MorascaArgentinaElwin Sharvill NEGOTIATION
Octavia MaletJapanAmy Elsner NEGOTIATION
Arvin AlbaresJapanXuxue Feng RENEWAL
Alejandro PerinBrazilXuxue Feng PROPOSAL
Munro FerenczRussiaIoni Bowcher PROPOSAL
Deepesh ChuiBrazilIoni Bowcher RENEWAL
Johnson SergiGermanyAsiya Javayant UNQUALIFIED
Morrow RutaUnited KingdomXuxue Feng UNQUALIFIED
Jones VocelkaUnited KingdomElwin Sharvill RENEWAL
Leon OldroydAustraliaAmy Elsner UNQUALIFIED
Costa DilliardItalyXuxue Feng NEW
Johnson SergiFranceAmy Elsner UNQUALIFIED
Costa DilliardRussiaAnna Fali PROPOSAL
Rodrigues CampainGermanyAsiya Javayant RENEWAL
Clifford RimItalyAmy Elsner QUALIFIED
Jeanfrancois VenereRussiaStephen Shaw QUALIFIED
Ashley DoeCanadaXuxue Feng RENEWAL
Arvin AlbaresIndiaAsiya Javayant PROPOSAL
Mayumi KolmetzSpainAnna Fali NEGOTIATION
Munro FerenczRussiaAnna Fali NEGOTIATION
Francesco ShinkoUnited KingdomXuxue Feng NEW
Johnson SergiAustraliaOnyama Limba NEGOTIATION
David DarakjyArgentinaStephen Shaw NEGOTIATION
Sinclair WaycottGermanyStephen Shaw NEW
Costa DilliardBrazilAmy Elsner RENEWAL
Octavia MaletBrazilAsiya Javayant QUALIFIED
Kadeem FlosiUnited KingdomOnyama Limba RENEWAL
Maria MarrierUnited KingdomElwin Sharvill RENEWAL
Arvin AlbaresFranceXuxue Feng QUALIFIED
Leon OldroydItalyIoni Bowcher UNQUALIFIED
Frozen Columns
Name
Juan Wieser
Octavia Malet
Silvio Slusarski
Jennifer Amigon
Mujtaba Nicka
Maisha Rulapaugh
Morrow Ruta
Juan Wieser
Rodrigues Campain
Rodrigues Campain
Maria Marrier
Isabel Bowley
James Butt
Morrow Ruta
Jeanfrancois Venere
Deepesh Chui
Morrow Ruta
Tony Foller
Morrow Ruta
Johnson Sergi
Jennifer Amigon
Tony Foller
Kaitlin Ostrosky
Wickens Nestle
Mujtaba Nicka
Kadeem Flosi
Alejandro Perin
Leja Caldarera
David Darakjy
Antonio Caudy
Kadeem Flosi
Francesco Shinko
Claire Tollner
Costa Dilliard
Chavez Briddick
Silvio Slusarski
Faith Gillian
Chavez Briddick
Costa Dilliard
Ivar Paprocki
Jefferson Schemmer
Jefferson Schemmer
Emily Whobrey
Ashley Doe
Misaki Royster
Misaki Royster
Ashley Doe
Sinclair Waycott
Kaitlin Ostrosky
Murillo Malet
IdCountryDate
1000France2026-05-15
1001Spain2026-05-23
1002Russia2026-05-05
1003Argentina2026-05-06
1004Russia2026-04-28
1005Japan2026-05-20
1006India2026-05-06
1007Italy2026-05-14
1008Canada2026-05-12
1009Germany2026-05-17
1010Italy2026-05-22
1011India2026-05-13
1012India2026-05-03
1013Brazil2026-05-17
1014Australia2026-05-07
1015Spain2026-05-20
1016Canada2026-05-05
1017Spain2026-05-20
1018Japan2026-05-07
1019Russia2026-05-06
1020Canada2026-05-18
1021Italy2026-04-29
1022France2026-05-21
1023Canada2026-05-10
1024India2026-05-13
1025Russia2026-05-10
1026Japan2026-05-07
1027United Kingdom2026-05-11
1028Germany2026-05-27
1029Canada2026-05-10
1030Australia2026-05-03
1031Argentina2026-05-16
1032Canada2026-05-22
1033Argentina2026-05-13
1034Japan2026-05-16
1035Argentina2026-05-13
1036Germany2026-05-13
1037France2026-05-23
1038Brazil2026-05-27
1039Australia2026-05-03
1040Canada2026-05-15
1041Canada2026-05-07
1042India2026-05-25
1043India2026-04-29
1044Argentina2026-05-24
1045United Kingdom2026-05-24
1046Brazil2026-05-19
1047Germany2026-05-05
1048France2026-05-26
1049Australia2026-05-21

On-Demand Data

NameIdCountryDate
Jeanfrancois Venere1000Spain2026-05-06
Smith Glick1001India2026-05-04
Wickens Nestle1002Brazil2026-05-20
Munro Ferencz1003Spain2026-05-08
James Butt1004Brazil2026-05-21
Octavia Malet1005Germany2026-05-06
Claire Tollner1006Argentina2026-05-22
Ricardo Gaucho1007Brazil2026-05-04
Misaki Royster1008Argentina2026-05-13
Aditya Kusko1009Italy2026-05-24
Stacey Maclead1010Brazil2026-05-06
Sinclair Waycott1011Australia2026-05-26
Alejandro Perin1012Argentina2026-05-25
Arvin Albares1013Australia2026-05-26
Francesco Shinko1014Japan2026-05-02
Mayumi Kolmetz1015Spain2026-05-12
Aika Inouye1016India2026-05-15
Francesco Shinko1017Argentina2026-04-30
Chavez Briddick1018Spain2026-05-02
Juan Wieser1019United Kingdom2026-05-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kaitlin OstroskyGermanyAnna Fali QUALIFIED
Wickens NestleSpainIvan Magalhaes PROPOSAL
Deepesh ChuiFranceBernardo Dominic RENEWAL
Misaki RoysterSpainAsiya Javayant NEGOTIATION
Maria MarrierRussiaOnyama Limba NEGOTIATION
Smith GlickFranceStephen Shaw NEW
Sinclair WaycottArgentinaAsiya Javayant UNQUALIFIED
Silvio SlusarskiBrazilXuxue Feng PROPOSAL
Clifford RimGermanyAsiya Javayant NEGOTIATION
Rodrigues CampainGermanyOnyama Limba UNQUALIFIED
Jeanfrancois VenereUnited KingdomOnyama Limba PROPOSAL
Aruna FigeroaGermanyElwin Sharvill NEGOTIATION
Kaitlin OstroskyAustraliaOnyama Limba RENEWAL
Juan WieserGermanyAmy Elsner NEW
Smith GlickSpainAmy Elsner QUALIFIED
Maisha RulapaughRussiaXuxue Feng NEW
Rodrigues CampainGermanyOnyama Limba RENEWAL
Salvatore StockhamJapanStephen Shaw NEW
Jeanfrancois VenereAustraliaAmy Elsner PROPOSAL
Leon OldroydSpainIvan Magalhaes NEW
Chavez BriddickAustraliaAnna Fali NEW
Greenwood BologniaCanadaAmy Elsner RENEWAL
Aruna FigeroaIndiaIoni Bowcher UNQUALIFIED
Deepesh ChuiRussiaIoni Bowcher UNQUALIFIED
Antonio CaudyRussiaIvan Magalhaes PROPOSAL
Maisha RulapaughUnited KingdomBernardo Dominic RENEWAL
Aruna FigeroaRussiaAsiya Javayant NEGOTIATION
Clifford RimFranceAmy Elsner NEW
Maisha RulapaughRussiaAmy Elsner NEW
Leon OldroydJapanAnna Fali NEGOTIATION
Cody SaylorsRussiaXuxue Feng QUALIFIED
Rodrigues CampainAustraliaAnna Fali UNQUALIFIED
Aditya KuskoArgentinaXuxue Feng PROPOSAL
Johnson SergiSpainIoni Bowcher NEGOTIATION
Leon OldroydUnited KingdomOnyama Limba NEGOTIATION
Smith GlickCanadaAnna Fali NEGOTIATION
Murillo MaletIndiaOnyama Limba QUALIFIED
Costa DilliardBrazilAmy Elsner QUALIFIED
Jennifer AmigonCanadaOnyama Limba UNQUALIFIED
Leon OldroydFranceOnyama Limba 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>