Sorry -- I think your confusion is my fault. You should use immediate="true" on a Cancel button, to bypass the Process Validations and Update Model Values phases. You should use immediate="false" on a Submit button that is intended to actually perform the requested transaction (i.e. save the data to the database, or whatever).
In the Struts-Faces integration library, only commands of the latter type (immediate="false") are passed on to the corresponding Struts action. Craig On Wed, 13 Oct 2004 22:23:00 +0100, Duncan Mills <[EMAIL PROTECTED]> wrote: > 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] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]