Built with Seam

You can find the full source code for this website in the Seam package in the directory /examples/wiki. It is licensed under the LGPL.

This is to clear up some confusion that was addressed in this forum topic:

refer to as well.

When using @End(beforeRedirect=true), you must be aware of the return type of your method. If you return void and are using a @Factory method, for example, your @Factory method will not be called again unless you configure the appropriate xml snippet in pages.xml.

This is due to the fact that @End(beforeRedirect=true) demotes the LRC to a temporary conversation prior to page redirect (or postback, if you are redirecting to the current JSF/xhtml page) only if you return a String (e.g. /foo.xhtml) or configure properly in pages.xml. If you return void, then your @Factory method will not be executed again because the conversation survived the redirect (i.e. it behaves like @End when you return simply void and no pages.xml config).

This minor (but very important!) detail was not addressed in the Seam ref doc or Seam in Action:

Seam ref doc, 2.1.2.GA:

beforeRedirect — by default, the conversation will not actually be destroyed until after any redirect has occurred. Setting beforeRedirect=true specifies that the conversation should be destroyed at the end of the current request, and that the redirect will be processed in a new temporary conversation context.


If set to true, instructs Seam to terminate the conversation prior to issuing a redirect. The default is to propagate the conversation across the redirect and terminate it once the response is complete. Default: false.

So hopefully this will be addressed by the resolution of the JIRA issue above.