We should open a JIRA issue to go through MyFaces and fix this
wherever necessary.

thanks!

regards,

Martin

On 6/14/07, Scott O'Bryan <[EMAIL PROTECTED]> wrote:
That's the rule of thumb.  Yes.

Martin Marinschek wrote:
> May I try to put this shorter -
>
> actionUrl --> you'll see all portlets output, except you link to an
> external page,
>
> resourceUrl --> you'll see only your output always
>
> is correct?
>
> regards,
>
> Martin
>
> On 6/14/07, Scott O'Bryan <[EMAIL PROTECTED]> wrote:
>> Adam,
>>
>> Your right that they should be the same.  Unfortunatly they are not.
>> It's one of the many things that's wrong about Portals in the JSF spec
>> and it comes with dabbling in theory rather then actually trying to get
>> something valuable (like an complete and complex renderkit) working with
>> a portal.  My guess is they had a series of "Hello World" apps that they
>> tested with the RI taglib in a portal.  As a result, the IBM guys didn't
>> do a very good job on considering all the implications.  That's one of
>> the reasons JSR-301 started with a renderkit like Trinidad as one of
>> it's primary test cases.
>>
>> The reason that Martain believe these should be resouce urls is that the
>> PortletResponse.encodeResourceUrl will correctly resolve "external"
>> links.  This means that passing in http://www.google.com will return
>> http://www.google.com.  Things in the portal web application will return
>> urls and links to something inside the portal application.  The problem
>> is that once this resouce url gets set on the outside page, you have the
>> potential of being out-of-context and you will most definatly switch
>> from running in a portal engine to running in a servlet engine.  Also,
>> if the link your encoding is to a FacesResource, the bridge cannot be
>> referenced by the goLink because the bridge is a portlet which needs to
>> be referenced by a portlet (Action) url.
>>
>> That's the reason that in 301, we take this encoding complexity into the
>> bridge and the symantic becomes much simpler.  The rule of thumb for
>> encoding (and you'll be right say 90% of the time) is that if it's
>> appropriate for the portal to add it's own markup (including other
>> portlets) to your returned content then it should be an action url.
>> Otherwise it should be a resource url.  There are certainly exceptions
>> to this (unfortunately) but the rule of thumb generally works.
>>
>> Things that you would "think" are the same (such as goLinks and Iframes)
>> you'll discover are NOT the same if you apply that rule of thumb.  It's
>> appropriate to have portal content in the base page referred to by the
>> goLink.  It is NOT appropriate for an iframe.
>>
>> Scott
>>
>>
>>
>> Adam Winer wrote:
>> > It sounds like you're saying that a goLink should
>> > be an action, but an iframe should be a resource?
>> > I've always assumed the two should be identical.
>> >
>> > The Javadoc for ExternalContext is incredibly unhelpful
>> > here.  I wish the IBM EG member who contributed that
>> > API had made this clear back then!  Especially confusing
>> > is the text:
>> >
>> > Portlet: This must be the value returned by the
>> > javax.portlet.PortletResponse method encodeURL(url).
>> >
>> > ... included on *both* encodeActionURL() and
>> > encodeResourceURL().  This makes it sound as though
>> > the two are required to have exactly the same behavior!?!
>> >
>> > -- Adam
>> >
>> >
>> >
>> > On 6/14/07, Scott O'Bryan <[EMAIL PROTECTED]> wrote:
>> >> I agree with Adam.  The distinction is NOT post vs. get, rather the
>> >> distinction is something that's a piece of a page v.s something
>> that's a
>> >> complete page.
>> >>
>> >> So what's the difference.  The difference is that the Portal sees
>> action
>> >> urls as needing to be posted in context of the main page.  On an
>> action
>> >> url, the portal will process all other portlets as well and return a
>> >> page with markup generated from the portal (not directly from the
>> >> portlet).  With resource urls, the portal doesn't muck with anything.
>> >>
>> >> Now Faces somewhat confuses this issue as there is an encode for both
>> >> the action and the resource URL.  I can tell you that, in general,
>> >> JSR-168 would expect you to encode goLinks as stuff as "action" urls.
>> >> The encode action url method in 301 is smart enough to figure out
>> >> whether the resource your trying to reference is a Faces viewId or
>> some
>> >> other external page.  If it's an external url the encoded url will
>> hit
>> >> that resource directly.  If it's a faces page, the bridge will
>> generate
>> >> an actionUrl that will make a request to the new view id through the
>> >> bridge.  Without encoding this as an action url though, you would
>> loose
>> >> all of your portal context.
>> >>
>> >> There are some instances where you may want to use a resource url
>> >> (iframes and PPR are a perfect example), but usually links should be
>> >> action urls.
>> >>
>> >> Scott
>> >>
>> >> Adam Winer wrote:
>> >> > I don't see why - what is the difference between
>> >> > a link to a page and an iframe pointing at that page?
>> >> > It's exactly the same HTTP request.  If <a href>
>> >> > should use getActionUrl(), then iframe and frame
>> >> > srcs also should.
>> >> >
>> >> > -- Adam
>> >> >
>> >> >
>> >> > On 6/13/07, Jesse Alexander (KSFD 121)
>> >> > <[EMAIL PROTECTED]> wrote:
>> >> >> Adam mentions iframe/frame-src attributes... I guess those would
>> >> >> qualify as resource-url's ?
>> >> >>
>> >> >> regards
>> >> >> Alexander
>> >> >>
>> >> >> -----Original Message-----
>> >> >> From: Martin Marinschek [mailto:[EMAIL PROTECTED]
>> >> >> Sent: Thursday, June 14, 2007 6:25 AM
>> >> >> To: MyFaces Development
>> >> >> Subject: Re: Portlets & <a href="">: resource or action URL?
>> >> >>
>> >> >> Definitely encodeActionUrl, yes, from what I read in the portlet
>> >> spec.
>> >> >> Obviously the original link implementors thought the
>> distinction was
>> >> >> about form post versus get - but the distinction is about query
>> >> >> links/form submissions versus inclusion of resources in the page.
>> >> >>
>> >> >> regards,
>> >> >>
>> >> >> Martin
>> >> >>
>> >> >> On 6/14/07, Adam Winer <[EMAIL PROTECTED]> wrote:
>> >> >> > Simple (I imagine) question:
>> >> >> >
>> >> >> > For a link's "href", should we be calling encodeResourceURL()
>> >> >> > or encodeActionURL()?
>> >> >> >
>> >> >> > I've always assumed these are action URLs.  I see other
>> >> >> > code out there (MyFaces outputLink, for example) that
>> >> >> > considers these resource URLs.
>> >> >> >
>> >> >> > (Whatever answer we arrive at should apply equally to
>> >> >> > iframe and frame "src" attributes, I believe).
>> >> >> >
>> >> >> > -- Adam
>> >> >> >
>> >> >>
>> >> >>
>> >> >> --
>> >> >>
>> >> >> http://www.irian.at
>> >> >>
>> >> >> Your JSF powerhouse -
>> >> >> JSF Consulting, Development and
>> >> >> Courses in English and German
>> >> >>
>> >> >> Professional Support for Apache MyFaces
>> >> >>
>> >> >
>> >>
>> >>
>> >
>>
>>
>
>




--

http://www.irian.at

Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces

Reply via email to