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