A view-state allocates a new viewScope when it enters.
			This scope may be referenced within the view-state to assign variables that should live for the duration of the state.
			This scope is useful for manipulating objects over a series of requests from the same view, often Ajax requests.
			A view-state destroys its viewScope when it exits.
		
				Use the var tag to declare a view variable.
				Like a flow variable, any @Autowired references are automatically restored when the view state resumes.
			
<var name="searchCriteria" class="com.mycompany.myapp.hotels.SearchCriteria" />
				Use the on-render tag to assign a variable from an action result before the view renders:
			
<on-render> <evaluate expression="bookingService.findHotels(searchCriteria)" result="viewScope.hotels" /> </on-render>
Objects in view scope are often manipulated over a series of requests from the same view. The following example pages through a search results list. The list is updated in view scope before each render. Asynchronous event handlers modify the current data page, then request re-rendering of the search results fragment.
<view-state id="searchResults"> <on-render> <evaluate expression="bookingService.findHotels(searchCriteria)" result="viewScope.hotels" /> </on-render> <transition on="next"> <evaluate expression="searchCriteria.nextPage()" /> <render fragments="searchResultsFragment" /> </transition> <transition on="previous"> <evaluate expression="searchCriteria.previousPage()" /> <render fragments="searchResultsFragment" /> </transition> </view-state>