Unless I misunderstood--

I've been saying you wouldn't want this though, because now your logic is bound 
to some assumption of previous state-- where did the id come from, which is bad 
for GETs.

You could pass the id, using EL evaluation of to-view-id, allowing a (separate) 
view decide how and where to map that #{param.id} into the succeeding request.

-- Jacob

>
>And once you'd solved this what you'd *really* want on top of this is
>something in the nav handler that lets you then also deal with the
>incoming "id" query attribute that feeds naturally back into JSF component
>state land instead of forcing you to hardcode logic to implement this.
>(Seam Conversations and ADF processScope come to mind.)
>
>-- Adam
>
>
>On 1/27/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
>> That's an interesting solution-- with webwork, it allows EL (OGNL) 
>evaluation of URIs, so across the board, we could do something like:
>>
>> <navigation-rule>
>>   <from-view-id>/foo.jsp</from-view-id>
>>   <navigation-case>
>>     <from-outcome>success</from-outcome>
>>     <redirect/>
>>     <to-view-id>/user.jsf?id=#{user.id}</to-view-id>
>>   </navigation-case>
>> </navigation-rule>
>>
>> Where we could now say that the resulting view-id is evaluated as an 
>expression based on the current state of the FacesContext.
>>
>> -- Jacob
>>
>> >
>> >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