Java/JSF - jak połączyć widok z listą ?

0

Hej,
piszę prostą apkę webową z wykorzystaniem wzorca mvc, robię font z wykorzystaniem JSF i komponentów primefaces. Nie mam bazy danych, wszystkie dane będą przechowywane w liście. Front nie widzi moich tabelek, nie wiem jak mam go połączyć z listą. Wklejam poniżej mój kod, może jakieś mądre głowy mi poradzą co jest nie tak.

mój model:

package model;

import java.io.Serializable;
import java.time.LocalDate;
import java.util.UUID;

public class Client{ 

    private String uniqueId;

    private LocalDate creationDate;

    private String firstName;

    private String lastName;

    private String phoneNumber;

    private String comment;

    public Client(String firstName, String lastName, String phoneNumber, String comment) {
        this.uniqueId = UUID.randomUUID().toString();
        this.creationDate = LocalDate.now() ;
        this.firstName = firstName;
        this.lastName = lastName;
        this.phoneNumber = phoneNumber;
        this.comment = comment;
    }

    public Client() {

    }

    public String getUniqueId() {
        return uniqueId;
    }

    public void setUniqueId(String uniqueId) {
        this.uniqueId = uniqueId;
    }

    public LocalDate getCreationDate() {
        return creationDate;
    }

    public void setCreationDate(LocalDate creationDate) {
        this.creationDate = creationDate;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public String getComment() {
        return comment;
    }

    public void setComment(String comment) {
        this.comment = comment;
    }

}

Controller:

package controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import model.Client;

@ManagedBean(name = "clientController")
@ViewScoped
public class ClientController implements Serializable {
      
   public List<Client> findAll(){
       List<Client> list = new ArrayList<Client>();
       list.add(new Client("Janusz", "Nowak", "6666", "abc")); 
       list.add(new Client("Janusz", "Nowak", "6666", "abc")); 
       list.add(new Client("Janusz", "Nowak", "6666", "abc"));
       return list;
   } 
   
            
    public ClientController() { 
    }
    
}

View - tutaj wyświetla mi się tylko pole search, nie ma listy.

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://xmlns.jcp.org/jsf/core">
    <h:head>
        <title>4:09</title>
    </h:head>
    <h:body>
        Hello from Facelets
        <h:form id="form">
            <p:growl id="msg" showDetail="true"/>
            
            <p:dataTable widgetVar="clientTable" var="client" value="#{clientController.findAll()}">

                <f:facet name="header">
                    <h:outputText value="Search"/>
                    <p:inputText id="globalFilter" onkeyup="PF('clientTable').filter()" style="width: 150px" placeholder="enter"/>
                </f:facet>

            </p:dataTable>

            <p:column sortBy="#{client.uniqueId}" filterBy="#{client.uniqueId}">
                <f:facet name="header" >ID</f:facet>
                <h:outputText value="#{client.uniqueId}"/>
            </p:column>

            <p:column sortBy="#{client.creationDate}" filterBy="#{client.creationDate}">
                <f:facet name="header" >Date</f:facet>
                <h:outputText value="#{client.creationDate}"/>
            </p:column>

            <p:column sortBy="#{client.firstName}" filterBy="#{client.firstName}">
                <f:facet name="header" >Name</f:facet>
                <h:outputText value="#{client.firstName}"/>
            </p:column>


            <p:column sortBy="#{client.lastName}" filterBy="#{client.lastName}">
                <f:facet name="header" >Surname</f:facet>
                <h:outputText value="#{client.lastName}"/>
            </p:column>


            <p:column sortBy="#{client.phoneNumber}" filterBy="#{client.phoneNumber}">
                <f:facet name="header" >Phone</f:facet>
                <h:outputText value="#{client.phoneNumber}"/>
            </p:column>

            <p:column sortBy="#{client.comment}" filterBy="#{client.comment}">
                <f:facet name="header" >Comment </f:facet>
                <h:outputText value="#{client.comment}"/>
            </p:column>

        </h:form>

    </h:body>
</html>

```html
1

Masz wszystko dobrze, tylko p:column musi być wewnątrz p:dataTable. Tak jak w przykładzie.

0

Właśnie zauważyłam, rany.. dzięki wielkie!!! :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1