Skip to content
Snippets Groups Projects
Commit 80bba05c authored by Emmanuel Bruno's avatar Emmanuel Bruno
Browse files

adds add form.

parent 790f1c6c
Branches
No related tags found
No related merge requests found
set-hazelcast-configuration --enabled=true --dynamic=true set-hazelcast-configuration --enabled=true --dynamic=true
add-library /tmp/h2.jar add-library /tmp/h2.jar
create-jdbc-connection-pool --datasourceclassname org.h2.jdbcx.JdbcDataSource --restype javax.sql.ConnectionPoolDataSource --property password=password:user=user:url="jdbc:h2:tcp://db:9092/payara;MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE" My-H2-pool create-jdbc-connection-pool --datasourceclassname org.h2.jdbcx.JdbcDataSource --restype javax.sql.ConnectionPoolDataSource --property password=password:user=user:url="jdbc:h2:tcp://db:9092/payara;MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE;DEFAULT_NULL_ORDERING=HIGH" My-H2-pool
create-jdbc-resource --connectionpoolid My-H2-pool jdbc/my-h2-pool create-jdbc-resource --connectionpoolid My-H2-pool jdbc/my-h2-pool
# set configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.cert-nickname=mycert # set configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.cert-nickname=mycert
...@@ -2,40 +2,51 @@ package fr.univtln.bruno.samples.jee91.dao; ...@@ -2,40 +2,51 @@ package fr.univtln.bruno.samples.jee91.dao;
import jakarta.json.bind.annotation.JsonbTransient; import jakarta.json.bind.annotation.JsonbTransient;
import jakarta.persistence.*; import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import jakarta.xml.bind.annotation.XmlRootElement; import jakarta.xml.bind.annotation.XmlRootElement;
import lombok.AccessLevel; import lombok.*;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
import java.io.Serializable;
import java.util.UUID; import java.util.UUID;
@AllArgsConstructor(staticName = "of")
@NoArgsConstructor
@ToString(onlyExplicitlyIncluded = true)
@Table(name = "PERSON") @Table(name = "PERSON")
@Entity @Entity
@Getter @Getter
@Setter @Setter
@NamedQueries({
@NamedQuery(name = "Person.findAll", @NamedQuery(name = "Person.findAll",
query = "select p from Person p"), query = "select p from Person p")
@NamedQuery( @NamedQuery(
name = "Person.findAllOrderedByName", name = "Person.findAllOrderedByName",
query = "SELECT p FROM Person p ORDER BY p.name"), query = "SELECT p FROM Person p ORDER BY p.name")
@NamedQuery( @NamedQuery(
name = "Person.findByUUID", name = "Person.findByUUID",
query = "SELECT p FROM Person p WHERE p.uuid=:uuid") query = "SELECT p FROM Person p WHERE p.uuid=:uuid")
})
@XmlRootElement @XmlRootElement
@FieldDefaults(level = AccessLevel.PRIVATE) @FieldDefaults(level = AccessLevel.PRIVATE)
public class Person { public class Person implements Serializable {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID") @Column(name = "ID")
@JsonbTransient @JsonbTransient
long id; long id;
@ToString.Include
@Column(name = "NAME") @Column(name = "NAME")
@NotBlank
@Pattern(regexp = "[A-Z][a-z]+", message = "Le nom doit commencer par une majuscule suivie de minuscules")
String name; String name;
@ToString.Include
@Column(name = "UUID", updatable = false, nullable = false, unique = true) @Column(name = "UUID", updatable = false, nullable = false, unique = true)
UUID uuid = UUID.randomUUID(); UUID uuid = UUID.randomUUID();
@Builder
public Person(String name) {
this.name = name;
}
} }
package fr.univtln.bruno.jee91.jsf;
import fr.univtln.bruno.samples.jee91.dao.Person;
import fr.univtln.bruno.samples.jee91.dao.PersonDAO;
import jakarta.faces.application.FacesMessage;
import jakarta.faces.context.FacesContext;
import jakarta.faces.view.ViewScoped;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import jakarta.transaction.Transactional;
import lombok.Getter;
import java.io.Serializable;
@Named
@ViewScoped
public class AddPersonView implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private transient PersonDAO personDAO;
@Getter
private Person newPerson = new Person();
@Getter
private Person addedPerson = new Person();
@Transactional
public void addPerson() {
FacesMessage facesMessage;
personDAO.persist(addedPerson = Person.builder().name(newPerson.getName()).build());
FacesContext.getCurrentInstance().addMessage("growl-id", new FacesMessage(FacesMessage.SEVERITY_INFO, "Person added", addedPerson.getName() + "(" + addedPerson.getUuid() + ")"));
}
}
package fr.univtln.bruno.jee91.jsf;
import jakarta.enterprise.context.RequestScoped;
import jakarta.faces.application.FacesMessage;
import jakarta.faces.context.FacesContext;
import jakarta.inject.Named;
@Named
@RequestScoped
public class GrowlView {
public void addMessage(FacesMessage.Severity severity, String summary, String detail) {
FacesContext.getCurrentInstance().
addMessage(null, new FacesMessage(severity, summary, detail));
}
public void showInfo() {
addMessage(FacesMessage.SEVERITY_INFO, "Info Message", "Message Content");
}
public void showWarn() {
addMessage(FacesMessage.SEVERITY_WARN, "Warn Message", "Message Content");
}
public void showError() {
addMessage(FacesMessage.SEVERITY_ERROR, "Error Message", "Message Content");
}
public void showSticky() {
FacesContext.getCurrentInstance().addMessage("sticky-key", new FacesMessage(FacesMessage.SEVERITY_INFO, "Sticky Message", "Message Content"));
}
public void showMultiple() {
addMessage(FacesMessage.SEVERITY_INFO, "Message 1", "Message Content");
addMessage(FacesMessage.SEVERITY_INFO, "Message 2", "Message Content");
addMessage(FacesMessage.SEVERITY_INFO, "Message 3", "Message Content");
}
}
\ No newline at end of file
...@@ -10,7 +10,7 @@ import java.util.List; ...@@ -10,7 +10,7 @@ import java.util.List;
@Named @Named
@RequestScoped @RequestScoped
public class SampleBean { public class ViewPersonBean {
@Inject @Inject
PersonDAO personDAO; PersonDAO personDAO;
...@@ -24,4 +24,5 @@ public class SampleBean { ...@@ -24,4 +24,5 @@ public class SampleBean {
public List<Person> getPersons() { public List<Person> getPersons() {
return personDAO.findAll(); return personDAO.findAll();
} }
} }
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<persistence-unit name="myappPU" transaction-type="JTA"> <persistence-unit name="myappPU" transaction-type="JTA">
<jta-data-source>jdbc/my-h2-pool</jta-data-source> <jta-data-source>jdbc/my-h2-pool</jta-data-source>
<class>fr.univtln.bruno.samples.jee91.dao.Person</class> <class>fr.univtln.bruno.samples.jee91.dao.Person</class>
<validation-mode>CALLBACK</validation-mode>
<properties> <properties>
<property name="jakarta.persistence.schema-generation.database.action" value="drop-and-create" /> <property name="jakarta.persistence.schema-generation.database.action" value="drop-and-create" />
<property name="jakarta.persistence.schema-generation.scripts.action" value="drop-and-create" /> <property name="jakarta.persistence.schema-generation.scripts.action" value="drop-and-create" />
......
...@@ -3,10 +3,10 @@ ...@@ -3,10 +3,10 @@
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
version="5.0"> version="5.0">
<context-param> <!--context-param>
<param-name>jakarta.faces.PROJECT_STAGE</param-name> <param-name>jakarta.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value> <param-value>Development</param-value>
</context-param> </context-param-->
<servlet> <servlet>
<servlet-name>Faces Servlet</servlet-name> <servlet-name>Faces Servlet</servlet-name>
...@@ -26,4 +26,19 @@ ...@@ -26,4 +26,19 @@
<welcome-file-list> <welcome-file-list>
<welcome-file>index.xhtml</welcome-file> <welcome-file>index.xhtml</welcome-file>
</welcome-file-list> </welcome-file-list>
<mime-mapping>
<extension>woff</extension>
<mime-type>application/font-woff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ttf</extension>
<mime-type>application/x-font-ttf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>eot</extension>
<mime-type>application/vnd.ms-fontobject</mime-type>
</mime-mapping>
</web-app> </web-app>
\ No newline at end of file
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head></h:head>
<h:body>
<div class="card">
<h:form>
<h3 class="p-mt-0">Add a person</h3>
<p:growl id="growl" for="growl-id" showDetail="true" skipDetailIfEqualsSummary="true"/>
<h:panelGrid columns="3" cellpadding="7">
<p:outputLabel for="fieldName" value="Name"/>
<p:inputText id="fieldName" value="#{addPersonView.newPerson.name}"/>
<p:message for="fieldName"/>
<p:commandButton value="Save" ajax="false" icon="pi pi-check" validateClient="true" styleClass="p-mr-3" action="#{addPersonView.addPerson}"/>
</h:panelGrid>
</h:form>
</div>
</h:body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<p:spinner />
<div class="card">
<h:form>
<p:growl id="growl" showDetail="true"/>
<p:growl id="growl-sticky" for="sticky-key" showDetail="true" sticky="true"/>
<h5 class="p-mt-0">Severities</h5>
<p:commandButton actionListener="#{growlView.showInfo}" update="growl" value="Info" styleClass="p-mr-2"
style="width: 10rem"/>
<p:commandButton actionListener="#{growlView.showWarn}" update="growl" value="Warn"
styleClass="p-mr-2 ui-button-warning" style="width: 10rem"/>
<p:commandButton actionListener="#{growlView.showError}" update="growl" value="Error"
styleClass="ui-button-danger" style="width: 10rem"/>
<h5>Multiple</h5>
<p:commandButton actionListener="#{growlView.showMultiple}" update="growl" value="Multiple" style="width: 10rem"
styleClass="ui-button-outlined"/>
<h5>Sticky</h5>
<p:commandButton actionListener="#{growlView.showSticky}" update="growl-sticky" value="Info"
style="width: 10rem" styleClass="ui-button-help"/>
</h:form>
</div>
</h:body>
</html>
\ No newline at end of file
<!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" <html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core" xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui" xmlns:p="http://primefaces.org/ui">
>
<h:head> <h:head>
<title>Hello World JSF 3</title>
</h:head> </h:head>
<h:body> <h:body>
<h3 style="text-align: center">#{sampleBean.message}</h3> <h3 style="text-align: center">#{viewPersonBean.message}</h3>
<h:dataTable value="#{sampleBean.persons}" var="person"
styleClass="order-table"
headerClass="order-table-header"
rowClasses="order-table-odd-row,order-table-even-row">
<h:column>
<f:facet name="header">UUID</f:facet>
#{person.uuid}
</h:column>
<h:column>
<f:facet name="header">Name</f:facet>
#{person.name}
</h:column>
</h:dataTable>
<h:form>
<div class="card"> <div class="card">
<p:dataTable var="person" value="#{sampleBean.persons}"> <p:dataTable var="person" value="#{viewPersonBean.persons}">
<p:column headerText="UUID"> <p:column headerText="UUID">
<h:outputText value="#{person.uuid}"/> <h:outputText value="#{person.uuid}"/>
</p:column> </p:column>
...@@ -40,7 +21,6 @@ ...@@ -40,7 +21,6 @@
</p:column> </p:column>
</p:dataTable> </p:dataTable>
</div> </div>
</h:form>
</h:body> </h:body>
</html> </html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<p:spinner />
</h:body>
</html>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment