- Check the calendar widget and the tooltips on the credit card fields. - The form uses Ajax-based validations to redisplay server-side errors without refreshing the entire page. - The booking bean backing the form is a flow-scoped object (see booking-flow.xml). -
-
-
-
-
-
-
-
-
- Note that the command button actions raise events (e.g. "revise") instead of specifying method expressions. - The events result in transitions on the server side (see reviewBooking state in booking-flow.xml). -
-
-
-
-
-
- #{booking.creditCard} -
-- This page uses the PrimeFaces panel component to display a search form. - Mouse over the "Search String" field to see its tooltip. - If you are logged a second panel will show your current bookings. - Both panels can be toggled on and off. -
-- Clicking "Book" will launch the booking sub-flow (see the subflow state in main-flow.xml). -
-- The booking flow is protected with Spring Security (see the secured attribute in booking-flow.xml). -
-- Clicking "Back to Search" will take you to the stateful search results. -
-- This page uses the PrimeFaces data table backed by a lazily loaded DataModel (see HotelLazyDataModel.java). - Page navigation is Ajax-based and uses JSF 2 partial rendering. - The name and city columns support forward and reverse sorting. -
-- The DataModel is created and stored in view scope when the view is first entered (see main-flow.xml). - When the user makes a selection, the selection is stored in a flow-scoped "hotel" variable before transitioning to the detail page. -
-- This is a simple standalone JSF page. -
-- Clicking the "Start" link below will launch the main to search for hotels (see main-flow.xml). - The main flow in turn launches the booking sub-flow to book the hotel (see booking-flow.xml). -
-- The main flow is accessible without logging in while the booking flow requires authentication. -
-- Key features illustrated in this sample: -
-- Form-based authentication with Spring Security. - Spring Security is first enabled in web.xml via DelegatingFilterProxy. - It's configuration is located in security-config.xml. - Flow definitions can further be protected using the secured attribute (see booking-flow.xml). -
-Valid username/passwords are:
-