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
Costa DilliardSpainAnna Fali RENEWAL
Jefferson SchemmerGermanyAsiya Javayant PROPOSAL
Misaki RoysterAustraliaIvan Magalhaes NEW
Leon OldroydArgentinaXuxue Feng NEGOTIATION
Munro FerenczUnited KingdomAsiya Javayant UNQUALIFIED
Smith GlickArgentinaIvan Magalhaes UNQUALIFIED
David DarakjyItalyBernardo Dominic PROPOSAL
Kaitlin OstroskyRussiaElwin Sharvill RENEWAL
Aruna FigeroaItalyIoni Bowcher UNQUALIFIED
Stacey MacleadUnited KingdomAmy Elsner NEGOTIATION
Maisha RulapaughArgentinaXuxue Feng NEGOTIATION
Alejandro PerinAustraliaIoni Bowcher QUALIFIED
Claire TollnerAustraliaAsiya Javayant NEGOTIATION
Ricardo GauchoGermanyAmy Elsner NEW
Cody SaylorsAustraliaAmy Elsner PROPOSAL
Aditya KuskoFranceIoni Bowcher NEW
Kaitlin OstroskyAustraliaBernardo Dominic UNQUALIFIED
Murillo MaletCanadaAmy Elsner NEGOTIATION
Nicolas IturbideIndiaAsiya Javayant QUALIFIED
Leja CaldareraIndiaOnyama Limba NEW
Octavia MaletArgentinaElwin Sharvill NEW
Jefferson SchemmerItalyAmy Elsner RENEWAL
Mayumi KolmetzArgentinaOnyama Limba RENEWAL
Misaki RoysterBrazilBernardo Dominic PROPOSAL
Kadeem FlosiBrazilElwin Sharvill UNQUALIFIED
Claire TollnerItalyBernardo Dominic RENEWAL
Stacey MacleadBrazilAsiya Javayant UNQUALIFIED
Juan WieserSpainAsiya Javayant NEW
Mayumi KolmetzUnited KingdomAsiya Javayant RENEWAL
Kadeem FlosiArgentinaOnyama Limba PROPOSAL
Nicolas IturbideGermanyXuxue Feng QUALIFIED
Juan WieserJapanIoni Bowcher QUALIFIED
Ivar PaprockiArgentinaAsiya Javayant PROPOSAL
Jefferson SchemmerArgentinaAnna Fali NEGOTIATION
Aika InouyeAustraliaIoni Bowcher RENEWAL
Deepesh ChuiCanadaAmy Elsner RENEWAL
Nicolas IturbideBrazilBernardo Dominic NEW
Kaitlin OstroskyIndiaIoni Bowcher RENEWAL
Greenwood BologniaFranceElwin Sharvill NEW
Rodrigues CampainJapanAmy Elsner RENEWAL
Mujtaba NickaIndiaBernardo Dominic UNQUALIFIED
Faith GillianIndiaAnna Fali NEW
Silvio SlusarskiCanadaAnna Fali UNQUALIFIED
David DarakjyArgentinaOnyama Limba UNQUALIFIED
David DarakjyGermanyAnna Fali PROPOSAL
Mayumi KolmetzGermanyStephen Shaw NEGOTIATION
Jeanfrancois VenereRussiaIoni Bowcher RENEWAL
Aika InouyeIndiaAsiya Javayant NEGOTIATION
Leja CaldareraAustraliaOnyama Limba NEW
Leon OldroydArgentinaBernardo Dominic NEW
Horizontal
NameCountryRepresentativeStatus
Kadeem FlosiItalyIvan Magalhaes UNQUALIFIED
Antonio CaudyCanadaOnyama Limba PROPOSAL
Alejandro PerinIndiaBernardo Dominic NEGOTIATION
Jeanfrancois VenereUnited KingdomAnna Fali RENEWAL
David DarakjyUnited KingdomAmy Elsner PROPOSAL
Aditya KuskoRussiaElwin Sharvill NEW
Adams MorascaGermanyElwin Sharvill NEGOTIATION
Tony FollerRussiaIoni Bowcher RENEWAL
Murillo MaletArgentinaIoni Bowcher QUALIFIED
Morrow RutaFranceAmy Elsner NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leon OldroydFrance2026-05-08Rangoni Of Florence PROPOSAL40Amy Elsner
1001Tony FollerIndia2026-05-20Chapman, Ross E Esq PROPOSAL85Asiya Javayant
1002Aika InouyeRussia2026-06-03Printing Dimensions NEW22Anna Fali
1003Morrow RutaIndia2026-05-25Feltz Printing Service UNQUALIFIED0Xuxue Feng
1004Clifford RimCanada2026-05-17Morlong Associates NEGOTIATION93Anna Fali
1005Francesco ShinkoRussia2026-05-31Feltz Printing Service NEGOTIATION13Bernardo Dominic
1006Misaki RoysterGermany2026-05-21Rousseaux, Michael Esq NEW51Stephen Shaw
1007Maria MarrierGermany2026-06-04Truhlar And Truhlar Attys RENEWAL57Stephen Shaw
1008Aruna FigeroaIndia2026-05-24Buckley Miller Wright NEW37Ioni Bowcher
1009Greenwood BologniaCanada2026-05-07Printing Dimensions PROPOSAL90Xuxue Feng
1010Tony FollerJapan2026-05-23King, Christopher A Esq QUALIFIED21Elwin Sharvill
1011Izzy GarufiCanada2026-05-29Feltz Printing Service NEW85Asiya Javayant
1012Chavez BriddickBrazil2026-05-27Chemel, James L Cpa NEGOTIATION72Xuxue Feng
1013Rodrigues CampainSpain2026-05-31Chemel, James L Cpa NEGOTIATION99Ioni Bowcher
1014Jeanfrancois VenereGermany2026-05-25Dorl, James J Esq QUALIFIED44Onyama Limba
1015Adams MorascaGermany2026-05-08Chanay, Jeffrey A Esq RENEWAL22Onyama Limba
1016Aruna FigeroaItaly2026-05-16Printing Dimensions PROPOSAL88Amy Elsner
1017Kaitlin OstroskyFrance2026-05-14Rousseaux, Michael Esq NEW69Onyama Limba
1018Jeanfrancois VenereItaly2026-06-01Printing Dimensions PROPOSAL81Amy Elsner
1019Nicolas IturbideCanada2026-06-04Feiner Bros RENEWAL59Asiya Javayant
1020Cody SaylorsGermany2026-05-13Buckley Miller Wright NEGOTIATION4Elwin Sharvill
1021Faith GillianGermany2026-05-18Rousseaux, Michael Esq UNQUALIFIED33Anna Fali
1022Adams MorascaFrance2026-05-30Truhlar And Truhlar Attys UNQUALIFIED48Ivan Magalhaes
1023Leon OldroydJapan2026-05-31Feiner Bros NEW74Anna Fali
1024Mujtaba NickaBrazil2026-05-27Chanay, Jeffrey A Esq NEW41Onyama Limba
1025Jennifer AmigonAustralia2026-05-19Benton, John B Jr NEW66Anna Fali
1026Tony FollerBrazil2026-06-01King, Christopher A Esq NEGOTIATION6Elwin Sharvill
1027Jefferson SchemmerGermany2026-05-08Chapman, Ross E Esq NEW58Onyama Limba
1028Aditya KuskoRussia2026-06-03Rangoni Of Florence QUALIFIED29Stephen Shaw
1029Maisha RulapaughIndia2026-05-19Truhlar And Truhlar Attys NEW29Bernardo Dominic
1030Silvio SlusarskiItaly2026-05-30Feltz Printing Service NEGOTIATION90Stephen Shaw
1031Ivar PaprockiUnited Kingdom2026-05-08Buckley Miller Wright PROPOSAL89Elwin Sharvill
1032Deepesh ChuiRussia2026-05-07Chapman, Ross E Esq NEGOTIATION87Stephen Shaw
1033Mayumi KolmetzJapan2026-05-30Chanay, Jeffrey A Esq NEW76Elwin Sharvill
1034Mayumi KolmetzBrazil2026-05-20Chemel, James L Cpa PROPOSAL79Ivan Magalhaes
1035Wickens NestleBrazil2026-05-18Rousseaux, Michael Esq UNQUALIFIED42Onyama Limba
1036Murillo MaletBrazil2026-05-27Chanay, Jeffrey A Esq RENEWAL16Stephen Shaw
1037Silvio SlusarskiBrazil2026-05-21Feiner Bros UNQUALIFIED60Bernardo Dominic
1038Nicolas IturbideArgentina2026-05-23Printing Dimensions NEW75Asiya Javayant
1039Salvatore StockhamCanada2026-05-18Feltz Printing Service NEGOTIATION74Ioni Bowcher
1040Jefferson SchemmerUnited Kingdom2026-05-10Morlong Associates PROPOSAL11Anna Fali
1041Mujtaba NickaItaly2026-05-16Feltz Printing Service QUALIFIED82Elwin Sharvill
1042Juan WieserFrance2026-05-09Rangoni Of Florence NEGOTIATION33Anna Fali
1043Deepesh ChuiIndia2026-05-12Chapman, Ross E Esq PROPOSAL59Bernardo Dominic
1044Wickens NestleGermany2026-05-07Rangoni Of Florence RENEWAL96Elwin Sharvill
1045Mujtaba NickaFrance2026-05-12Printing Dimensions QUALIFIED29Ioni Bowcher
1046Salvatore StockhamSpain2026-05-28Commercial Press RENEWAL67Bernardo Dominic
1047Costa DilliardFrance2026-05-29Truhlar And Truhlar Attys NEW41Ioni Bowcher
1048Aruna FigeroaUnited Kingdom2026-06-05Chanay, Jeffrey A Esq NEW63Ivan Magalhaes
1049Jefferson SchemmerSpain2026-05-12Feltz Printing Service NEGOTIATION25Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Ashley DoeGermanyXuxue Feng PROPOSAL
David DarakjyBrazilXuxue Feng UNQUALIFIED
Jefferson SchemmerUnited KingdomAmy Elsner QUALIFIED
Antonio CaudyJapanIvan Magalhaes UNQUALIFIED
Costa DilliardIndiaIoni Bowcher UNQUALIFIED
Jeanfrancois VenereSpainAsiya Javayant QUALIFIED
Antonio CaudyItalyIvan Magalhaes QUALIFIED
Leon OldroydGermanyAnna Fali PROPOSAL
Salvatore StockhamGermanyIoni Bowcher PROPOSAL
Aruna FigeroaCanadaStephen Shaw UNQUALIFIED
Wickens NestleSpainBernardo Dominic RENEWAL
Salvatore StockhamFranceOnyama Limba PROPOSAL
Jefferson SchemmerUnited KingdomBernardo Dominic PROPOSAL
Leon OldroydBrazilAsiya Javayant PROPOSAL
Ricardo GauchoAustraliaAmy Elsner PROPOSAL
Aditya KuskoUnited KingdomElwin Sharvill QUALIFIED
Kadeem FlosiArgentinaElwin Sharvill PROPOSAL
Leon OldroydArgentinaAmy Elsner PROPOSAL
Isabel BowleyArgentinaAsiya Javayant NEW
Aika InouyeIndiaStephen Shaw PROPOSAL
Mayumi KolmetzBrazilBernardo Dominic RENEWAL
Maria MarrierBrazilAmy Elsner RENEWAL
Leja CaldareraItalyAmy Elsner RENEWAL
Murillo MaletCanadaIoni Bowcher UNQUALIFIED
Stacey MacleadGermanyAmy Elsner QUALIFIED
Kadeem FlosiItalyIoni Bowcher PROPOSAL
Mujtaba NickaArgentinaElwin Sharvill PROPOSAL
Munro FerenczItalyStephen Shaw NEGOTIATION
Smith GlickRussiaAnna Fali RENEWAL
Murillo MaletIndiaIoni Bowcher NEGOTIATION
Maisha RulapaughCanadaOnyama Limba QUALIFIED
Smith GlickItalyAnna Fali PROPOSAL
Clifford RimBrazilXuxue Feng PROPOSAL
Leon OldroydUnited KingdomIvan Magalhaes NEGOTIATION
Aruna FigeroaGermanyXuxue Feng PROPOSAL
James ButtIndiaAsiya Javayant QUALIFIED
Emily WhobreyJapanStephen Shaw QUALIFIED
Antonio CaudyUnited KingdomIoni Bowcher UNQUALIFIED
Jeanfrancois VenereArgentinaXuxue Feng RENEWAL
Stacey MacleadSpainBernardo Dominic NEW
Adams MorascaGermanyElwin Sharvill UNQUALIFIED
Leja CaldareraGermanyIvan Magalhaes QUALIFIED
Leon OldroydArgentinaAmy Elsner PROPOSAL
Leja CaldareraAustraliaOnyama Limba UNQUALIFIED
Kaitlin OstroskyJapanAnna Fali PROPOSAL
Jeanfrancois VenereGermanyStephen Shaw UNQUALIFIED
Deepesh ChuiItalyIvan Magalhaes NEW
Costa DilliardGermanyAsiya Javayant NEW
James ButtRussiaIvan Magalhaes NEW
Aditya KuskoSpainAsiya Javayant PROPOSAL
Frozen Columns
Name
Stacey Maclead
Smith Glick
Darci Poquette
Aruna Figeroa
Juan Wieser
Tony Foller
Rodrigues Campain
Morrow Ruta
Faith Gillian
Stacey Maclead
Aruna Figeroa
Maria Marrier
Salvatore Stockham
Jeanfrancois Venere
Deepesh Chui
Jones Vocelka
Jefferson Schemmer
Smith Glick
Jefferson Schemmer
Misaki Royster
Adams Morasca
Tony Foller
Rodrigues Campain
Jennifer Amigon
Darci Poquette
Aruna Figeroa
Kadeem Flosi
Sinclair Waycott
Faith Gillian
Francesco Shinko
Ricardo Gaucho
Wickens Nestle
Ivar Paprocki
Adams Morasca
Nicolas Iturbide
Leja Caldarera
Silvio Slusarski
Chavez Briddick
Silvio Slusarski
Emily Whobrey
Cody Saylors
Izzy Garufi
Darci Poquette
Arvin Albares
Isabel Bowley
Leja Caldarera
Salvatore Stockham
Jones Vocelka
Aika Inouye
Rodrigues Campain
IdCountryDate
1000Spain2026-05-20
1001Brazil2026-05-19
1002Australia2026-05-14
1003Germany2026-05-11
1004United Kingdom2026-05-31
1005Italy2026-05-20
1006Italy2026-05-26
1007Spain2026-05-25
1008Canada2026-05-25
1009India2026-05-28
1010Australia2026-05-12
1011Brazil2026-05-16
1012Spain2026-05-21
1013India2026-05-20
1014India2026-05-19
1015Spain2026-05-26
1016Brazil2026-05-28
1017Russia2026-05-20
1018France2026-06-01
1019Brazil2026-05-26
1020Russia2026-05-28
1021Argentina2026-06-02
1022France2026-05-13
1023Brazil2026-05-25
1024Japan2026-05-26
1025India2026-05-14
1026Russia2026-05-09
1027France2026-05-26
1028Canada2026-05-14
1029United Kingdom2026-06-05
1030Canada2026-05-22
1031Germany2026-05-30
1032Argentina2026-05-11
1033India2026-05-18
1034Canada2026-06-02
1035India2026-05-11
1036Argentina2026-05-27
1037France2026-05-23
1038India2026-05-28
1039Australia2026-05-09
1040France2026-05-25
1041Canada2026-05-10
1042Canada2026-05-25
1043Canada2026-05-17
1044Argentina2026-06-05
1045Spain2026-05-21
1046Italy2026-05-24
1047Argentina2026-05-24
1048Italy2026-05-19
1049United Kingdom2026-06-01

