[seam-commits] Seam SVN: r13122 - in examples/trunk/booking-simplified: src/main/resources/META-INF and 3 other directories.

seam-commits at lists.jboss.org seam-commits at lists.jboss.org
Thu Jun 10 18:47:30 EDT 2010


Author: dan.j.allen
Date: 2010-06-10 18:47:30 -0400 (Thu, 10 Jun 2010)
New Revision: 13122

Added:
   examples/trunk/booking-simplified/src/main/webapp/WEB-INF/beans.xml
   examples/trunk/booking-simplified/src/main/webapp/search.xhtml
Removed:
   examples/trunk/booking-simplified/src/main/resources/META-INF/beans.xml
   examples/trunk/booking-simplified/src/main/webapp/META-INF/
   examples/trunk/booking-simplified/src/main/webapp/WEB-INF/lib/
   examples/trunk/booking-simplified/src/main/webapp/main.xhtml
Modified:
   examples/trunk/booking-simplified/
   examples/trunk/booking-simplified/pom.xml
   examples/trunk/booking-simplified/src/main/resources/META-INF/persistence.xml
   examples/trunk/booking-simplified/src/main/webapp/WEB-INF/faces-config.xml
   examples/trunk/booking-simplified/src/main/webapp/WEB-INF/layout/template.xhtml
   examples/trunk/booking-simplified/src/main/webapp/WEB-INF/web.xml
   examples/trunk/booking-simplified/src/main/webapp/password.xhtml
Log:
fix seam-xml-config dependency
fix final name
rename main.xhtml to search.xhtml
move beans.xml to proper location



Property changes on: examples/trunk/booking-simplified
___________________________________________________________________
Name: svn:ignore
   - target
.settings
.classpath
.project

   + target
.settings
.classpath
.project
faces-config.NavData


Modified: examples/trunk/booking-simplified/pom.xml
===================================================================
--- examples/trunk/booking-simplified/pom.xml	2010-06-10 21:06:42 UTC (rev 13121)
+++ examples/trunk/booking-simplified/pom.xml	2010-06-10 22:47:30 UTC (rev 13122)
@@ -48,13 +48,18 @@
          <groupId>org.jboss.seam.faces</groupId>
          <artifactId>seam-faces</artifactId>
          <version>3.0.0.Alpha3</version>
-         <scope>runtime</scope>
       </dependency>
 
       <dependency>
          <groupId>org.jboss.seam.xml</groupId>
          <artifactId>seam-xml-config</artifactId>
          <version>3.0.0.Alpha2</version>
+         <exclusions>
+            <exclusion>
+               <groupId>javax.enterprise</groupId>
+               <artifactId>cdi-api</artifactId>
+            </exclusion>
+         </exclusions>
       </dependency>
 
       <dependency>
@@ -79,10 +84,7 @@
 
    <build>
       <defaultGoal>package</defaultGoal>
-      <finalName>weld-permalink</finalName>
-      <!--
       <finalName>${project.artifactId}</finalName>
-      -->
       <plugins>
 
          <plugin>

Deleted: examples/trunk/booking-simplified/src/main/resources/META-INF/beans.xml
===================================================================

Modified: examples/trunk/booking-simplified/src/main/resources/META-INF/persistence.xml
===================================================================
--- examples/trunk/booking-simplified/src/main/resources/META-INF/persistence.xml	2010-06-10 21:06:42 UTC (rev 13121)
+++ examples/trunk/booking-simplified/src/main/resources/META-INF/persistence.xml	2010-06-10 22:47:30 UTC (rev 13122)
@@ -5,7 +5,7 @@
    version="1.0">
    <persistence-unit name="booking">
       <provider>org.hibernate.ejb.HibernatePersistence</provider>
-      <jta-data-source>bookingDatasource</jta-data-source>
+      <jta-data-source>jdbc/__default</jta-data-source>
       <properties>
          <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
          <property name="hibernate.show_sql" value="true"/>

Copied: examples/trunk/booking-simplified/src/main/webapp/WEB-INF/beans.xml (from rev 13121, examples/trunk/booking-simplified/src/main/resources/META-INF/beans.xml)
===================================================================

