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

    view vs action attribute (Explanation needed)

    baz

      Hello,
      i was fooled by the following code

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

      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?
      Ciao,
      Carsten

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

          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)
            pmuir

            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)
              baz

              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.
              Ciao,
              Carsten

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

                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.