- Request scoped page navigation
- @Named
- @RequestScoped
- public class SeminarController {
- @Inject
- private SeminarDao seminarDao;
- private int seminarID;
- private Seminar seminar;
- ...
- // Getters and setters
- ...
- public Collection<Seminar> getSeminars() {...}
- public Collection<Seminar> getUpcomingSeminars() {...}
- public void initSeminar() {
- seminar = seminarDao.findSeminar(seminarID);
- }
- public String save() {
- seminarDao.save(seminar);
- return "details";
- }
- }
- <ul>
- <ui:repeat value="#{seminarController.upcomingSeminars}" var="seminar">
- <li>
- <h:link value="#{seminar.title}" outcome="details">
- <f:param name="id" value="#{seminar.seminarID}"/>
- </h:link>
- on
- <h:outputText value="#{seminar.eventDate}"/>
- </li>
- </ui:repeat>
- </ul>
- <f:metadata>
- <f:viewParam name="id" value="#{seminarController.seminarID}"/>
- <f:event type="preRenderView" listener="#{seminarController.initSeminar}"/>
- </f:metadata>
- <ui:define name="body">
- <h2>#{seminarController.seminar.title}</h2>
- <p>
- <strong>When:</strong>
- #{seminarController.seminar.eventDate}
- </p>
- <p>
- <strong>Where:</strong>
- #{seminarController.seminar.address},
- #{seminarController.seminar.country}
- </p>
- ...
- <p>
- <h:link value="Edit" outcome="edit">
- <f:param name="id" value="#{seminarController.seminarID}"/>
- </h:link> |
- <h:link value="Back to List" outcome="index"/>
- </p>
- <f:metadata>
- <f:viewParam name="id" value="#{seminarController.seminarID}"/>
- <f:event type="preRenderView" listener="#{seminarController.initSeminar}"/>
- </f:metadata>
- <ui:define name="body">
- <h:form>
- <h:messages title="Please correct the errors and try again."/>
- <fieldset>
- <h:panelGroup class="editor-label" layout="block">
- <h:outputLabel value="Seminar Title:" for="title"/>
- </h:panelGroup>
- <h:panelGroup class="editor-field" layout="block">
- <h:inputText id="title" value="#{seminarController.seminar.title}"/>
- <h:message for="title" title="*"/>
- </h:panelGroup>
- ...
- <p>
- <h:commandButton value="Save" action="#{seminarController.save}">
- <f:param id="id" value="#{seminarController.seminar.seminarID}"/>
- </h:commandButton>
- </p>
- </fieldset>
- </h:form>
- @Entity
- public class Seminar {
- @Id
- private int seminarID;
- @Column
- private String title;
- @Column
- private Date eventDate; // Date when the seminar occurs
- @Column
- private Date createdDate; // Not visible in forms
- ...
- // Some more fields and Getters/Setters
- }
- @PostConstruct
- public void init() {
- if (FacesContext.getCurrentInstance().isPostback()) {
- seminar = new Seminar();
- } else {
- seminar = seminarDao.findSeminar(seminarID);
- }
- }
- public void setSeminarID(int seminarID) {
- if (this.seminarID != seminarID) {
- seminar = seminarDao.findSeminar(seminarID);
- this.seminarID = seminarID;
- }
- }
- public String save() {
- seminarDao.save(seminar);
- return "details?faces-redirect=true&includeViewParams=true";
- }
- @PostConstruct
- public void init() {
- if (FacesContext.getCurrentInstance().isPostback()) {
- seminar = new Seminar();
- }
- }