Modified: examples/trunk/booking-simplified/src/main/webapp/WEB-INF/faces-config.xml
===================================================================
--- examples/trunk/booking-simplified/src/main/webapp/WEB-INF/faces-config.xml	2010-06-10 21:06:42 UTC (rev 13121)
+++ examples/trunk/booking-simplified/src/main/webapp/WEB-INF/faces-config.xml	2010-06-10 22:47:30 UTC (rev 13122)
@@ -17,7 +17,7 @@
       <navigation-case>
          <from-action>#{bookingAgent.cancel}</from-action>
          <if>#{true}</if>
-         <to-view-id>/main.xhtml</to-view-id>
+         <to-view-id>/search.xhtml</to-view-id>
          <redirect/>
       </navigation-case>
 
@@ -29,27 +29,27 @@
       <navigation-case>
          <from-action>#{identity.login}</from-action>
          <if>#{identity.loggedIn}</if>
-         <to-view-id>/main.xhtml</to-view-id>
+         <to-view-id>/search.xhtml</to-view-id>
          <redirect/>
       </navigation-case>
 
    </navigation-rule>
 
    <navigation-rule>
-      <from-view-id>/main.xhtml</from-view-id>
+      <from-view-id>/search.xhtml</from-view-id>
 
       <!-- navigation rules are required to reset request-scoped producer variables -->
       <!--
       <navigation-case>
          <from-action>#{hotelSearch.find}</from-action>
          <if>#{true}</if>
-         <to-view-id>/main.xhtml</to-view-id>
+         <to-view-id>/search.xhtml</to-view-id>
          <redirect/>
       </navigation-case>
       <navigation-case>
          <from-action>#{hotelSearch.nextPage}</from-action>
          <if>#{true}</if>
-         <to-view-id>/main.xhtml</to-view-id>
+         <to-view-id>/search.xhtml</to-view-id>
          <redirect/>
       </navigation-case>
       -->
@@ -93,7 +93,7 @@
       <navigation-case>
          <from-action>#{bookingAgent.confirm}</from-action>
          <if>#{true}</if>
-         <to-view-id>/main.xhtml</to-view-id>
+         <to-view-id>/search.xhtml</to-view-id>
          <redirect/>
       </navigation-case>
 

Modified: examples/trunk/booking-simplified/src/main/webapp/WEB-INF/layout/template.xhtml
===================================================================
--- examples/trunk/booking-simplified/src/main/webapp/WEB-INF/layout/template.xhtml	2010-06-10 21:06:42 UTC (rev 13121)
+++ examples/trunk/booking-simplified/src/main/webapp/WEB-INF/layout/template.xhtml	2010-06-10 22:47:30 UTC (rev 13122)
@@ -22,7 +22,7 @@
                   #{' '}
                   <h:link id="about" outcome="/home.xhtml" value="About"/>
                   #{' | '}
-                  <h:link id="search" outcome="/main.xhtml" value="Search"/>
+                  <h:link id="search" outcome="/search.xhtml" value="Search"/>
                   <h:panelGroup rendered="#{identity.loggedIn}">
                      #{' | '}
                      <h:link id="settings" outcome="/password.xhtml" value="Settings"/>

Modified: examples/trunk/booking-simplified/src/main/webapp/WEB-INF/web.xml
===================================================================
--- examples/trunk/booking-simplified/src/main/webapp/WEB-INF/web.xml	2010-06-10 21:06:42 UTC (rev 13121)
+++ examples/trunk/booking-simplified/src/main/webapp/WEB-INF/web.xml	2010-06-10 22:47:30 UTC (rev 13122)
@@ -7,16 +7,9 @@
    <display-name>Seam Booking Example (Java EE Environment)</display-name>
 
    <context-param>
-      <param-name>facelets.DEVELOPMENT</param-name>
-      <param-value>true</param-value>
-   </context-param>
-   
-   <!--
-   <context-param>
       <param-name>javax.faces.PROJECT_STAGE</param-name>
       <param-value>Development</param-value>
    </context-param>
-   -->
 
    <servlet>
       <servlet-name>Faces Servlet</servlet-name>

