Refreshing Binding Executables (continued)
renderModel: Refreshes just during the Prepare Render phase Note: The key distinction between the Prepare Model phase and the Prepare Render phase is that one comes before JSF’s Invoke Application phase, and one after. Because JSF’s Invoke Application phase is when action listeners fire, if you need your iterator to refresh after these action listeners have performed their processing, you’ll want to set the Refresh property to renderModel.
ifNeeded: Refreshes the iterator only if it has not been refreshed, based on the refresh condition or if no condition is specified, during the Prepare Model phase
prepareModelIfNeeded: Same as ifNeeded, during the Prepare Model phase
renderModelIfNeeded: Same as ifNeeded, during the Render Model phase
RefreshAfter: Specify that one executable refreshes after another (you also then need to set the RefreshAfter property in addition to the Refresh property); used to handle dependencies between executables.
never (valid for iterator bindings only): Refreshes only when your own code calls getRowSetIterator() on the iterator binding
always (valid for iterator bindings only): Iterator always refreshed during both the Prepare Model and Prepare Render phases
Note: Refreshing an iterator binding does not forcibly reexecute its query each time. The first time the view object instance’s row set iterator is accessed during a particular user’s unit of work, this implicitly executes the view object’s query if it was not already executed. Subsequent refreshing of the iterator binding related to that view object instance on page requests that are part of the same logical unit of work only accesses the row set iterator again, but does not forcibly reexecute the query. When you want to reexecute the query to refresh its data, use the Execute or ExecuteWithParams built-in operation, or programmatically call the executeQuery() method on the iterator binding.