On-Demand Data

NameIdCountryDate
Emily Whobrey1000Brazil2026-05-26
Sinclair Waycott1001France2026-05-16
Silvio Slusarski1002United Kingdom2026-05-25
Johnson Sergi1003Italy2026-05-24
Mayumi Kolmetz1004Japan2026-05-11
David Darakjy1005Argentina2026-05-25
Greenwood Bolognia1006India2026-05-22
Jeanfrancois Venere1007Russia2026-06-02
Ricardo Gaucho1008India2026-05-07
Murillo Malet1009United Kingdom2026-06-01
Kadeem Flosi1010Japan2026-06-02
Aruna Figeroa1011Canada2026-05-28
Isabel Bowley1012United Kingdom2026-05-24
Tony Foller1013France2026-05-15
Jeanfrancois Venere1014Brazil2026-06-02
Greenwood Bolognia1015Russia2026-05-26
Deepesh Chui1016Brazil2026-05-23
Maria Marrier1017France2026-05-19
Wickens Nestle1018Brazil2026-05-31
Sinclair Waycott1019Germany2026-06-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kadeem FlosiBrazilAsiya Javayant PROPOSAL
Octavia MaletBrazilAnna Fali NEW
Tony FollerBrazilAmy Elsner NEGOTIATION
Jennifer AmigonRussiaAnna Fali PROPOSAL
Silvio SlusarskiRussiaAsiya Javayant QUALIFIED
Claire TollnerRussiaBernardo Dominic RENEWAL
Juan WieserFranceXuxue Feng PROPOSAL
Francesco ShinkoIndiaIoni Bowcher QUALIFIED
Mujtaba NickaFranceAnna Fali UNQUALIFIED
Ivar PaprockiSpainElwin Sharvill UNQUALIFIED
Francesco ShinkoBrazilBernardo Dominic NEGOTIATION
Mujtaba NickaSpainBernardo Dominic QUALIFIED
Aika InouyeUnited KingdomAmy Elsner PROPOSAL
Mujtaba NickaRussiaStephen Shaw RENEWAL
Kaitlin OstroskyJapanIoni Bowcher NEW
Kaitlin OstroskyItalyIoni Bowcher NEGOTIATION
Aditya KuskoRussiaAmy Elsner PROPOSAL
Aditya KuskoUnited KingdomElwin Sharvill NEGOTIATION
Deepesh ChuiItalyAnna Fali RENEWAL
Deepesh ChuiCanadaXuxue Feng RENEWAL
Jefferson SchemmerRussiaAnna Fali NEW
Antonio CaudyBrazilXuxue Feng NEW
Alejandro PerinUnited KingdomBernardo Dominic PROPOSAL
Smith GlickAustraliaElwin Sharvill NEW
Sinclair WaycottJapanElwin Sharvill NEGOTIATION
Mayumi KolmetzItalyBernardo Dominic RENEWAL
James ButtItalyOnyama Limba RENEWAL
Jefferson SchemmerCanadaAnna Fali NEW
Stacey MacleadItalyElwin Sharvill QUALIFIED
Francesco ShinkoGermanyStephen Shaw QUALIFIED
Johnson SergiCanadaAnna Fali NEGOTIATION
Smith GlickIndiaIoni Bowcher RENEWAL
Rodrigues CampainJapanAmy Elsner PROPOSAL
Rodrigues CampainGermanyAnna Fali NEW
Faith GillianBrazilBernardo Dominic UNQUALIFIED
Alejandro PerinAustraliaIoni Bowcher NEW
Greenwood BologniaFranceXuxue Feng NEGOTIATION
Octavia MaletRussiaBernardo Dominic NEGOTIATION
Mujtaba NickaAustraliaElwin Sharvill NEW
Morrow RutaSpainElwin Sharvill 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>