Deleted: examples/trunk/booking-simplified/src/main/webapp/main.xhtml
===================================================================
--- examples/trunk/booking-simplified/src/main/webapp/main.xhtml	2010-06-10 21:06:42 UTC (rev 13121)
+++ examples/trunk/booking-simplified/src/main/webapp/main.xhtml	2010-06-10 22:47:30 UTC (rev 13122)
@@ -1,178 +0,0 @@
-<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<ui:composition xmlns="http://www.w3.org/1999/xhtml"
-   xmlns:ui="http://java.sun.com/jsf/facelets"
-   xmlns:f="http://java.sun.com/jsf/core"
-   xmlns:h="http://java.sun.com/jsf/html"
-   xmlns:s="http://jboss.com/products/seam/taglib"
-   template="/WEB-INF/layout/template.xhtml">
-
-   <ui:define name="head">
-      <script type="text/javascript">
-function controlSpinner(behavior)
-{
-   if (behavior.name == 'begin')
-   {
-      document.getElementById('activity').style.display = 'inline'; 
-   }
-   else if (behavior.name == 'complete')
-   {
-      document.getElementById('activity').style.display = 'none'; 
-   }
-}
-      </script>
-   </ui:define>
-
-   <ui:define name="content">
-
-      <div class="section">
-  
-         <span class="errors">
-            <h:messages id="messages" globalOnly="true"/>
-         </span>
-    
-         <h1>Search Hotels</h1>
-
-         <h:form id="searchForm" prependId="false">
-            <fieldset> 
-               <h:inputText id="query" value="#{searchCriteria.query}" style="width: 165px;">
-                  <f:ajax event="keyup" listener="#{hotelSearch.find}" render="searchResults" onevent="controlSpinner"/>
-               </h:inputText>
-               #{' '}
-               <h:commandButton id="findHotels" value="Find Hotels" action="#{hotelSearch.find}">
-                  <f:ajax execute="query" render="searchResults" onevent="controlSpinner"/>
-               </h:commandButton>
-               #{' '}
-               <span id="activity" style="display: none;"><h:graphicImage id="spinner" value="/img/spinner.gif"/></span>
-               <br/>
-               <h:outputLabel id="lblPageSize" for="pageSize" value="Maximum results:"/>
-               #{' '}
-               <h:selectOneMenu id="pageSize" value="#{searchCriteria.pageSize}">
-                  <f:ajax listener="#{hotelSearch.find}" render="searchResults" onevent="controlSpinner"/>
-                  <f:selectItem itemLabel="5" itemValue="5"/>
-                  <f:selectItem itemLabel="10" itemValue="10"/>
-                  <f:selectItem itemLabel="20" itemValue="20"/>
-               </h:selectOneMenu>
-            </fieldset>
-         </h:form>
-      </div>
-
-      <h:panelGroup id="searchResults">
-         <div class="section">
-            <h:outputText id="noHotelsMsg" value="No Hotels Found" rendered="#{empty hotels}"/>
-            <h:form id="hotelSelectionForm">
-               <h:dataTable id="hotels" value="#{hotels}" var="_hotel" rendered="#{not empty hotels}"
-                  columnClasses=",,,,action">
-                  <h:column id="nameCol">
-                     <f:facet id="nameFct" name="header">Hotel name</f:facet>
-                     #{_hotel.name}
-                  </h:column>
-                  <h:column id="addrCol">
-                     <f:facet id="addrFct" name="header">Address</f:facet>
-                     #{_hotel.address}
-                  </h:column>
-                  <h:column id="locCol">
-                     <f:facet id="locFct" name="header">Location</f:facet>
-                     #{_hotel.location}
-                  </h:column> 
-                  <h:column id="zipCol">
-                     <f:facet id="zipFct" name="header">Zip</f:facet>
-                     #{_hotel.zip}
-                  </h:column>
-                  <h:column id="actCol">
-                     <f:facet id="actFct" name="header">Action</f:facet>
-                     <h:commandLink id="view" value="View" action="#{bookingAgent.selectHotel(_hotel)}" style="white-space: nowrap;"/>
-                     <ui:remove><!--
-                     <h:commandButton id="view" value="View" action="#{bookingAgent.selectHotel(_hotel)}"/>
-                     --></ui:remove>
-                  </h:column>
-               </h:dataTable>
-            </h:form>
-            <h:form id="paginationForm">
-               <h:commandButton id="previousResults" value="Previous page" action="#{hotelSearch.previousPage}" rendered="#{hotelSearch.previousPageAvailable}">
-                  <f:ajax render="searchResults" onevent="controlSpinner"/>
-               </h:commandButton>
-               #{' '}
-               <h:commandButton id="moreResults" value="More results" action="#{hotelSearch.nextPage}" rendered="#{hotelSearch.nextPageAvailable}">
-                  <f:ajax render="searchResults" onevent="controlSpinner"/>
-               </h:commandButton>
-               <ui:remove><!--
-               <h:commandLink id="previousResults" value="Previous page" action="#{hotelSearch.previousPage}" rendered="#{hotelSearch.previousPageAvailable}">
-                  <f:ajax render="searchResults" onevent="controlSpinner"/>
-               </h:commandLink>
-               #{' '}
-               <h:commandLink id="moreResults" value="More results" action="#{hotelSearch.nextPage}" rendered="#{hotelSearch.nextPageAvailable}">
-                  <f:ajax render="searchResults" onevent="controlSpinner"/>
-               </h:commandLink>
-               --></ui:remove>
-            </h:form>
-         </div>
-      </h:panelGroup>
-
-      <div class="section">
-         <h1>Current Hotel Bookings</h1>
-      </div>
-      <div class="section">
-         <h:panelGroup rendered="#{not identity.loggedIn}">
-            You must be logged in to see the list of your hotel bookings.
-         </h:panelGroup>
-         <h:form id="bookings" rendered="#{identity.loggedIn}">
-            <h:outputText value="No bookings found." rendered="#{bookings.size == 0}"/>
-            <h:dataTable id="bookings" value="#{bookings}" var="_booking" rendered="#{bookings.size gt 0}">
-               <h:column id="nameCol">
-                  <f:facet id="nameFct" name="header">Hotel name</f:facet>
-                  #{_booking.hotel.name}
-               </h:column>
-               <h:column id="locCol">
-                  <f:facet id="locFct" name="header">Location</f:facet>
-                  #{_booking.hotel.location}
-               </h:column>
-               <h:column id="inCol">
-                  <f:facet id="inCol" name="header">Check-in date</f:facet>
-                  <h:outputText value="#{_booking.checkinDate}">
-                     <f:convertDateTime type="date" pattern="MM/dd/yyyy"/>
-                  </h:outputText>
-               </h:column>
-               <h:column id="outCol">
-                  <f:facet id="outFct" name="header">Check-out date</f:facet>
-                  <h:outputText value="#{_booking.checkoutDate}">
-                     <f:convertDateTime type="date" pattern="MM/dd/yyyy"/>
-                  </h:outputText>
-               </h:column>
-               <h:column id="idCol">
-                  <f:facet id="idFct" name="header">Confirmation number</f:facet>
-                  #{_booking.id}
-               </h:column>
-               <h:column id="actCol">
-                  <f:facet id="ActFct" name="header">Action</f:facet>
-                  <h:commandLink id="cancel" value="Cancel" action="#{bookingHistory.cancelBooking(_booking)}"/>
-               </h:column>
-            </h:dataTable>
-         </h:form>
-      </div>
-
-   </ui:define>
-
-   <ui:define name="sidebar">
-
-      <h1>State management in Seam</h1>
-      <p>
-         State in Seam is <em>contextual</em>. When you click "Find Hotels", the application
-         retrieves a list of hotels from the database and caches it in the session context. When you
-         navigate to one of the hotel records by clicking the "View Hotel" link, a <em>conversation</em> 
-         begins. The conversation is attached to a particular tab, in a particular browser window. You can
-         navigate to multiple hotels using "open in new tab" or "open in new window" in your web browser.
-         Each window will execute in the context of a different conversation. The application keeps state
-         associated with your hotel booking in the conversation context, which ensures that the concurrent
-         conversations do not interfere with each other.
-      </p>
-
-      <p>
-         <a href="#" onclick="window.open('exp/mainExp.html','exp','width=752,height=500,scrollbars=yes');">
-            How does the search page work?
-         </a>
-      </p>
-
-   </ui:define>
-
-</ui:composition>

