Java Reference
In-Depth Information
action="#{theatreBooker.bookSeat(_seat.id)}" [4]
disabled="#{_seat.booked}"
value="#{_seat.booked ? 'Reserved' :
'Book'}" />
</h:column>
</h:dataTable>
</h:panelGrid>
</h:form>
</ui:define>
</ui:composition>
The
ui:composition
element is a templating tag that wraps content to be included in
another Facelet. Specifically, it will be included in the
default.xhtml[1]
template.
The creation of the view is done in three steps. First, we will display the customer's
money
[2]
, which is bound to the session variable called
money
.
Note
Notice how we directly reference CDI Beans (for example,
TheatreBooker
) from JSF
expressions, just as we used to do with JSF Managed Beans.
The next thing on the checklist is printing all JSF messages
[3]
that are meant to be pro-
duced by the application via the
messages
element.
The main task of this view is to produce a view of all tickets and let the users purchase
them. This is achieved by means of a
dataTable
object
[3]
that can be used to produce
a tabular list of objects, which are generally stored as
java.util.List
in your beans.
Pay attention to the value attribute of the
dataTable
object:
<h:dataTable var="_seat" value="#{seats}"
rendered="#{not empty seats}" styleClass="simpletablestyle">
In this case, we don't directly reference a CDI Bean, but we reference an object that has
been produced by a CDI Bean. To be precise, it has been produced by
TheatreInfo
that, as we have seen, has a
@Produces
and
@Named
annotation on our list of seats: