4 Replies Latest reply on Feb 8, 2007 2:07 AM by None None

    view vs action attribute (Explanation needed)

    Carsten Hoehne Master

      i was fooled by the following code

       <s:link value="Edit User" action="/editUser.xhtml" >
       <f:param value="frese" name="myUserId" />

      The editUser page is displayed, but the request param was not set. After some time, i realize that the attribute action has to be replaced with view.
      And voila, all is well.
      Can one explain what the difference between the two is?

        • 1. Re: view vs action attribute (Explanation needed)
          None None Master

          Action can be a call to a method in a session bean. If that method returns a string, that string is used as the view identifier. If that method has no return (void) or it returns null, then the view specified by view="" is used as the view. If the action returns null AND there is no view="", then the same page is just redisplayed.

          So, it is a bit confusing, but here's how I use it:

          Most of my session beans are SFSBs, conversation scoped. They have a @Begin(join=true) method. I make this @Begin method return void, and when I want to navigate to one of them, I use that @Begin method as the action and then specify view="/foo". That way I make sure there is an active conversation when the /foo page is first rendered, so I don't get LazyInitializationErrors. I'm not enough of a Seam pro to know if this is the absolutely right way to do this but it certainly does work.

          • 2. Re: view vs action attribute (Explanation needed)
            Pete Muir Master

            view takes a view-id to navigate to. action takes an action method (el) or a string which specifies a logical (navigation) outcome (either JSF faces-config.xml or pages.xml).

            • 3. Re: view vs action attribute (Explanation needed)
              Carsten Hoehne Master

              Thanks to all of you.
              What is your opinion with my example code?
              Should it even render /editUser.xhtml?

              With your explanation, i think NO
              But it does.

              • 4. Re: view vs action attribute (Explanation needed)
                None None Master

                Of course it should render editUser.xhtml in your example. That is the action you have specified. In most cases the action is a snip of EL that gets called, and the string that results from that call is used as the next view. In your case, you have used a static string instead of EL. It's doing what we expect it would do.