Modified: examples/trunk/booking-simplified/src/main/webapp/password.xhtml
===================================================================
--- examples/trunk/booking-simplified/src/main/webapp/password.xhtml	2010-06-10 21:06:42 UTC (rev 13121)
+++ examples/trunk/booking-simplified/src/main/webapp/password.xhtml	2010-06-10 22:47:30 UTC (rev 13122)
@@ -35,7 +35,7 @@
                <div class="buttonBox">
                   <h:commandButton id="change" value="Change" action="#{passwordManager.changePassword}"/>
                   #{' '}
-                  <h:button id="cancel" value="Cancel" outcome="/main.xhtml"/>
+                  <h:button id="cancel" value="Cancel" outcome="/search.xhtml"/>
                </div>
                
             </fieldset>

Copied: examples/trunk/booking-simplified/src/main/webapp/search.xhtml (from rev 13121, examples/trunk/booking-simplified/src/main/webapp/main.xhtml)
===================================================================
--- examples/trunk/booking-simplified/src/main/webapp/search.xhtml	                        (rev 0)
+++ examples/trunk/booking-simplified/src/main/webapp/search.xhtml	2010-06-10 22:47:30 UTC (rev 13122)
@@ -0,0 +1,178 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+   xmlns:ui="http://java.sun.com/jsf/facelets"
+   xmlns:f="http://java.sun.com/jsf/core"
+   xmlns:h="http://java.sun.com/jsf/html"
+   xmlns:s="http://jboss.com/products/seam/taglib"
+   template="/WEB-INF/layout/template.xhtml">
+
+   <ui:define name="head">
+      <script type="text/javascript">
+function controlSpinner(behavior)
+{
+   if (behavior.name == 'begin')
+   {
+      document.getElementById('activity').style.display = 'inline'; 
+   }
+   else if (behavior.name == 'complete')
+   {
+      document.getElementById('activity').style.display = 'none'; 
+   }
+}
+      </script>
+   </ui:define>
+
+   <ui:define name="content">
+
+      <div class="section">
+  
+         <span class="errors">
+            <h:messages id="messages" globalOnly="true"/>
+         </span>
+    
+         <h1>Search Hotels</h1>
+
+         <h:form id="searchForm" prependId="false">
+            <fieldset> 
+               <h:inputText id="query" value="#{searchCriteria.query}" style="width: 165px;">
+                  <f:ajax event="keyup" listener="#{hotelSearch.find}" render=":searchResults" onevent="controlSpinner"/>
+               </h:inputText>
+               #{' '}
+               <h:commandButton id="findHotels" value="Find Hotels" action="#{hotelSearch.find}">
+                  <f:ajax execute="query" render=":searchResults" onevent="controlSpinner"/>
+               </h:commandButton>
+               #{' '}
+               <span id="activity" style="display: none;"><h:graphicImage id="spinner" value="/img/spinner.gif"/></span>
+               <br/>
+               <h:outputLabel id="lblPageSize" for="pageSize" value="Maximum results:"/>
+               #{' '}
+               <h:selectOneMenu id="pageSize" value="#{searchCriteria.pageSize}">
+                  <f:ajax listener="#{hotelSearch.find}" render=":searchResults" onevent="controlSpinner"/>
+                  <f:selectItem itemLabel="5" itemValue="5"/>
+                  <f:selectItem itemLabel="10" itemValue="10"/>
+                  <f:selectItem itemLabel="20" itemValue="20"/>
+               </h:selectOneMenu>
+            </fieldset>
+         </h:form>
+      </div>
+
+      <h:panelGroup id="searchResults">
+         <div class="section">
+            <h:outputText id="noHotelsMsg" value="No Hotels Found" rendered="#{empty hotels}"/>
+            <h:form id="hotelSelectionForm">
+               <h:dataTable id="hotels" value="#{hotels}" var="_hotel" rendered="#{not empty hotels}"
+                  columnClasses=",,,,action">
+                  <h:column id="nameCol">
+                     <f:facet id="nameFct" name="header">Hotel name</f:facet>
+                     #{_hotel.name}
+                  </h:column>
+                  <h:column id="addrCol">
+                     <f:facet id="addrFct" name="header">Address</f:facet>
+                     #{_hotel.address}
+                  </h:column>
+                  <h:column id="locCol">
+                     <f:facet id="locFct" name="header">Location</f:facet>
+                     #{_hotel.location}
+                  </h:column> 
+                  <h:column id="zipCol">
+                     <f:facet id="zipFct" name="header">Zip</f:facet>
+                     #{_hotel.zip}
+                  </h:column>
+                  <h:column id="actCol">
+                     <f:facet id="actFct" name="header">Action</f:facet>
+                     <h:commandLink id="view" value="View" action="#{bookingAgent.selectHotel(_hotel)}" style="white-space: nowrap;"/>
+                     <ui:remove><!--
+                     <h:commandButton id="view" value="View" action="#{bookingAgent.selectHotel(_hotel)}"/>
+                     --></ui:remove>
+                  </h:column>
+               </h:dataTable>
+            </h:form>
+            <h:form id="paginationForm">
+               <h:commandButton id="previousResults" value="Previous page" action="#{hotelSearch.previousPage}" rendered="#{hotelSearch.previousPageAvailable}">
+                  <f:ajax render=":searchResults" onevent="controlSpinner"/>
+               </h:commandButton>
+               #{' '}
+               <h:commandButton id="moreResults" value="More results" action="#{hotelSearch.nextPage}" rendered="#{hotelSearch.nextPageAvailable}">
+                  <f:ajax render=":searchResults" onevent="controlSpinner"/>
+               </h:commandButton>
+               <ui:remove><!--
+               <h:commandLink id="previousResults" value="Previous page" action="#{hotelSearch.previousPage}" rendered="#{hotelSearch.previousPageAvailable}">
+                  <f:ajax render=":searchResults" onevent="controlSpinner"/>
+               </h:commandLink>
+               #{' '}
+               <h:commandLink id="moreResults" value="More results" action="#{hotelSearch.nextPage}" rendered="#{hotelSearch.nextPageAvailable}">
+                  <f:ajax render=":searchResults" onevent="controlSpinner"/>
+               </h:commandLink>
+               --></ui:remove>
+            </h:form>
+         </div>
+      </h:panelGroup>
+
+      <div class="section">
+         <h1>Current Hotel Bookings</h1>
+      </div>
+      <div class="section">
+         <h:panelGroup rendered="#{not identity.loggedIn}">
+            You must be logged in to see the list of your hotel bookings.
+         </h:panelGroup>
+         <h:form id="bookings" rendered="#{identity.loggedIn}">
+            <h:outputText value="No bookings found." rendered="#{bookings.size == 0}"/>
+            <h:dataTable id="bookings" value="#{bookings}" var="_booking" rendered="#{bookings.size gt 0}">
+               <h:column id="nameCol">
+                  <f:facet id="nameFct" name="header">Hotel name</f:facet>
+                  #{_booking.hotel.name}
+               </h:column>
+               <h:column id="locCol">
+                  <f:facet id="locFct" name="header">Location</f:facet>
+                  #{_booking.hotel.location}
+               </h:column>
+               <h:column id="inCol">
+                  <f:facet id="inCol" name="header">Check-in date</f:facet>
+                  <h:outputText value="#{_booking.checkinDate}">
+                     <f:convertDateTime type="date" pattern="MM/dd/yyyy"/>
+                  </h:outputText>
+               </h:column>
+               <h:column id="outCol">
+                  <f:facet id="outFct" name="header">Check-out date</f:facet>
+                  <h:outputText value="#{_booking.checkoutDate}">
+                     <f:convertDateTime type="date" pattern="MM/dd/yyyy"/>
+                  </h:outputText>
+               </h:column>
+               <h:column id="idCol">
+                  <f:facet id="idFct" name="header">Confirmation number</f:facet>
+                  #{_booking.id}
+               </h:column>
+               <h:column id="actCol">
+                  <f:facet id="ActFct" name="header">Action</f:facet>
+                  <h:commandLink id="cancel" value="Cancel" action="#{bookingHistory.cancelBooking(_booking)}"/>
+               </h:column>
+            </h:dataTable>
+         </h:form>
+      </div>
+
+   </ui:define>
+
+   <ui:define name="sidebar">
+
+      <h1>State management in Seam</h1>
+      <p>
+         State in Seam is <em>contextual</em>. When you click "Find Hotels", the application
+         retrieves a list of hotels from the database and caches it in the session context. When you
+         navigate to one of the hotel records by clicking the "View Hotel" link, a <em>conversation</em> 
+         begins. The conversation is attached to a particular tab, in a particular browser window. You can
+         navigate to multiple hotels using "open in new tab" or "open in new window" in your web browser.
+         Each window will execute in the context of a different conversation. The application keeps state
+         associated with your hotel booking in the conversation context, which ensures that the concurrent
+         conversations do not interfere with each other.
+      </p>
+
+      <p>
+         <a href="#" onclick="window.open('exp/mainExp.html','exp','width=752,height=500,scrollbars=yes');">
+            How does the search page work?
+         </a>
+      </p>
+
+   </ui:define>
+
+</ui:composition>



More information about the seam-commits mailing list