I guess I'm confused because in a vanilla JSF page, if a command button calls an Action which updates the backing bean, then the Components referencing that updated attribute will be refreshed with the new value, even if the mode is immediate (using the current version of the RI).
In this case I used immediate so that I wouldn't fire the Struts Action associated with the <s:form> I just wanted to update the "Backing Bean" (which in this case is the Form bean), re-render the page and see the updated value. So I'm still a little puzzled by the difference in behavior when immediate="true" is used in both cases?


Regards

Duncan Mills


Craig McClanahan wrote:

On Wed, 13 Oct 2004 16:06:07 +0100, Duncan Mills
<[EMAIL PROTECTED]> wrote:


I've been experimenting with the Struts + Faces integration library and
have hit one puzzling behavior using a <h:commandButton>.executing an
"action" in a form-bean

If I have a page with a StrutsFaces form <s:form action="whatever"> and
that's associated with a Form Bean "foo" (session scope)
So I can have a text field bound to an element of the foo actionForm
<h:inputText id="name" value="#{foo.name}"/>
This works as expected.
If I then have a commandButton thus:
<h:commandButton id="setDefault" action="#{foo.setDefault}" value="Set
Default value" immediate="true"/>
where setDefault() is changing the value of the name attribute in the
foo bean

The method setDefault() in the foo ActionForm class executes in response
to the button, but the page does not refresh with the new value of
foo.name.  In debug the getter in the Form Bean is never called .

If I do the same thing in a vanilla faces page with a "conventional"
backing bean defined in my faces-config the value of name would refresh .

So is there some restriction here or difference in lifecycle with
respect to Form-Bean, or should we not be overloading ActionForms with
commandButton actions?




The key to understanding this is the fact that you declared immediate="true" on your command button. That tells JSF this is just a user interface action (for example, you'd use it on the "next page" or "previous page" buttons for a scrolling table), instead of a form submit action. Remove immediate="true" and the library will treat this like a form submit, which will fire the corresponding Struts action.



--

Regards

Duncan Mills




Craig

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to