Well, the param is usually what you would use in these instances.

1) As for redirecting, you could use a custom navigation handler to
"Add back" your parameters onto a query string, or you could save your
parameters in a conversation (Seam) or session state for the next
call.

2) As for updateActionListener, you could make one HashMap property on
a bean, and set your parameters into that Map so that you only need
one backing bean property (a map). i.e. #{paramBean.params['x']}

Since I haven't used ADF yet (waiting for an official MyFaces
release), I can't comment on 3 or 4.

I usually use #1. My parameters are usually only used to assist the
action or action listeners though, I don't use them for the next page
(I use my backing bean's state to render pages - I have a lot of Seam
conversation state beans).

So to answer your main question, I use JBoss-Seam conversations for
passing values between views. I'm sure there are many other ways that
other people have done it.

-Andrew



On 5/30/06, Cosma Colanicchia <[EMAIL PROTECTED]> wrote:
Hi,

I've been experimenting JSF for my company for some weeks by now. I'd
like to discuss with you about the different ways the framework allows
for passing parameters between views, which is a primary requirements
for CRUD operations. I've tried many, each one with advantages and
drawbacks:

1) Nesting an <f:param> inside the UICommand
Problems: doesn't work with redirects, need to access an
"ExternalContext" to retrieve the value

2) Nesting an <t:updateActionListener> (or a <af:setActionListener>)
updating a backing bean property
Problems: requires to create a property on a backing bean only for
passing the parameter

3) Using the PageFlowScope of ADF Faces
Problems: the target action has to be part of dialog (or to start one)

4) Getting the current row from a custom DataModel (or CollectionModel
for ADF Faces)
Problems: it can be used only when the source of the action is an
UICommand inside a data table

Am I missing something? What do you thing about those methods? Which
one do you prefer? I know that each one is better for some situation,
but I'd like to adopt a consistent scheme across my application, to
simplify maintenance and to be able to recycle some view by defining a
standard interface.

I'd like very much to hear your opinion.

Cosma

Reply via email to