BTW, a credit-where-it's-due:  I should be clear that "my idea's
always been..." completely omits that this idea is very much
due to John Fallows!

-- Adam


On 1/27/06, Adam Winer <[EMAIL PROTECTED]> wrote:
> My idea's always been something like an optional
> NavigationHandler interface:
>
> public interface BookmarkableNavigationHandler
> {
>   /**
>    * Return an URL if the MethodExpression can be handled purely
>    * as a GET request, or null if it cannot be done.
>    */
>   public String getUrl(FacesContext, MethodExpression)
> }
>
> This would enable a NavigationHandler to turn constant MethodExpressions,
> like action="foo", into simple GET URLs.  (The optional interface idea
> does run into serious problems with any decorating NavigationHandlers;
> ADF Faces uses a "Service" API kinda like the old MS OLE IUnknown
> QueryInterface approach, if you've had the misfortune of developing
> any OLE code in your career).
>
> It'd also allow a more sophisticated NavigationHandler to provide metadata
> that says that for a specific page, a more complicated action:
>   action="#{row.showRow}"
> ... could perhaps be handled as a GET too:
>
>  <from-view-id>myTable.jspx</from-view-id>
>    <action>#{row.showRow}
>    <get-url>/faces/showRow.jspx?id=#{row.id}</get-url>
>  </from-view-id>
>
> ... without any change in the page semantics.  This sort of approach
> also lets an application's architect change up requirements, like
> perhaps deciding that specific
> app really does need to use postback for all requests, for funkier 
> requirements
> like saving temporarily entered results.  And you could do so without
> forcing users to change back from outputLink to commandLink.
>
> -- Adam
>
> On 1/27/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> > I don't think the problem should be solved.
> >
> > No one says that all of your commandLinks need to invoke actions-- you can 
> > render normal links.  With invoking actions, you posting transitional 
> > behavior, with gets, there is not transitional behavior to retain.  When 
> > you want to bookmark things, that designates the URI as repeatable, which 
> > is a far separation from the intentions of JSF's action/stateful 
> > capabilities.
> >
> > Nothing is stopping someone from using JSF to render a table that prints 
> > out normal links like: <a href="/person.jsf?id=533">Click</a> and use 
> > RESTful principles for actually rendering that page based on Ed's/EG's 1) 
> > ManagedBean Create/Destroy annotations and 2) Attaching listeners to the 
> > UIViewRoot
> >
> > I (personally) think this issue shouldn't be solved since it breaks POST 
> > vs. GET and would assert transitional behavior where it shouldn't be.
> >
> > -- Jacob
> >
> > >
> > >Gruß Gott,
> > >
> > >>>>>> On Fri, 27 Jan 2006 10:43:23 +0100, Werner Punz <[EMAIL PROTECTED]> 
> > >>>>>> said:
> > >
> > >WP> +1000 for a get....
> > >WP> Martin Marinschek schrieb:
> > >
> > >MM> I'm having ideas again. Must come from too much work with JSF ;)
> > >MM>
> > >MM> My idea:
> > >MM>
> > >MM> Bookmarking is a problem with JSF, right? Except you use h:outputLink,
> > >MM> but then there's this slight problem with not being in the action
> > >MM> system anymore ;)
> > >MM>
> > >MM> Now, what do I want to be able to see in my history or to bookmark? I
> > >MM> want to bookmark simple pages, where state is not so important at all.
> > >MM> Or only a small portion of the state is important...
> > >MM>
> > >MM> Those simple pages I usually refer to with an "action" attribute that
> > >MM> is put (as a string) directly on the <h:commandLink /> or
> > >MM> <h:commandButton/> tag, right?
> > >MM>
> > >MM> Why not render out this action attribute as a parameter to the URL of
> > >MM> the link optionally, not submitting a form and loosing all JSF state,
> > >MM> but having a bookmarkable link?
> > >MM>
> > >MM> The developer can decide then:
> > >MM> - do I need this link to be bookmarked
> > >MM> - do I want this link to  use the plain old JSF posting system with
> > >MM> state-saving.
> > >
> > >Right, I've thought about this problem for the Sun impl, and we even
> > >have an issue on our issue tracker for it:
> > >
> > >https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=72
> > >
> > >MM> Enhancement: we could additionally render out params to this link as -
> > >MM> yes, right, params to the URL. So people can optionally build there
> > >MM> web-apps just like they were used to when JSF wasn't around.
> > >
> > >MM> Good idea - bad idea - better idea ;) ?
> > >
> > >But I can't see how to do it in a general way while supporting both
> > >client and server side state saving modes.  This is due, of course,
> > >to the restriction on size of the GET request.
> > >
> > >Another problem, when using the server side mode, is what to do when the
> > >session expires.
> > >
> > >Any solution that doesn't deal with these cases is a less than full
> > >solution.
> > >
> > >I was thinking of decorating the state manager to somehow write out
> > >bookmarked pages to the filesystem so they can survive session
> > >expiration, but then, what do you do about failover?
> > >
> > >Ed
> > >
> > >--
> > >| [EMAIL PROTECTED]  | {home: 407 869 9587, office: 408 884 9519 OR x31640}
> > >| homepage:         | http://purl.oclc.org/NET/edburns/
> > >| aim: edburns0sunw | iim: [EMAIL PROTECTED]
> > >
> >
>

Reply via email to